개인적인 방향성

송은우·2022년 6월 12일
0

방향성

목록 보기
1/1

개발자로 성장하려면 필요한 부분이 어떤 것들이 있을까?

https://roadmap.sh/

한 분야에 있어서 필요한 기술

여기서 한 분야의 전문가가 되기에 필요한 순서대로 기술들이 나열되어 있다.
분명히 한 분야에 일정 수준이 되기 위해서 필요한 순서대로 다 나열되어 있는 것들은 맞다.
그렇다면 저 기술만 있으면 최고의 개발자가 되는 것일까?

우리가 놓치기 쉬운 부분들

가장 기초적인 CS 지식들

알고리즘, 자료구조, 네트워크, 운영체제, 어셈블리... 같은 알면 도움이 되지만, 없어도 일정 수준이 되는 것이 불가능 하지는 않은 그런 부분들이 많이 있다.

구조나, 방법들 역시 알아야 한다.

또 디자인 패턴, 개발 시에 폴더 구조나 파일명, 변수명과 같은 클린 코드를 위한 수많은 원칙들과, 다양한 시도, 방법에 대한 이해도 필요할 것이다.

사람들과 소통하는 능력 역시 분명히 어마어마하게 중요한 능력이 될 것이다.
이를 위해서 자기의 분야만이 아닌, 프론트엔드라면 백엔드를 알 필요가 있고, 디자인을 알 필요가 있고, 기획 단계를 어느정도 알 필요가 있다. 거기서 발생할 수 있는 다양한 문제를 자기가 스스로 해결할 수는 없더라도, 최소한 다른 사람에게 어떻게 부탁해야 하는지는 알 필요가 있다.

현재 얻고 있는 부분

회사에 인턴쉽을 하면서
1. 다른 사람들과 소통하는 방법, 전체적인 프로세스, 문제 해결을 위한 프로세스와 소통 방법을 배우고 있다.
기획(이 기획에서 커다란 하자가 생길 수 있는지, 너무 터무니 없는 기능은 아닌지)
디자인(반응형을 고려했을 때 생길 수 있는 문제, 브라우저별, 기기별 차이점, 이 디자인이 왜 힘든 것인지, 어떻게 해결할 수 있는 것인지에 대한 질문과 답변을 해줄 수 있는 소통 능력),
개발(실제 개발 단계에서 기능들, 새로운 라이브러리 도입을 어떻게 하는지, 어떤 방식으로 다양한 기능들을 사용하는지에 대한 방법들),
qa(qa단계나, 배포 과정에서 생기는 놓치기 쉬운 이슈들을 파악하고, 이를 미리부터 잡아가는 체크리스트를 만드는 것과 같은 방식으로 다 만들기 전에 미리 해결하는 방식을 사용해야 한다.),
마케팅(마케팅 과정에서 어떤 식으로 마케팅을 진행하는지, 카드뉴스, 카카오톡, 페이스북, 인스타, 트위터 등 공유 문구 같은 것들) 순으로 흘러가는 커다란 흐름을 파악하고, 이 흐름속에서 어떤 문제들이 터질 수 있는지, 그 문제들에서 어떤 도움을 줄 수 있는지에 대해 고민을 해볼 수 있는 기회를 얻을 수 있게 되었다. 이는 개발자로서의 직접적인 역량과는 무관하지만, 크게 본다면 좋은 개발자가 되기에 필수적인 영역이라고 생각한다.

  1. 개인 과제를 통한 성장
    간단한 todolist라고 하는 과제만으로도 발전할 방법이 무궁무진하다는 것을 알 수 있는 소중한 시간이기도 했다.
    좋은 코드리뷰라는 것들에 대해서도 알아볼 수 있는 좋은 기회기도 했다. 나쁜 코드 리뷰는 단순하게 이 기능은 왜 넣었는지, 물어보고, 아 그렇구나 하고 넘어가는 되게 성의 없는 코드리뷰가 되고, 좋은 코드리뷰는 이 기능을 설계할 때, 왜 이런 구조로 설계를 하게 되었는지, 왜 이런 변수명을 썼는지와 같은 다음에도 다시 재사용 할 수 있을만한 그런 다양한 통찰을 제공하는 하나의 성장할 수 있는 기회라고 생각할만한 것이 좋지 않을까 하는 부분이다.
    예를 들어보면 좋은 설계를 할 때는 구조적으로 src, type, public에 해당하는 것은 가장 루트 경로에,
    type에는 진짜 하나의 객체가 가지고 있어야 하는 값만을 담고 있어야 하고,
    src에는 core와, common, 기능에 해당하는 도메인별로 폴더 구조를 나누고, nextjs같은 것이라면 pages같은 것이 들어온다.
    core는 없으면 개발 못 해~ 라고 외칠 수 있을만큼 어떤 상황에도 이것이 사용되는 하나의 정의가 된다고 생각하면 편하다. 는 그런 자기만의 분명한 원칙을 가지고 나누게 되고
    common은 모든 기능에서 공통적으로 사용되는 파지만 core만큼 없으면 개발 못해 라고 하는 그런 영역은 아닌 공통의 관심사를 전부 모아둔 것이다.
    기능에는 각 기능에만 특수적으로 들어가는 기능 specific한 그런 것들이 들어간다고 생각하면 된다.
    각 기능별로는 hooks, constants, components, styles같은 구별할 수 있는 확실한 관심사를 분리함으로써 훨씬 깔끔한 폴더 구조로 이를 만들게 된다면 유지보수의 관점에서 훨씬 편해지는 하나의 코드 덩어리가 아닌 기능별로 분리되어있는 코드가 될 수 있다.

이게 단순한 todolist만으로 나오는 코드리뷰로 얻게 된 다양한 생각과, 조언들이 된다.

  1. 추가적인 성장의 방향
    지금 코드리뷰로 얻게된 구조적인 설계를 어느정도 이상 만들고 난다면, 어떤 방향으로 성장하게 될까?

  2. 다양한 디자인 패턴에 대한 학습과 고민

  3. 우리가 가지고 있는 라이브러리를 뜯어보는 과정들, react에 필수적인 라이브러리였던 redux, styled-components, 같은 것들

  4. 효율적이고, 직관적인 데이터 처리를 위한 깔끔한 redux 내부 구조 같은 부분들에 대한 설계

  5. 다양한 외부 시스템들에 대한 탐구 ex) gtm같은 것들

profile
학생의 마음가짐으로 최선을 다하자

0개의 댓글