3년차 웹 개발자

4년차로 접어든 웹 개발자의 3년차 늦은 회고

Posted by kingbbode on February 3, 2019

You may find interesting:


SpringOne Tour Seoul - Spring Cloud Gateway

스프링 원 투어 서울 컨퍼런스 중 정윤진님의 Spring Cloud Gateway 세션


스프링캠프 2018-Consumer Driven Contract

Consumer Driven Contract 기법을 활용한 마이크로서비스 API의 진화

꼭 되짚어 보고 싶은 것들만 줄여 지난 3년차를 회고해본다. (2달 동안 썼다 지웠다를 반복하며, 늦은 급마무리를 지었다.)

개발관

ohmy

3년차에는 내가 어떤 개발자가 되고 싶은지 명확한 개발관이 생겼다.

나는 기술에 매몰되어 가는 개발자였다고 생각한다. 그동안의 나는 기술을 쫓았고, 트렌드를 따라가려 했으며, 깊이를 더하기 위해 노력을 해왔던 것 같다. 물론 이것은 개발자로서는 당연한 것들이다. 올해 많이 깨져버린 것은, 이것보다 중요한 것이 있다는 것이다.

3년차에서 가장 머리 속에 깊게 남는 말은 팀장님께 들었던 이 말이다. (정확하지는 않지만 이런 뉘앙스?)

“용근님이 처음 작성하신 코드가 더 효율적이고, 더 좋은 기술로 안정적일 수도 있다. 하지만 우리는 구성원 모두 함께 할 수 있는 개발을 해야한다.”

처음에는 많이 아이러니 했다. 왜냐하면 팀장님은 내가 알고 있는 실력 있는 개발자 중에서도 탑급이였기 때문이다. 기술력이 충분히 있음에도 이분의 기술 선택과, 프로젝트 설계에는 사람이 있었던 것 같다.

“나는 내가 잘하는 개발을 하고 있는가, 함께 할 수 있는 개발을 하고 있는가?”

내가 생각하게 된 “기술보다 더 중요한 것”은 개발과 유지보수에 대한 비용까지 생각하는 개발이다. 그리고 그것을 개인적인 차원이 아닌 협업을 한다는 차원으로 생각하는 것이다.

팀장님께 위 말을 들었을 때의 일이다. 나는 개편 중인 시스템에서 꽤나 중요한 부분에 대한 구현을 맡았다. 그리고 코드리뷰 과정에서 두번의 반려를 당했다.

첫번째 반려는 구조의 복잡도 이다. 조금은 먼 미래를 보고 성급한 모듈화를 하였다. 이 구조는 오히려 구조에 대한 파악과 가독을 어렵게 했다. 모듈화 자체가 잘못되었던 것은 아니다. 그러나 앞으로 생기지 않을지도 모를 확장성를 고려한 성급한 모듈화 가 지나치게 분리된 구조를 만들어낸 것이다. 그리고 이 구조 또한 내가 만들어낸 구조이므로 내가 생각하기엔 쉽다고 생각하겠지만 남들에게는 어려운 기능이 아님에도 구조를 파악하기 위한 학습비용 을 발생시켰다. 모듈화에 대한 성급함도 있었지만, 내가 아닌 다른 사람을 생각하지 않았던 것도 컸다.

두번째 반려는 기술의 선택 이다. 분명 검증이 되었고, 코드양 자체도 줄일 수 있지만 현재 시스템에서 사용하지 않는 학습비용이 필요한 기술을 사용했다. 이 때 팀장님께 위의 말을 들었다. 예전부터 자주 생각했던 말이 있다. 기술을 사용하려고 문제를 찾는 것이 아니고, 문제를 해결하기 위해 기술을 사용해야한다는 것이다. 이 피드백을 계기로 나는 여기에 한가지를 더 붙여 생각하게 되었다. 현재의 문제만 해결하기 위해 기술을 선택하는 것이 아니고, 서비스(시스템)을 (앞으로도) 더 잘 만들기 위해 현재의 문제를 해결할 수 있는 기술을 선택해야 한다

좋은 프로젝트나, 좋은 시스템은 한 명의 영웅 개발자가 만드는 것이 아니고 함께 협업하는 모두의 시너지로 만들어진다고 확신한다. 그래서 결론은 나는 기술로 발라버리는 영웅 개발자가 되기보다는, 기술을 바탕으로 주변에게 버프를 줄 수 있는 개발자가 되고 싶어졌다는 것이다.

그리고 그것을 실천하기 위해 어렵고 바쁜 3년차이기도 했다. 1년동안 ‘결제’, ‘주문’ 이라는 2개 프로젝트의 개편을 완료했고, 세번째 프로젝트의 개편을 진행 중이다. 개편 과정을 거치며 무엇이 좋은 프로젝트인지, 좋은 코드인지를 끊임없이 고민하고 있다. 객체지향적인 코드, 테스트 코드의 중요성, 스프링을 잘 사용항는 것 이 일단 내 기준의 좋은 프로젝트의 기본이다(회사에서). 그리고 거기에 분리와 통합, 올바른 기술 선택 등이 경험으로 달라붙고 있다. 정답이 없기때문에 참으로 어려우면서도 재밌다.

3년차에 받은 피드백 중 하나인 이 말이 현재의 내 4년차를 만들어가고 있다.

“단순히 개발을 잘한다를 넘어서 올바른 개발이 무엇인지 고민하고 노력하는 분이라 생각합니다”

이 말을 더 많은 사람들에게 듣고 싶다.


코덕 (https://co-duck.com)

3년차 목표 중 하나가 개인 서비스를 갖는 것이었다. 그리고 결국 만들어냈다. 그리고 이것이 단순히 개인 서비스를 갖고 운영해보는 경험을 갖고 싶어서 쥐어짜내 만들었던게 아니고, 내가 만들고 싶었던 서비스를 만들었다는 점에서 굉장히 만족스럽다.

co-duck.com

코딩덕후 프로젝트인 코덕은 아래와 같은 생각으로 만들어졌다.

  • 개인적인 개발 공부에 대한 동기부여, 재미를 즐 수 있는 시스템을 만들고 싶었다
  • 꾸준한 공부에 대한 보상을 주고 싶었다
  • 자극을 받을 수 있는 시스템을 만들고 싶었다
  • 꾸준한 개발이 현실의 취업, 이직에 도움이 될 수 있도록 도와주는 시스템을 만들고 싶었다

이러한 모든 생각들은 전 회사에서 만난 사수로부터 시작되었다

나는 운이 좋았다. 웹개발을 시작하며 만난 사수가 엄청나게 자기계발을 잘 하시는 분이었다. 일일커밋은 물론, 꾸준한 블로깅, 자기 학습을 통해 스스로 성장하고 있는 모습을 나에게 적나라하게 보여주었고, 나는 그런 사수를 자연스럽게 따라하게 되었었다. 그리고 그러한 활동들은 자연스레 내 현실세계의 평가에도 좋은 영향을 미쳤다.

그렇게 열심히 하는 사수의 모든게 나에겐 자극 이었다. 그리고 나뿐만이 아닌 당시 회사의 내 주변의 많은 개발자들이 나와 같이 그분의 성실함을 따라가기 위해 노력했다. 우리는 그렇게 서로 선의의 경쟁을 했었다고 생각한다. 퇴근 후 술 한잔하고 집에 왔을 때도 사람들의 깃헙을 들어가보며

“아 다들 또 커밋했네”

하며 12시가 되기 전 부랴부랴 무엇이든 커밋을 하기도 했었다. 가끔 의미없는 커밋을 할 때면 스스로 자괴감이 많이 들었다. 그래서 “장난감 프로젝트” 들을 구상하게 되었다. 그러면서 정말 다양한 도전들을 하게 되었고 많은 유의미한 성과들을 얻을 수 있었다.

이런 과정들로 “장난감 프로젝트”, “샘플 프로젝트” 등을 만드는 것, 그리고 꾸준히 무엇이든 공부하는 것이 나에게 당연한 것들이 되었던 것 같다. 주변에서 좋은 소리를 들을 수 있는 개발자로 성장했고, 스스로 나의 개발관을 갖기 시작할 때쯔음부터는 더 이상 일일커밋을 집착하진 않았다. 이때부터가 정말 나만의 학습법으로 꾸준하게 무언가를 공부하게 되었다.

나는 나와같은 경험을 갖기를 내 주변의 시작, 도전하는 개발자들에게 많이 추천했다. 의미가 없더라도 일일커밋을 하고, 주변에게 자극을 받으며 좋은 습관들을 만들어내기를 기대했다. 그러나 생각처럼 되지 않았다. 자극을 받기도 쉽지 않았고, 경쟁의 대상은 거의 없다싶이였고, 여러가지 환경적인 상황이 동기부여를 일으키지 못했다. 그래서 무언가가 있었으면 좋겠다고 생각했고, 생각의 정리 끝에 코덕 을 만들게 되었다.

나는 운이 좋았다. 내가 운으로 얻게 된 것들을 시스템적으로 비슷하게라도 경험 시켜주고 싶다.

코덕은 진행 중

토이 프로젝트라는 개발적인 측면에서 얻게 된 것은 회사 블로그(http://woowabros.github.io/experience/2018/11/12/toy-project.html)에서 이미 한번 회고를 했어서 생략하겠다.

현재의 코덕은 아직 내가 이루고자 했던 것들을 많이 못 이루었다. 그래서 회사 블로그 글을 쓰며 등장했던 것을 제외하고는 특별한 홍보도 하지 않았다.

운영하며 내 생각 이하로 사람들의 무언가를 이끌어내지 못한 부분도 많고, 아직 기능적으로도 등장하지 못한 것들이 많다. 아래는 앞으로 진행될 과제들이다.

  • 소통할 수 있는 공간을 만들 것이다. 무엇이 되었든 소통을 통해 자극을 받을 것이라는 기대감이 있다.
  • 시즌 데이터 이상의 개인화된 레벨과 리그를 만들 것이다. 생각 이상으로 꾸준히 이미 잘하고 있던 사람들이 많았던 것 같다. 그래서 뉴비들이 등장하기 쉽지 않은 것 같다. 개발자가 점진적으로도 성장을 할 수 있는 구조가 필요했다.
  • 사용자의 개인 페이지가 하나의 이력서로서의 기능을 갖을 수 있도록 더 고도화하고, 현실 세계에 영향을 미칠 수 있도록 해야한다. 이것은 어떻게 풀어나갈지는 미지수다.

기능적으로도, 이상적으로도 풀어내야할 과제들이 있다. 4년차에도 기대가 된다.

코덕에서 재밌었던 것들

현재는 약 300명 정도의 회원만 있다. 그래서 유의미한 데이터일지는 모르겠지만 몇 가지 통계를 정리해본다.

레벨 분포도

ohmy

시즌들에서 비슷한 분포 현상이 보였다. 시작과 중간, 끝인 일덕, 사덕, 십덕 각 3개 계층이 가장 두꺼운 3개 계층이라는 것도 많은 것을 생각하게 했던 것 같다.

일일커밋터

commit

jojol**님 contributions chart..

  • jojol**
  • Integero**
  • ahribo**
  • johngr**
  • betterfly**
  • nekisse-l**
  • nokch**
  • reck1e**
  • woooooo**
  • ysm06**
  • gyumin-k**
  • geonwoo-jeo**
  • SeonHyung**
  • Kim-JunHyeo**
  • hanmins**

일일커밋을 하고 계신 분들이 많아 많이 놀랬다. 존경합니다.

언어 분포

repo

현재 자바 개발자가 많긴 하다.

PV

pv

어떻게 알고 들어와주신 모두들 감사합니다.


다시 만남

지난 2년차 회고에서 사수와 동기를 모두 보냈었는데..

bye1

bye2

(2년차 웹개발자 - 회고 중)

이번에는 사수, 동기, 부사수 를 모두 현재 회사에서 (추천과 추천의 추천 등등으로) 다시 만나게 되었다. 지난 회고에서는 사수와 동기의 이직을 적었는데, 놀랍게도 둘 모두 다시 같이 있게 되었다.

나를 현재의 회사로 불러준 나의 사수는 내 3년차에도 역시 나의 많은 고민을 들어주고 조언해주며, 항상 커더란 자극제가 되어주고 있다.

내가 가장 힘들어 하던 시기에, (힘들게) 와준 내 동기에게도 너무 고맙다. 개편 중간의 바쁜 시기에 합류하여 미안하기도 했고 고맙기도 했다. 아무튼 덕분에 나도 흔들리지 않고 개편을 끝까지 잘 마칠 수 있었다.

동기가 이전 팀에서의 나를 지탱해줬다면, (전) 부사수는 현재 팀에서 든든한 동료가 되주었다. 오자마자 큰 프로젝트에 함께 합류하였는데 잘해주고 있어서 뿌듯하고 고맙다.

세분 모두에게 너무 감사하고, 다시 함께 일할 수 있어서 정말 든든하다.


4년차에는?

3년차에는 회사 적응코덕핑계 로 많은 것들을 포기했었다.

garbage

대표적으로 개인 블로그, 오픈소스 기여 노력, 온라인 커뮤니티 활동 활동이다. 앞으로는 이 부분들에서 조금 더 신경을 써야겠다. (+ 코덕에서도 해야할 일들도 많다.)

블로그

1년 동안 고작 5개의 블로깅을 했다. 거의 신경을 쓰지 않은게 사실이다. 쓰고 싶은 글감도 많았지만, 글감만 올려두었다가 삭제하기를 반복했던 것 같다. 지난 날을 반성하며, 세미나 후기나 회고를 제외하고 2달에 한개씩은 기술 블로그를 작성해야겠다.

오픈소스 기여

오픈소스 기여는 방관이였던 것 같다. 문제가 생겼을 때 찾아보거나 들어가보지 않고 다른 방식으로 회피를 한 적이 많다. 무언가 문제가 있는 건 알고 있었지만 크게 신경쓰지 않았었다. 너무 나태하지 않았었나 반성하며 기여에 대해서도 조금 더 신중한 노력을 해야겠다고 생각했다. 앞으로도 회사에서 수많은 문제를 해결해야할 것이다. 그러다보면 아마 한개쯤은 발견하지 않을까 생각한다. 물론 기여를 하려고 코드를 찾는건 매우 싫어하므로 당연히 앞으로도 하지 않을 것이므로 목표는 운 좋으면 1개 정도로 잡아보아야겠다.

온라인 커뮤니티 활동

마찬가지로 아무것도 하지 않았다. 한국 젯브레인 사용자 그룹은 관리자로 임명되있음에도 아무 것도 안했다. 정말 죄송한 마음뿐이다. 모임에 기여할 수 있도록 신경써서 프로젝트를 진행할 예정이다.

코덕

코덕은 위에서 말한 것처럼 해야할 과제들도 많다. 이 과제들을 모두 해소하는 것이 4년차의 큰 목표 중 하나이다. 그리고 영상 시대이니만큼 앞으로 코덕에서 개발될 기능들은 영상으로 라이브코딩 기록을 남겨 유투브에 올려볼까도 생각 중이다. (코드를 공개하기 창피하니 그 전에 리펙토링을 해야할 것도 같고..)


마무리

이전 회고에서는 내 앞으로의 고민들을 어떻게 해결해갈까라고 마무리했다면, 이번 회고에서는 내가 뭘 어떻게 해야겠다라고 답을 내고 마무리를 할 수 있어졌다. 끊임없는 자기반성이 내 3년차의 요약인 듯 하다. 물론 틀렸을 수도 있지만, 계속하여 되돌아보며 반성하고 고쳐나가도록 하겠다.

garbage2

최고의 동료들을 많이 만났다. (전)사수, 동기, 부사수와 그냥 최고라고 말할 수 밖에 없는 팀장님, 개발잘알 호돌맨, 알구몬, 일잘알 우수사원, 이상적인 시니어 개발자, 나와 개발 컨텍스트가 닮은 동료들, 어마무시한 신입사원들 등등등 앞으로가 정말 기대된다. 끗.