개발보다 세계관이 더 중요했다

온라인 강의 회고

설명할 수 없으면 아는 게 아니었다

온라인 강의를 찍으면서 알게 된 것: 코드를 짤 줄 아는 것과 설명할 줄 아는 건 다른 문제였어요.

시작은 깃허브 레포지토리 하나였어요

제가 온라인 강의를 찍게 된 건 깃허브에 올려둔 '마리오 개발자의 삶' 이라는 3D 인터랙션 페이지 덕분이에요.
캐릭터가 맵을 돌아다니며 개발자의 고충을 만나는 3D 쇼룸 페이지
캐릭터가 맵을 돌아다니며 개발자의 고충을 만나는 3D 쇼룸 페이지
캐릭터가 맵을 돌아다니면서 버섯을 모으고, 그 과정에서 개발자가 겪는 고충을 하나씩 만나는 쇼룸 페이지예요. 거창한 서비스라기보다는 제가 좋아하는 걸 제 방식대로 만든 작은 프로젝트였어요.
솔직히 처음 연락을 받았을 때 신기했어요. 저는 SNS를 거의 안 하고, 이 프로젝트도 따로 홍보한 적 없이 레포지토리에만 올려두었거든요. 코드가 알아서 사람을 데려온 셈이죠. 그때 "결과물은 어딘가에 올려두기만 해도 누군가는 본다"는 걸 처음 느꼈어요.

인터랙션을 많이 하게 된 이유

제가 인터랙션 프로젝트를 많이 하게 된 건 더즈인터랙티브라는 회사를 다녔기 때문이에요. 이곳에서 여러 대기업의 프로모션·브랜드 인터랙션 프로젝트를 했어요.
그런데 사실 3D프로젝트라고 해서 전부 three.js로 만든 건 아니었어요. 그런데 패스트캠퍼스에서는 three.js로 제 프로젝트와 비슷한 결과물을 만드는 강의를 원했어요. 그래서 커리큘럼을 이렇게 잡았어요.
  • 자동차가 3D 맵을 돌아다니는 인터랙션 페이지
  • 날씨 API를 활용해 실시간 날씨를 3D로 보여주는 페이지
notion image
 
프로모션용 인터랙티브 웹 페이지
프로모션용 인터랙티브 웹 페이지

회사와 강의를 같이 한다는 것

강의 준비는 생각보다 훨씬 큰 일이었어요. 예제를 만들고, 커리큘럼을 짜고, 녹화하고, 다시 찍고. 퇴근 후와 주말을 다 쏟아도 모자랐어요.
결국 강의를 찍던 중간에 회사를 그만뒀어요. 둘 다 적당히 하는 것보다 하나라도 제대로 끝내는 게 맞다고 판단했어요. 지금 돌아보면 쉬운 결정은 아니었지만 후회하지는 않아요.

설명할 수 없으면 아는 게 아니었다

강의를 찍으면서 가장 크게 부딪힌 벽은 기술이 아니라 이었어요.
혼자 개발할 때는 "이렇게 하면 되더라"로 충분했어요. 동작하면 넘어가면 됐으니까요. 그런데 강의는 달라요. 제가 말로 설명하지 못하면 듣는 사람은 알 방법이 없잖아요.
예를 들면 이런 식이에요.
혼자 할 때
강의에서 필요했던 설명
"카메라가 캐릭터를 부드럽게 따라가게 했어요"
"매 프레임 카메라 위치를 목표 위치 쪽으로 보간(lerp)해서 급격한 이동 없이 따라가게 했어요"
"클릭한 곳으로 이동해요"
"Raycaster로 마우스 좌표에서 광선을 쏴서 바닥 메시와의 교차점을 구하고, 그 좌표를 목표 지점으로 잡았어요"
"그냥 이 값 넣으니까 되더라고요"
"왜 이 값이어야 하는지, 바꾸면 어떻게 달라지는지"
감으로 쓰던 코드를 하나씩 용어로 풀어내다 보니, 제가 안다고 생각했던 것 중 상당수는 사실 '써본 적 있는 것' 이었다는 걸 알게 됐어요. Scene, Camera, Renderer 같은 기본 개념부터 좌표계, 조명, 그림자까지 공식 문서를 다시 읽으면서 제 언어로 정리해야 했어요.
그 과정이 힘들긴 했지만, 강의가 끝났을 때 가장 많이 배운 사람은 수강생이 아니라 저였던 것 같아요.