All Articles

나는 어떤 개발자일까?

나는 어떤 개발자일가? 가끔 굉장히 깊은 지식을 가지고 있는 사람의 블로그나, 높은 퍼포먼스를 자랑하는 개발자들을 보게 되면 가끔 자괴감이 들때가 있다.

즉. 나는 아무리 노력해도 저 정도의 경지까지는 올라가지 못할것 같다는 생각이 들때가 있어서이다. 또 이와 같이 나는 4~5년을 하고 있는데, 나는 왜 이 정도의 깊이까지밖에 못하지? 라는 생각이다.

결국 이 차이는 많은 개발자들이 그만두게 만드는 하나의 요소로 작용한다. 이 모든 것은 남들과 많이 ‘비교’해서 그렇다.

리덕스의 창시자이자 React 메인 컨트리뷰터 Evan Abromov의 인터뷰 유튜브를 본적 있는가? 누군가는 천재라고 부르고, 세계에서 가장 잘하는 또는 존경받는 React 개발자라고 불러도 과언이 아닌 사람이다.

이 굇수도 정작 css 요소 center를 못 맞추는 모습을 보면, 여러가지 생각이 든다. 개발자는 일하는 환경. 성장 하고 있는 환경 그리고 관심사에 따라서 제각각 달라지게 되겠구나. 모든 것을 다 알고 깊은 지식까지 모조리 이해할 필요는 없겠구나.

나의 환경은 어떨까? 지금 내가 자라온 환경은 이렇다.

  1. 고등학교 문과 → 경제학 졸업
  2. 첫 직장 : css, html, js, jquery를 사용한 찍어내기 환경. React를 사용해봤으나, 지금와서 보니 의미있는 수준에서 진행한게 아님.
  3. 이직한 회사 : 진정한 의미의 프론트엔드 개발자 첫 직장이자 스타트업. 그런데 프로젝트 리드 개발자라니?

이를 보게 되면 회사의 목적. 하는 일을 보면 내가 왜 지금 프론트엔드 개발에 대한 깊이가 적을수밖에 없는지 이유를 어느 정도 알 수 있다.

취업 이전

  • 문과 환경에서 개발자로 전직하였으니 CS, 알고리즘 관련 지식 전무하거나 얕음
  • 주변 환경들은 전부 컴퓨터와 거리가 멂 (문과형 인간관계)

첫 회사 (웹 에이전시)

첫 회사에서는 아이패드 환경에 맞춘 웹 콘텐츠 찍어내기를 하였으니 깊이가 얕을 수 밖에 없다. 또한 부장, 차장, 과장 등으로 이루어지는 수직적인 환경+내 의견을 과감히 말할 수 없는 환경이었다. 그래서 이직했지만..

이 기간에 대한 성과를 보자.

  • 콘텐츠를 배치하는 css, 뷰포트에 대한 이해.
  • 빠르게 돌아가는 클라이언트 → PM → 디자이너 → 개발자의 프로세스에 대한 이해

이 기간 개발자로서 성과로서는 글로벌 제약 클라우드 플랫폼에서 한국지역 상위권 개발자였다는 점(업계 1위)과 자동화 프로젝트, 웹콘텐츠 및 서비스들을 많이 만들어봤다는 정도일 것이다.

현 회사 (스타트업)

  • Azure Dev ops를 사용한 배포자동화 + 트렌디한 개발환경, 젊은 스타트업 다운 빠르고 수평적인 의사결정을 비교적 어느 정도 가지고 있다.
  • 현 회사에서는 SI성 업무에 대한 일을 하고 있다. 스타트업이지만 시리즈 A단계에서는 자체 서비스 개발뿐만이 아니라 외주 서비스도 하게 된다.

아무튼 여행관련 회사에서 종합 솔루션 회사로 탈바꿈하려는 시도 + 자체 솔루션 서비스를 만드려고 하는 시도를 하고 있다.

하지만 여기서도 어느 정도의 한계성이 들어나는데 사내 프로젝트 + 회사 자체 솔루션에 대한 개발쪽 업무가 아니다. 그러므로 코드 리팩토링에 들어가는 자원(시간 + 인력) 투입이 쉽지 않다. 거의 불가능하다고 봐야 한다. 최선은 사내 서비스쪽이 안정화되어 수익을 얻기 시작하면 이쪽에 투입되어 개선 + 리팩토링 및 구조화등을 많이 해보지 않을까하는 기대감은 있다.

성과

  • 프로젝트 납기일을 계산 + 업무 배치 + PM+주변 개발자와 조율
  • 비즈니스 문제 해결에 대한 업무 + 리드 개발 책임에 대한 이해

자 이제 정리한 내 특화점+ 지속적으로 발전해 나가고 있는 부분은 아래와 같을 것이다.

  • 프론트 업무 프로세스 전반에 대한 지식
  • 프로젝트 업무 프로세스에 대한 이해
  • 프로젝트 일정 산출 및 주변 개발자와 협업 그리고 조율하는 능력
  • 책임을 지우는 자리에서의 비즈니스 문제 해결 능력

이제 여기까지 되돌아보게 되었을때 첫 질문에 대한 답을 어느정도 정리할 수 있다. 나는 어떤 개발자일까?

사람마다 다를 수 밖에 없는 이유

어쨌든 간에 나는 누가 뭐라고 해도 프론트엔드 개발자이다. 세상 넓은 곳에 있는 굇수급들 프론트엔드 개발자들에 비하면 깊지 않은 개발지식을 가지고 있다. (그렇다고 엄청 얕은 지식을 가지고 있는 것은 또 아니지 않을까? 내 바람이다.) 잘하는 것과 할 수 있는 것은 다르다.

Dan Abromov는 환경 자체가 나와는 다르다. 추측이지만 React팀에서 개선 및 어떤 문제가 있을때 이를 해결하기 위해 깊숙한 로우레벨까지 들어가야만 했을 것이다. Kakao, Line등 대기업에서 자체서비스를 만드는 사람들은 당연히 이 부분에서 나타나는 성능과 문제점들을 개선할 수 있는 기술에 대한 능력이 높아질 수 밖에 없다.

지금 멘토링을 하고 있는 이유는 이 깊지 않은 개발지식에 대한 단점을 줄이기 위한 노력이다. 프로그래머스에서 진행하고 있는 이 멘토링 관련 과정은 나에게 있어서도 매우 도움이 되는 CS관련 지식과 알고리즘. 그리고 트렌디한 기술들을 많이 배울 수 있다. (바뻐서 강의를 많이 못듣는 것은 함정)

그리고 좋은 멘티들을 만나서 자극을 받을 수 있는 좋은 기회라고 생각한다. 또 이 멘티들에게 조금이라도 많은 지식을 주기 위해 공부할 수 있는 원동력이 된다.

마치며

자. 나는 왜 이렇게 못하지? 저런 굇수 정도의 지식을 가지고 있어야만 개발자가 될 수 있을까? 나는 소질이 없는 걸까? 하고 의심하는 사람들과 예비 개발자들이 많을 거라고 생각한다. 하지만 나라는 사람 혹은 개발자는 주변환경(회사 포함)+자신의 흥미와 가치관과 성격등이 복합적으로 작용하며 계속 변화한다.

따라서 내가 지속적으로 공부를 열심히 게을리하지 않고 단점에 대한 이해를 잘 하고 개선해나가는 시도를 계속 하려는 사람이라면 , 내가 가는 길 하고 있는 일에 대해서 의심할 필요나 자괴감을 느낄 필요는 없다고 감히 생각한다.