근황
마지막 글 이후에 정말 많은 일이 있었습니다. 저는 현재 토스의 디자인플랫폼 - 인터랙션 팀에서 프론트엔드 어시스턴트로 일하고 있습니다, (인터랙션팀 짱) 그리고 그 사이에 크래프톤 최종면접에서 탈락했습니다.
이쯤에서 글 제목과 연결해서 알 수 있겠지만, 저는 개인적으로 크래프톤 최종면접에서 떨어진 이유가 CS 때문이라고 생각합니다. 단순히 CS 를 몰라서가 아니라 CS를 대하는 태도에서 비롯된 탈락이 아닐까 싶어요.
면접당시. 그리고 그 이전에도 제게 CS에 대한 질문이 들어오면 항상 같은 답변을 했었어요. ‘ 중요한 것은 알고 공부도 했지만, 필드에서 당장 하나의 컴포넌트를 만들 때 CS때문에 작업을 진행하지 못하는 치명적인 케이스를 접해본 적은 없다. ‘
교육이란 무엇일까
지금 돌아보니 정말 제 마음이 투명하게 녹아든 답변이 아닐까 싶어요. CS가 중요하단건 정말 많이 들었고 실제로 운영체제나 네트워크 정보처리기사 시험에 나올법 한 내용들에 대해선 많이 공부하기도 했구요.
하지만 그 지식을 활용 해 보았는가에 대해서는 항상 의문점을 가지고 있었어요. 저에겐 운영체제나 네트워크보다도 리액트, Tanstack, Zustand 공식문서가 훨씬 더 직접적이고 큰 도움이 되었거든요.
하지만 최근들어 그 생각에 조금씩 변화가 생기기 시작했어요. CS지식을 넘어서 교육이라는 활동이 의미하는 바에 대해서 한번 생각해 보았습니다.
여러분이 생각하는 교육이란 무엇인가요? 지식의 전달? 고리타분한 이론의 세습? 앞의 예시들은 이전에 제가 생각했던 교육의 의미였습니다. 하지만 제가 다시금 생각해 본 교육의 의미는 ‘실수를 반복하지 않기 위한 예방접종’ 이 아닐까 싶습니다.
실수를 반복하지 않기 위한 예방접종
저는 기계공학을 전공했어요. 4대 역학이라고 불리는 고체역학,동역학,열역학,유체역학 그리고 이것들에서 파생되는 다양한 이론들과 수식들. 이 모든것을 이해하고 외워서 사용하는건 정말 어려운 일이었어요. 반대로 어느순간 고등학교 때 배웠던 미적분이 왜 필요한 것인지 알 수 있던 시간이기도 해요.
제가 만약 고등학교 때 미적분을 배우지 않았다면 역학계산은 해내지 못했을 것 같아요. 그리고 만약 함수라는 개념을 중학교때 배우지 않았다면 미적분을 이해해내지 못했겠죠.
이런 교육의 커리큘럼은 이런 시행착오를 앞서 경험하신 분들이 만들어주신 결과입니다. 아무런 기초지식이 없었다면 ‘철근-콘크리트로 이뤄진 기둥이 몇Kg 의 하중을 버틸 수 있는가’ 에 대한 정확한 결과값을 알기 위해서는 정말 많은 시행착오가 필요했을 것 같아요. 하지만 이 모든것을 지금은 적절한 교육과정을 통해 빠르고 정확한 값을 알 수 있어요.
비전공자에게 CS 지식이란
누군가 실시간 통신을 해결하기 위해 고민끝에 소켓통신을 만들었을 것이고, 소켓통신을 활용하기 어려운 환경에서의 실시간 통신을 해결하기 위해 마찬가지로 긴 고민끝에 롱폴링과 같은 방법을 찾아냈겠죠.
같은 고민을 두 번 하지 않도록, 다양한 고민끝에 최적의 결과물을 정제해서 교육 커리큘럼으로 벼려낸 것이 CS가 아닐까 싶어요. 이런 관점에서 다시 제 답변을 돌아보자면 참 오만한 답변이었던 것 같아요.
최근의 관심사
이런 생각을 하게 된 배경은 최근 들어서 다양한 아키텍처 및 디자인패턴에 관심을 갖게 되었어요.
그 결과물 중 하나가 프론트엔드와 소프트웨어 아키텍처 라는 글이기도 하구요.
같은 컴포넌트를 만들더라도 하나의 효율적인 규격이 있다면 만드는 사람도, 읽는 사람도 효율적으로 일할 수 있을것이라는 생각이 들었거든요.
아니나 다를까 이런 고민을 이미 한참 오래전부터 대단하신 분들이 해 오셨더라구요. 저는 그 고민의 과실들을 골라서 수확하기만 하면 되는 역할이었어요.
조만간 디자인패턴에 대해서 간단하게 글을 작성해볼까 해요. 혹시나 이 글을 읽고 계시다면, 부족하겠지만 초보 개발자의 고민을 함께 읽어주시면 감사하겠습니다.