나는 2023.07.11 (화) 에 신입개발자로서의 첫 걸음을 내디뎠다.
큰 규모의 프로젝트를 진행해본 적이 한번도 없었기 때문에 매우 두근거리는 마음으로 입사했다. 정직원 경험뿐 아니라, 인턴 경험도 한번도 없었기 때문에 더욱 떨리고 기대에 부푼 마음이었다.
2023년 8월 12일, 입사한지 정확히 한 달이 됐다.
사실 1개월 이상 직장경험이 있는 사람들은 알겠지만, 1개월차에는 할 수 있는게 사실상 거의 없다. 나 또한 1개월동안 한 거는 별로 없다. 그렇지만, 1개월동안 위에서 언급한대로 즐겁고 부푼 마음으로 무언가에 임한 경험은 분명히 존재한다.
그렇기 때문에 주니어 개발자 1개월차로서, 일기처럼 느낀점이랑 한 일에 대해 적어보려 한다.
또한, 주니어 1개월동안의 경험은 회사마다 다 다를 것이라 생각한다.
우아한형제들의 경우, 주니어개발자에게 주어지는 온보딩 기간이 상당히 길다. 또, 회사마다 일하는 방식이 다 다르리라 생각한다. (제목에 회사명을 적은 이유, 회사명 적을지 뺄지 엄청 고민했다...)
우리 회사의 경우 팀바팀 역시 매우매우 심하므로, 사내에서도 1개월차 경험 및 느낀 점이 사람마다 매우 다를 수 있다.
따라서 `어? 난 첫 1개월동안 이렇게 느끼지 않았는데?`라고 느낄 수도 있다. 그냥 지나가는 주니어개발자 1인의 일기라고 생각하고 보면 좋을 거 같다.
개발얘기가 보기 싫고 회사 소소한 라이프 위주로 보고 싶다면, 맨 밑에 `마치며` 부분에 적은 점 위주로 봐도 될듯.
프로젝트는 MMORPG의 원정대같은 느낌
나는 온보딩을 마친 후, 5주차부터 업무에 투입됐다. 사실상 지금 업무를 진행한지는 일주일밖에 안된 셈이다.
그래도 느낀점을 적어보자면, 지금은 MMORPG의 레이드 원정대처럼 일하고 있는 느낌이다.
이게 무슨 소리냐 싶을 것이다.
생각보다 배달의민족에는 새로운 기능들이 보이지 않는 군데군데에 생겨나고 있다.
그렇기 때문에 새로운 프로젝트들이 꽤 많이 생겨나고 있다.
우리 팀과 연관이 있다면 해당 프로젝트에 우리 팀이 참가하게 된다. 팀내에 모든 인원이 하나의 프로젝트에 몰입할 수는 없기 때문에, 테크리더님께서 담당자를 정하여 동의 하에 프로젝트에 투입된다. 우리 팀의 경우는 페어로 투입된다.
근데 왜 MMORPG 같이 느꼈냐면, 각각의 프로젝트들이 거대한 하나의 레이드라 생각이 들었기 때문이다.
예를 들어, 특정 이벤트에 대한 쿠폰 행사 프로젝트라 하자. 그러면 쿠폰 관련 팀, 이벤트 관련 팀, 주문팀, 마케팅팀 등등 다양한 팀이 해당 프로젝트에 투입이 된다. 그리고 이 프로젝트를 어떻게 잘 처리할지 해당 팀의 기획자, 개발자 등등이 다같이 슬랙 채널에서 논의를 진행한다. 이 부분이 마치 레이드를 성공적으로 마치기 위한 공략을 작성하는 느낌이다.
A: 운영 배포 일정으로 인한 QA 기간이 좀 빠듯합니다 ㅜㅜ 00팀에서 i API를 17일까지 개발해주시면 좋을 거 같아요
B: 17일까진 저희가 ~~ 일정 때문에 좀 빠듯할 거 같아요. 19일까지는 가능할 듯합니다!
A: 그럼 혹시 ++팀에서 j API를 15일까지 먼저 개발해줄 수 있을까요?
C: 네 가능합니다! 그리고 @@정책이 구체적으로 디테일하게 정해지면 더 빠르게 13일까지도 가능할 듯해요!
A: 감사합니다! 그리고 j API의 %% 부분이 잘 이해가 안가요 ㅜㅜ 혹시 설명해주실 수 있나요?
C: 이 부분은 허들로 얘기해보면 좋을 거 같은데, 잠시 시간 괜찮으실까요~?
C: 네네 좋아요!
B: 저도 참여할게요~
(참고로 위 예시 대화내용 및 일정은 실제와 전혀 무관하다)
이렇게 활발하게 슬랙 채널 또는 zoom, slack 허들로 논의가 이루어진다.
그리고 이러한 논의를 할 때에는 배경 및 이유를 명확하게 전달해주시는 점이 너무 좋았다.
공략이 주어지면, 이제 작전을 실행에 옮겨야 한다. 이 작전은 일정이 매우 타이트할수도, 비교적 널널할 수도 있다. 근데 대부분은 좀 타이트한 편인듯하다.
한 팀만 참가하는 프로젝트였다면 일정을 마음대로 조정할 수 있었겠지만, 프로젝트에는 여러 팀이 존재하기 때문에 특정 팀의 일정이 조정되면 다른 모든 팀의 일정에 영향이 끼친다. 이 부분이 실무와 사이드프젝의 다른 점이라 생각된다.
지금의 나는 2개의 프로젝트에 투입돼있는 상황이다.
MMORPG 레이드에 두 군데 참여하고 있는 느낌이라 보면 된다.
해당 레이드 슬랙 채널, 기획서를 보면서 열심히 분석하고 개발하고 있는 상황이며, 페어로 작업하는 선배개발자분께서 열심히 가르쳐주시고 계신다.
업무에 투입된지 일주일밖에 안됐지만, 그리고 사람마다 다르겠지만, 개인적으로는 확실히 야생형으로 업무에 뛰어드는게 재밌다고 생각이 든다. 온보딩으로 전체적으로 도메인을 크게크게 익히고, 기획서를 보면서 새로 작성할 기능을 파악하는 것도 좋다. 하지만 업무에 직접 투입이 돼야 이 코드가 왜 이렇게 짜여졌는지, 내가 작성한 기능이 어디에 영향을 미치는지 정확히 알 수 있다고 생각한다 :)
업무에 투입되는 걸 좋아하는 또 다른 이유는, 내가 무언가에 기여했다는 성취감 때문이다. 내가 작업한 내용이 beta에 도입됐을 때의 쾌감이란. 마치 몬스터에 내가 일정부분 기여한 느낌이 들어서 짜릿하다. 나중에 prod 운영 환경에 도입되면 정말 기쁠 듯하다 ㅎㅎ
무언가 기여하거나 코멘트를 작성할 때 굉장히 기쁘다
위에서 간단히 언급했지만, 성취감이 나를 일하게 만들어주는 원동력인 듯하다.
우리 팀에서는 주로 혼자서 작업이 아닌, 페어와 함께 작업하는 문화가 존재한다. 그렇기 때문에 난 업무 1~2일차에는 주로 네비게이터 역할을 맡아왔다. (드라이버: 코드 작업자 / 네비게이터: 드라이버를 지켜보고 운영하는 사람) 물론 나의 경우는 업무가 익숙하지 않아서 네비게이터 역할을 맡은 것이기 때문에, 드라이버에게 팁을 주거나 조언하는 역할을 맡은 것이 아니다. 말그대로 업무하는 것을 쭉 보고 익히는 역할을 맡은 것.
업무 3~5일차에는 페어분께서 다행히 나에게 코멘트도 달아보고, MR (github: PR / gitlab: MR) 을 작성해볼 기회를 주셨다.
특정 혜택에서 쿠폰이 얼마나 사용됐는지 문의 답변 기회를 나에게 주신 덕분에, 처음으로 코멘트를 작성해보았다. 그냥 select, join, union 등의 간단한 SQL을 이용하여 답변하면 되는 것이라 별거 아니긴 하다. 하지만 처음으로 내가 다른분에게 답변을 한 경험이었어서 되게 보람찼다. 또, 이러한 답변을 할 수 있게 됐다는 것은 우리 팀 내에서 특정 테이블들에 대한 역할을 알게됐다는 것. 얼른 도메인 지식을 익혀서 많은 문의를 처리할 수 있는 능력이 생겼음 좋겠다 ㅎㅎ
첫 MR을 보낼 때에도 기분좋았다.
내 코드가 사내 Gitlab에 기여가 된다니. GitToolBox 플러그인으로 뜨는, 코드 오른쪽에 기여자 이름에 내 이름이 새겨져있을 때 기분은 이루 말할수가 없다.
문제는 지금 해당 MR... CI가 통과가 안되고 있다ㅋㅋㅋ. sonar에서 막혀서 들어가보니 커버리지가 살짝 낮았다.
sonar test coverage는 상당히 깐깐하게 체크가 이루어지는데, 이러한 점 덕분에 우리 팀 테스트커버리지가 높은 게 아닐까 싶다. 다음주에 출근하면 테스트 코드를 추가로 작성을 해봐야겠다.
그 외에도 삽질은 당연히 존재한다.
beta 브랜치에 feature브랜치를 머지해야되는데, 반대로 beta -> feature로 머지해버리지 않나ㅋㅋㅋ (이러면 다른 issue의 작업내용도 feature에 빨려들어간다). remote 브랜치를 삭제해버리지 않나 ㅋㅋ
git을 못다루는 편은 아니라고 생각하는데, 규모가 워낙 있다보니 헷갈리고 긴장해서 브랜치 실수를 좀 하곤 했다.
참고로 이런 실수를 할 때 심장이 정말 쫄깃했다.
나때문에 팀원들이 고생하는거 아냐? 하는 생각 때문에 식은땀이 주르륵 흐른다ㅋㅋㅋ 그래서 더 잘 하려고 하는 것도 있는듯.
새롭게 배울만한 것들이 많다
우리 팀은 테스트 커버리지가 매우 높은 편이다. 약 70% 근처인 것으로 알고 있다. (애초에 각 MR에서 커버리지가 낮으면 sonar CI에서 통과되지가 않는다.)
"어? 테스트 커버리지가 저거밖에 안돼??" 라고 생각할 수도 있다. 일반적인 사이드프로젝트에서는 테스트 커버리지 80~90%에 가까울테니 말이다. 하지만, 생각보다 대부분의 회사에서는 규모가 좀 크고 외부 인프라가 많으며, 기한엄수 등의 이유로 테스트 커버리지가 낮은 편이다.
이걸 어떻게 알게 됐냐면, 나도 사실 처음에는 테스트 커비리지 70%가 높은줄 몰랐기 때문이다. 그렇기 때문에 다른 개발자분들이랑 관련 내용으로 얘기를 나눴었다. 그 결과, 우리가 흔히 이름을 들어본 대부분의 IT기업에서 테스트 커버리지가 보통 20~40% 대였다. (물론 여기서 당연히 예외는 존재한다. 좋은쪽으로든, 나쁜쪽으로든.) 특히 안정화가 안된 프로젝트일수록 커버리지가 조금 낮은 편이었다. 그렇기 때문에 나는 우리 팀 코드에도 매우 만족중이다.
특히 페어로 작업할 때, 페어분께 개발 습관에 대해서 되게 좋은 지적 및 조언을 들었다. 새로운 기능 구현 후, 리팩터링하기 전에 테스트코드를 먼져 돌려보는 것. 그리고 기능 구현을 한 후에, 테스트코드를 작성하기 전에 기존 테스트들을 돌려보는 것. 내가 작성한 기능으로 인해 테스트 코드가 깨질 수도 있기 때문이다. 어떻게 보면 당연한 것인데, 어느순간부터 난 리팩터링까지 마친 후 테스트코드를 작성하는 습관이 들여져버렸다. 기능이 올바르지 못하면, 리팩터링해봤자 의미가 없는 것인데 말이다. 다시 한 번 테스트 코드의 습관에 대해 점검해보는 계기가 됐다.
그 외에도 분산락, MSA 환경에서 타 API Call 방법(우리 팀에서는 FeignClient 사용 - 어차피 이건 기술블로그에 있는 내용이라 걍 포스팅에 까놓고 말했다), 이벤트 발행 및 SNS/SQS, 스프링 배치 등 다양한 기능들이 존재한다. 나는 스프링배치는 아직 경험이 없어서, 사내에서 지원해주는 도서구입비 무제한 복지로 `스프링 배치 완벽가이드` 책을 읽는 중이다. DB 공부도 생각보다 많이 필요하다. index는 물론이고, online DDL, lock, 레디스 캐싱 관련 설정 등등. 그동안은 겉핥기로 공부했다면, 이제는 조금 더 꼼꼼히 공부해보아야할 듯하다. index 추가에 몇시간 단위로 소요되고, generated_column이 이루어질 때에는 (online DDL이 안된다면 특히) 거의 수십시간 단위로 이루어지니 말이다.
어서 많이많이 익혀서 사내에서 많은 기여를 할 수 있음 좋겠다.
물론 지금 최우선으로 익혀야될 것은 팀 도메인 및 각 table 역할!
아직 절반도 모르는 것 같다ㅋㅋㅋ
마치며
결론을 말하자면, 모든게 새롭고 재밌다.
아직까지는 모든게 새로워서 그런지 업무가 재밌는 듯하다.
새롭게 투입돼서 진행하고 있는 프로젝트는 RPG 레이드같고, 코드문화는 위에서 언급한 것 외에 플래닝포커, 코드리뷰, wiki등 되게 잘 돼있어서 만족하는 중. 아직은 신입이고 1개월차라 그런걸수도 있긴 하다.
일 강도도 아직은 더 높아도 될 것 같다고 생각중. (미래의 내가 이걸 보면 후회할 것 같은 느낌이 들지만ㅋㅋ)
그 외에 (1개월차 입장으로) 추가로 느낀 점은 아래와 같다.
- 회의가 꽤 많은 편. 소통을 통해 명확하게 체크하고 상황공유를 하려는 느낌이라 좋은 듯. 다만 말을 꽤 하고 모니터를 오래 봐야해서 피로도가 조금 쌓일 수 있다. (개인적으로는 이 부분은 장점이 더 많다고 생각)
- 재택근무는 행복하다. 나는 주로 회사로 출근 많이 하는 편이긴 하다. 하지만 강제출근 vs 재택가능하지만 출근, 두 개는 느낌이 아예 다르다. 지금처럼 근무자율선택제가 유지되길 기원!
- 회사 뷰가 너무 이뻐서 좋다.
- 지정석이 별도로 없어서 오히려 좋다. 약간 카페/도서관 같은 느낌.
- 문화가 생각보다 훨씬 자유롭다. 딱딱하고 보수적인 느낌이 아니라서 좋다. (이 부분은 호불호가 갈릴수도)
- 복지가 타 회사에 비해 많은지는 잘 모르겠다. 근데 일이 (아직까지는) 재밌어서 행복.
- 출퇴근시간 자유로운거 진짜 좋은듯하다. 난 아침잠많은거+일찍 퇴근하고 싶은 거를 적절히 타협해서 주로 오전8시 근무로 설정했다. 컨디션 안좋으면 9시나 9시반으로..
- 사내에 클라이밍 동아리가 있어서 좋고, 귀여운 슬랙 채널들이 많아서 좋다. 귀여운동물들 사진 올리는 채널 덕분에 행복하다.
회사뷰를 장점으로 얘기했기 때문에 한번 올려보았다.
다만, 내가 사진을 잘 못찍고 날씨가 좋은때가 아니었어서... 예쁘게 보일지는 잘 모르겠다. 내 눈엔 이쁜 거 같다.
다 좋은데 한가지 걸리는 점은, 학교랑 병행해야된다는 점.
업무에 지장이 안가게 시간표도 짰고, 퇴근후에 고생 좀 하면 마칠 수 있도록 조정해놨다. 이미 팀 내에서 허락을 받아서 얼마전에 수강신청도 진행했다.
다만, 한창 바쁠 3학년이라... 퇴근하고 학교 스케줄 관리해야되는 거 생각하면 여간 귀찮은 작업이 아닐듯. 빨리 졸업을 해버려야겠다.
'Coding Diary > diary, 회고 및 계획' 카테고리의 다른 글
[231223] 2023년 회고, 그리고 2024년 나의 계획 (41) | 2023.12.23 |
---|---|
[221214] 2022년 회고, 그리고 2023년 나의 계획 (34) | 2022.12.14 |
[211222] 스프링과 리액트로 1인분 하기 위해 요즘 하고 있는 공부 (0) | 2021.12.22 |
[210913] ps 앞으로 공부할 방향 정리 (0) | 2021.09.13 |
[210831] 현재까지 나의 공부상황 (2) | 2021.08.31 |