[Think] 어떤 개발자가 되어야할까

Cover image

어떤 개발자가 되어야할까?

개인적으로 개발을 시작한지 어느새 9개월이 넘었고, 곧 1년차를 위해 열심히 달려가고 있다. 그런데 정작 목표나 어떤 방향의 개발자가 되어야할까에 대해서 어렴풋하게만 생각하고 제대로 된 정리를 해본적이 없어서 한 번 이번 기회를 빌려 정리를 해볼려고 한다.


그 간의 과정

git-history

2020년 2월 9일, 폴란드에서부터 깃을 본격적으로 관리하기 시작했었다. 그전까지는 깃을 썼으나 주로 관리하지 않았는 느낌이였다. 코로나 사태로 갑작스럽게 폴란드 바르샤바 공과대학에서 복수학위를 포기하고 귀국을 하여 갑작스럽게 졸업과 취업 준비를 시작했다. 그 때가 약 3월이었다.

기존에 들었던 학점이 많아 150학점이라는 학점을 4학년 1학기때 다 채워서 졸업을 할 수 있었고, 운 좋게 국내 이커머스 손에 꼽히는 회사에 붙을 수 있게 되었다. (아마 그때 많은 운을 쓰지 않았을까... 부족한 실력이었다고 항상 반성을 한다.)

그렇게 20년도 6월 22일, 대학교 기말고사를 앞두고 회사에 취직하여 일을 하게되었고 최초에 생각했던 프론트 엔드 개발자가 아닌 백엔드 개발자의 삶을 살게 되었다. (이때가 25살. 부족했던 시기, 지금도 마찬가지지만)

그 때의 마음가짐은 다음과 같았다.

  • 남들보다 부족하기 때문에 조금 더 시간을 투자해서 일을 하고, 조금 더 공부를 하자.
  • 회사에 들어올 때는 운 덕분에 들어왔지만, 내가 나갈때는 실력으로 나가자.

이 두가지의 마음가짐을 바탕으로 일을 시작했다. (다만, 회사에 들어오고 마음이 풀어저서 한 달 정도는 깃 관리를 놓쳐버렸다. 그저 내 잘못...)

본격적으로 일을 하면서.

생각보다 다양하고 많은 개념과 기초 개념을 모르고 있다는 것을 알게 되었고, 이를 공부를 해야겠다는 위기감이 많이 몰려들었다. 회사는 다른 회사에 비해 적은 개발자 수를 가지고 있었기 때문에 보다 폭넓은 지식이 필요했다. 그러나 가장 어려운 부분이라고 생각하는 것은 "내가 어떤것을 모를 때, 어떤 것을 모르는지 모르는 거다." 라는 것이였고 그 당시에는 내가 그랬다.

그래서 내가 선택한 방법은 주변에서 들리는 개념이란 개념을 모조리 듣고, 약간이라도 애매하거나 모르는 부분이 있으면 이를 따로 개인 슬랙 채널에 적어 놓고, 이를 퇴근 후나 출근 전에 개념을 공부하고 이를 블로그에 정리하는 방법으로 진행했다. 업무적으로는 내가 어떤 부분을 진행하고 있는지를 모조리 wiki에 정리하고, 그 어떠한 부분의 과정이라도 내가 도움이 될 것 같다면 이를 개인 위키에 정리해놓았다. (더 나아가, 나와 같이 하는 사람들이 내 wiki를 통해서 더 효율적으로 일할 수 있게.)

그 결과적으로 현재 개인 블로그 글 수는 100개를 넘겼고, 업무 개인 위키 페이지는 대략 400개 이상의 게시글이 유지되고 있다.

image

image

  • 그렇게 블로그를 작성하면서 생각보다 사용자 수가 많이 증가했다. 이렇게 전문성이 부족한 글도 봐주시는 사람이 있어 항상 고마움을 느낀다.

이러한 방식으로 많은 글을 정리했고, 지금도 꾸준하게 1일 1커밋, 블로그 활동, 새벽 기상 및 공부 등을 지키기 위해서 노력하고 있다. 무라카미 하루키의 글쓰기 방법을 굉장히 존경하고 본받기 위해서 노력한다. 다만 옛날에 비해서 많이 게을러지고 목표를 잃은 느낌이라 다시 텐션을 올려야겠다는 생각을 한다. (옛날에는 새벽에 공부를 하나 했다면 요즘은 그냥 알고리즘 하나 푸는 정도.)


목표

그렇기 때문에 새로 목표를 세우고 다시 일어나서 해야겠다는 생각을 했다. 기존의 나는 부족한 개념을 채우기 위해서 노력을 했다면, 내가 앞으로 가야하는 방향은 어떤 것일까에 대해서 고민을 하게되었다.

취업을 시작하고부터 항상 고민했던 문제는 "내가 어떤 언어를 가장 자신 있어하고, 어떤 프레임워크를 잘쓰냐" 라는 질문이였는데 지금까지도 자신있게 말할 수 있는 언어가 없다. (그저 사용만 할 줄아는...) 그렇기 때문에 나는 아직 주니어 레벨에 도달하지도 못한게 아닐까라는 생각을 자주 한다. (신입보다 못한 사람이지 않을까.)

어떻게 공부?

나는 자바와 스프링은 그래도 자신이 있는 개발자가 되고 싶다. 그래서 먼저 공부할 종류를 다음과 같이 나누었다. 현재 내가 공부하는 시간으로 뺄 수 있는 시간은 하루에 4~5시간 정도 된다. (새벽 5시부터 7시 / 퇴근 후 7시 ~ 10시)

  • 주 공부 : Java / Spring
  • 기초 지식 : 네트워크 / DB / 웹
  • 알고리즘 : 하루에 한 문제만.
  • 그외의 지식들... : 재밌는 트렌드 등등.

그렇기에 주 공부를 하루에 3시간 씩하고 기초 지식을 1시간 정도 보는 방향으로 가고, 그 외의 지식은 주말이나 흥미위주로 좀 쉴 때 찾아볼려는 방향으로 갈려고 한다.

길고 긴 마라톤 경주에서 최종적으로 도달할 수 있는 사람이 내가 되기를.

이렇게 공부할때는 최대한 깊게 공부를 할려고 한다. 현재 보고 있는 토비의 스프링처럼, 최대한 자세하고 코드 자체를 다 디버그 해보고, 원리를 이해하는 방향으로 가겠다라는 생각이다. 마찬가지로 기초지식도 면접관이 질문을 물어보는 것처럼 하나하나 자세하게 공부를 해볼려고 한다.

  • 웹 통신 뭐 있어요? -> http나 socket -> 차이가 뭐에요? 또 다른 통신들은 어떤거 있어요?(ftp, smtp 등등) -> 왜 쓰죠? -> 언제 쓰죠? -> 어떤 점이 문제일 까요?
  • 로그인 하면 웹 프론트와 백에서는 뭔일이 일어나요? 쿠키와 세션을 통해서 설명해주세요. 이렇게 하면 문제가 없을까요? 보안 이슈가 터지면 어떻게 할까요? 등등

이렇게 이어가는 질문들을 전부 대답할 수 있는 사람이 되기를 간절히 원한다.

이 부분이 좀 정리가 되면, 개인 토이프로젝트와 오픈소스를 본격적으로 하고 싶다. (물론 윗내용은 회사에 절대 지장없이 해야한다고 생각한다.. 업무에 지장되면 말장 도루묵이라고 생각하기에)

결론.

개발자의 방향은 제널리스트와 스페셜리스트가 있다고 듣는다. 나는 아직도 프론트엔드에 관심이 있고 최근에는 DevOps도 흥미가 있다. 개발자의 제널리스트는 넓은 지식을 얇게 아는 것이 아니라, 자신의 주종목이 있고 이를 바탕으로 다른 부분에서도 대화를 할 수 있고, 능력을 발휘하는 사람이라 믿는다.

아직 부족하지만, 어쨌든 나는 유니콘과 같은 좋은 풀스택 개발자가 되고 싶다. 다음에 이런 회고록을 쓰는 시점에는 좀 더 발전해있을 것이라 확신한다.

길었던 회고록을 읽어주신 분들이 있다면 감사합니다.