여기서 한 분야의 전문가가 되기에 필요한 순서대로 기술들이 나열되어 있다.
분명히 한 분야에 일정 수준이 되기 위해서 필요한 순서대로 다 나열되어 있는 것들은 맞다.
그렇다면 저 기술만 있으면 최고의 개발자가 되는 것일까?
알고리즘, 자료구조, 네트워크, 운영체제, 어셈블리... 같은 알면 도움이 되지만, 없어도 일정 수준이 되는 것이 불가능 하지는 않은 그런 부분들이 많이 있다.
또 디자인 패턴, 개발 시에 폴더 구조나 파일명, 변수명과 같은 클린 코드를 위한 수많은 원칙들과, 다양한 시도, 방법에 대한 이해도 필요할 것이다.
사람들과 소통하는 능력 역시 분명히 어마어마하게 중요한 능력이 될 것이다.
이를 위해서 자기의 분야만이 아닌, 프론트엔드라면 백엔드를 알 필요가 있고, 디자인을 알 필요가 있고, 기획 단계를 어느정도 알 필요가 있다. 거기서 발생할 수 있는 다양한 문제를 자기가 스스로 해결할 수는 없더라도, 최소한 다른 사람에게 어떻게 부탁해야 하는지는 알 필요가 있다.
회사에 인턴쉽을 하면서
1. 다른 사람들과 소통하는 방법, 전체적인 프로세스, 문제 해결을 위한 프로세스와 소통 방법을 배우고 있다.
기획(이 기획에서 커다란 하자가 생길 수 있는지, 너무 터무니 없는 기능은 아닌지)
디자인(반응형을 고려했을 때 생길 수 있는 문제, 브라우저별, 기기별 차이점, 이 디자인이 왜 힘든 것인지, 어떻게 해결할 수 있는 것인지에 대한 질문과 답변을 해줄 수 있는 소통 능력),
개발(실제 개발 단계에서 기능들, 새로운 라이브러리 도입을 어떻게 하는지, 어떤 방식으로 다양한 기능들을 사용하는지에 대한 방법들),
qa(qa단계나, 배포 과정에서 생기는 놓치기 쉬운 이슈들을 파악하고, 이를 미리부터 잡아가는 체크리스트를 만드는 것과 같은 방식으로 다 만들기 전에 미리 해결하는 방식을 사용해야 한다.),
마케팅(마케팅 과정에서 어떤 식으로 마케팅을 진행하는지, 카드뉴스, 카카오톡, 페이스북, 인스타, 트위터 등 공유 문구 같은 것들) 순으로 흘러가는 커다란 흐름을 파악하고, 이 흐름속에서 어떤 문제들이 터질 수 있는지, 그 문제들에서 어떤 도움을 줄 수 있는지에 대해 고민을 해볼 수 있는 기회를 얻을 수 있게 되었다. 이는 개발자로서의 직접적인 역량과는 무관하지만, 크게 본다면 좋은 개발자가 되기에 필수적인 영역이라고 생각한다.
이게 단순한 todolist만으로 나오는 코드리뷰로 얻게 된 다양한 생각과, 조언들이 된다.
추가적인 성장의 방향
지금 코드리뷰로 얻게된 구조적인 설계를 어느정도 이상 만들고 난다면, 어떤 방향으로 성장하게 될까?
다양한 디자인 패턴에 대한 학습과 고민
우리가 가지고 있는 라이브러리를 뜯어보는 과정들, react에 필수적인 라이브러리였던 redux, styled-components, 같은 것들
효율적이고, 직관적인 데이터 처리를 위한 깔끔한 redux 내부 구조 같은 부분들에 대한 설계
다양한 외부 시스템들에 대한 탐구 ex) gtm같은 것들