ep 10. 4개월 치 주니어 개발자 회고록 및 생각 정리

이동엽·2023년 11월 10일
8
post-thumbnail

서론

벌써 취업을 한 지 4개월 차가 되었다.
그동안 매달 써오던 회고록을 지난 회고록을 마지막으로 약 100일 만에 다시 쓰기 시작했다.


'취업하고선 초심을 잃은 거 아니야?' 라고 생각할 수도 있겠지만, 정말 정신없이 달려왔고 여전히 달리는 중이다.
막상 직장을 얻고 나니 부족한 점을 몸소 느낄 수 있었고, 그래서인지 공부량은 훨씬 더 늘었다고 자부한다.

다만 그 과정에서 쌓인 피로 때문에 토요일 하루 만큼은 끝내주게 쉬어야.. 다음주도 다시 달릴 수 있겠다..라는 강박이 생기기도 했다.


세상에 안힘든 사람이 어딨냐고 말하는 이도 있겠지만, 이 글은 힘들었다고 알아달라는 글이 아니다.
그저 잠시 쉬는 사이 뒤도 한번 돌아보자고 쓰자는 의미로 그간 세월을 정리해보려 한다.


그간 회사 생활 적응기

  • 입사를 하고서야 사내 개발자 중 백엔드 개발자가 기술이사님을 제외하면 나 뿐이라는 것을 알았다.
    • 듬직한(= 내 맘을 알아주는) 사수를 기대했던 나로써는 초반에 많이 당황했지만, 이제는 사수가 없어도 잘 클 놈들은 알아서 잘 큰다는 말에 동의한다. 내가 그럴거다. 그러고 싶다.

  • 처음 약 한달 동안은 파일럿 프로젝트를 진행하며 온보딩(신입 교육)을 진행했다.
    • 매일 데일리 미팅을 통해 코드리뷰를 받았고, 수많은 주제로 생각을 이야기하며 기술이사님과 토론을 했다.
      • 코드 스타일부터, 디렉토리 구조, 네이밍 등등 사소하게 베여있는 습관들까지 모두 이유를 물어보셨고, 스스로도 기준이 없던 코드에 부끄러웠다.
      • 또한 당연히 좋다니까 썼던 내용들에서 깊게 공부하지 않았던 부분들이 밑천을 드러내면서 민망한 내 지식을 탓하기도 했다.
        • ex) Service Layer에서 @Transactional(readOnly=true) 가 성능이 왜 좋은가?

    • 1시간이 넘게 미팅이 가지고나면 수많은 피드백들이 쏟아졌고, 그 피드백들을 당일에 모두 반영시키고 싶었던 마음에 조급했던 내 모습이 이제는 보인다. 지금 보니, 조금만 여유를 갖고 더 생각해보는 시간이 있었으면 어땠을까 싶다.

    • 온보딩을 하는 한달 동안 기술 이사님과 생각이 다른 점이 많았고, (물론 대부분이 부족한 경험에서 나오는 나의 좁은 시야 였다.) 그 과정에서 참 힘들었던 시간들이 많았다. 가끔은 대전으로 떠나고도 싶고, 엄마한테 툴툴대고 싶었지만 잘 참았다.

  • 온보딩이 끝나고는 기존 사내 어드민 API Server를 고도화하는 작업을 진행했다.
    • Java 8 & Spring Boot 2.3.x로 구성되어 있던 프로젝트를 Java 17 & Spring Boot 3.1.x로 마이그레이션했다.

    • 기존에 스프링 시큐리티에 대해 이해도가 부족해서 매일같이 퇴근해서는 스프링 시큐리티를 공부해야만 했다.
      • 이곳은 (배우는) 학교가 아니라 (성과를 내고 돈을 받는) 직장이다.
      • 필요한 기술에 대해 온전히 학습하라고 시간을 주듯 배려해 줄 이유가 없었다. 그래서 회사에서는 할 수 있는 기능들을 먼저 구현했고, 퇴근하고서야 공부를 했다. 이런 점에서는 '너무 급하게 취업을 했나?' 싶지만 후회하지는 않는다.

    • 매번 새로운 프로젝트만 했지, 말 그대로 레거시 코드를 고치는 작업은 처음이였다.
      • 내가 진행하며 고려하지 못했던 점은 사내 어드민 프론트 서버의 경우는 당장 고도화를 하지 않을 것이였다.
      • 이 말은 API 스펙은 모두 기존 레거시와 동일해야 한다는 점이다.
        • URL, Body, Status Code, 응답 타입, 에러 타입과 메시지 등등 프론트 서버와 주고 받는 모든 것들은 바뀌면 안된다.

    • 프로젝트를 진행하며 배운 점
      • 트랜잭션 고려사항
      • Database Connection Pool(with HikariCP)
      • 쉘 스크립트 작성시 고려해야 할 점들
      • 개인정보 & 설정파일 암호화
      • 외부 설정파일 사용하기
      • 동일한 기능을 제공하는 라이브러리 비교하기
      • 보기 좋은 리드미 파일
      • 보기 좋은 로그 포맷 & 롤링 파일 로깅
      • 최적의 테이블 명세서 포맷(feat. 약 220 개의 테이블 ERD 및 테이블 명세서 작성..)
      • Reverse Engineering을 제공하는 ERD Tool 12개 비교
      • S3 이미지 업로드/삭제/다운로드

  • 지금은 기존 송아리당뇨 웹 API Server를 고도화하는 작업을 진행하고 있다.
    • 이전에는 사용자가 사내 직원들 뿐인 서비스를 개선하다, 처음으로 사용자가 사용하는 서비스를 내가 작업한다니 꽤 흥미롭다. (물론 운용하는 서비스 중 가장 이용률이 작은 서비스지만 그래도!)

    • 이때부터는 3개월이 지나 4개월차가 되어 더 이상 데일리 미팅을 진행하지 않았다.

    • 또한 앞서 온보딩 & 어드민 API Server 고도화 과정에서 코드 컨벤션 및 디렉토리 구조 등은 이제 회사 스타일로 자리가 잡혀 더 이상 고칠 부분이 없었다. 그래서 잠잠하다. 이제 다른 문제가 다가오겠지?

    • 프로젝트를 진행하며 배우고 있는 점

마무리

위에 사진에서 첨부한 "개발자 성장곡선" 사진을 참고해보면, 나는 절망의 계곡에 빠진 것만 같다.
깊게 생각해봤을 때 가장 큰 이유는 내가 그려왔던 이상적인 현업과 현실 사이에서 오는 괴리감 때문이였다.


좋은 코드는 없어도, 나쁜 코드는 있다.
현업에서는 나쁜 코드임을 알지만 그대로 쓸 수 밖에 없는 눈물나는 이유들이 종종 있더라.


입사를 하게 되면, 아무리 바빠도 퇴근하고 공부하고, 경험해보고 싶은 기술 스택도 사용하며, 사내 스터디도 활발할 줄 알았다.
다만 어느 집단이나 좋은 분위기를 메이킹하는 선두 주자는 극소수였다. 선두 주자가 없다면 그 환경은 직접 만들어야 한다.


그렇게 이상과 달랐던 현실에 마주친 내 모습에 아쉬워할 무렵, 문득 MIND23이라는 행사에서 이동욱님께서 강연하셨던 내용이 생각이 났다.


“스타트업의 장점은 가진게 없는 신입이 C레벨(CEO, CTO, ...)의 사람들과 직접 소통하고 붙어있을 수 있다는 점이다.”

자세히 말하면 C레벨들은 수십년의 경험을 가지고 결정들을 내리니,
매번의 결정이 반드시 정답은 아닐지언정 적어도 어떤 프로세스로 그러한 결정을 내리는지 등을 바로 배울 수 있다는 점이다.


실제로 나는 회사에서 사수가 없고, 서버 개발자가 기술이사(CTO)님과 둘 뿐인 덕에 하드 모드로 키워지고 있다. 요새는 나같은 신입에게 먼저 입사 제안을 주신 것에 대한 기대에 부응하고 싶다.

이러한 욕심이 드는 내 모습을 보니, 누군가가 나에게 개발이 재밌냐고 물어보면 나는 재밌다고 대답할 수 있을 것 같다.


이상으로 뒤늦게 돌아온 4개월치 회고록을 마무리해봅니다. 아래는 이사님이 보내주신 응원의 메시지!

profile
백엔드 개발자로 등 따숩고 배 부르게 되는 그 날까지

2개의 댓글

comment-user-thumbnail
2023년 11월 10일

저도 이제 뵐 수 있게 됬네요, 다다음주에 뵙시다.

답글 달기
comment-user-thumbnail
2024년 1월 14일

회고록 잘 봤습니다 ~~

공감가는 말이 많네요 ㅎ...

답글 달기