쌩신입 개발자의 3개월 회고

노력을 즐기는 사람·2022년 7월 23일
29

시작하기 전

네이버 클로바에 합류한지 3개월이 지났다. 얼마나 많이 실패했고 실패에서 어떤 것을 배웠을까 되돌아보고자한다.

요구사항을 정확히 파악하자

팀에 합류하자마자 엄청난 레거시 프로젝트를 담당하게 되었다. 이 프로젝트가 레거시인 이유는 해당 프로젝트 개발에 참여했던 사람들이 현재 단 한명도 남아있지 않기 때문이다. 개발에 참여했던 사람들이 없다보니 코드 변경의 영향 범위 측정이 상당히 어려웠다. 심지어 인수인계 문서도 전혀 없다. 그런데 그런 프로젝트를 입사 3일 차부터 담당하게 되었다. (팀에서 의도적으로 나에게 배정한건 아니다. 어쩌다보니 ㅎㅎ)

개선의 주된 내용은 API의 제공자를 변경하는 것이었다. 그러니까 기존 A 기업의 API를 사용 했는데 B 기업의 API를 사용하게 된 것이다. 처음엔 그냥 request url을 변경하고 API 응답 모델을 조금 수정해주면 될 줄 알았다. (팀에서도 그렇게 판단해서 나에게 줬다.)

막상 일을 해보니 훨씬 복잡한 문제였다. 기존에는 A 기업의 API를 몽땅 변경하면 될 줄 알았는데, A 기업의 API 중 단 하나의 API를 교체해야했다. 심지어는 하나의 API 중 아주 일부의 값만 교체해야 했다. 결론적으로 A 기업의 API도 유지하면서, B 기업의 API를 추가로 호출해야하는 상황이었다.

나는 이 요구사항을 정확히 파악하지 못한 채 업무를 진행했다. 업무를 진행하다보니 하나씩 하나씩 진짜 요구사항을 파악하게 됐다. 결국 관계 없는 작업을 했고 두 달간 리소스를 낭비했다. 그 과정에서 작업한 내용을 배포하고 QA를 거친 후 배포 직전 정책상 배포 불가능 판단을 받고 작업 내용을 롤백하기를 반복했다.

왜 이렇게 비효율적으로 일을 하게 되었을까?

나는 스스로 대단히 수동적으로 업무를 수행했다고 판단했다. 그리고 요구사항이 뭔지 모른채로 일을 했다.
작업을 하면서도 머리 속에 항상 물음표가 떠 있었지만 그냥 되겠지라는 안일한 마음으로 코드를 짰다. 문제를 해결하기 위해서 하는 일이 아니라 누가 시켜서 하는 일이었다. 반성한다.

앞으로 어떻게 일해야 할까?

  1. 문제를 명확히 정의한다. 명확하게 정의하지 못했다면 끈질기게 물어봐야한다.
  2. 문제를 해결하기 위한 방법을 나열한다.
  3. 나열한 방법 중 베스트를 선택한다.
  4. 선택한 방법을 팀에 공유한다. 내가 알고있는 방법보다 더 좋은 방법을 팀원들이 알고 있을 수 있다.
  5. 작업을 시작한다.

이제야 이런 방식으로 일을하고 있다. 이번 정기 배포에는 작업 내용이 무사히 배포 되었다.

조급한 마음을 버리자

내가 작업한 내용이 세달 째 롤백을 반복하면서 심리적으로 힘든 시간을 보냈다. 스스로 실력이 없다고 느꼈고 내가 입사하게 된 것은 순전히 운이고 곧 나의 실력이 들통나서 쫓겨날 것 같다고 느꼈다. 나는 이 조직에 어울리지 않는 사람이고 내가 이 팀에 도움은 커녕 해를 끼치고 있다는 생각이 들었다.

최대한 빨리 작업을 많이 해서 나의 실력을 증명해야한다고 생각했다. 그런 마음을 가질 수록 일을 더 못하게 되었다. 아주 기본적인 실수를 반복하게 되었는데 PR을 머지하고 그 PR의 실수를 수정하는 PR을 머지하기를 반복했다. 그럴 때마다 발가벗겨진 느낌이었고 팀원들이 쟤는 지 코드 검증도 안하나? 라는 생각을 하지 않을까 두려웠다. (당연히 전혀 그렇지 않다.)

그러던 중 팀원들과 구글 엔지니어는 이렇게 일한다 스터디를 하며 생각을 바꿨다. 책에서는 겸손, 존중, 신뢰 를 가지고 일해야 한다고 말한다. 세 가지 덕목에 대해서 이야기할 때 나는 하나의 덕목이 더 필요하다고 말했다. 일을 잘 하려면 스스로를 믿는 마음 이 필요하다고 말하며 최근 롤백과 실수를 반복하며 겪은 심경의 변화를 고백했다. 이에 팀원들은 크게 공감하며 이렇게 말해주었다.

괜찮아요.
저희는 성찬님 오시기 전에 더 큰 장애들을 만들어 낸 적이 있어요.
성찬님을 위해서 우리가 만든 장애 중 가장 큰 걸로 하나씩 말해보는 시간을 가져볼까요?

이어서 이렇게도 말해주었다.

실력이 없어서, 경력이 없어서 실수하는게 아니에요. 사람이라서 실수하는거에요.
큰 장애 속에서 우리는 배웠고 반복하지 않기 위해서 대비하고 있어요.
제가 책임질테니 장애를 무서워하지 않았으면 좋겠어요.

우리 팀은 말로만 이런 문화를 가지지 않았다. 우리 팀에서는 어떤 PR이 배포되어 장애가 발생하면 PR 작업자의 탓이 아니다. 리뷰어의 잘못이다. 또, production 레벨의 DB에 접근해서 데이터를 전부 날려도 작업자의 탓이 아니다. 누구나 데이터를 전부 날릴 수 있게 설정되어 있는 우리 팀의 인프라가 문제이다.

팀원들의 진심어린 위로에 마음의 상처를 회복할 수 있었고 다시 신나고 자신있게 일할 수 있게 되었다. 내가 실수한 이유는 내가 부족해서가 아니라 사람이라서 그랬던 거니까.

앞으로는 나의 상황을 담대하게 공유하고자 한다.
일정이 있어서 업무 대응하기 어려우면 내일 작업하겠다고 말할 수 있는 용기를 가지고자 한다. 그런 개발자가 길바닥에 주저 앉아 장애대응을 하고 있는 개발자보다 더욱 멋지고 롱런할 수 있는 개발자가 아닐까?

끝으로

플랫폼 개발자로서 3개월이 흘렀다. 정말 좋은 팀원들을 만나게 된 것에 매일매일 감사한다.

팀원들은 15년 이상의 경력 차이가 남에도 불구하고 나를 가르쳐야할 대상으로 대하지 않는다. 동등한 개발자로서 존중해주고 열린 마음으로 나의 의견을 경청하고 수용하고 비판해준다.

이런 팀원들과 함께 일하며 무럭무럭 성장하고 싶다. 우리 팀에서 일하면 성장할 여지가 많아보인다. 지금은 레거시 프로젝트를 분석하고 개선하는 능력남의 코드를 분석하는 능력 그리고 비개발직군과 협업하는 능력 을 배양하고 있다.

이외에도 새로운 프로젝트를 빠르게 개발하는 능력 , 플랫폼 서버를 운영하는 능력, 코드를 잘 짜는 능력 등 셀 수 없을 만큼 많은 성장의 기회가 기다리고 있다.

지금 팀에서의 내일, 일주일 후, 한달 후, 일년 후, 수년 후가 너무 기대된다.
지금과 같은 마음으로 즐겁게 일하고 싶다.

profile
노력하는 자는 즐기는 자를 이길 수 없다

6개의 댓글

comment-user-thumbnail
2022년 7월 28일

진심으로 멋있습니다.
이제 막 벨로그를 시작해본 아주 초짜중에 초짜 개발자 입니다.
응원합니다

답글 달기
comment-user-thumbnail
2022년 7월 31일

우리가 만든 장애 중 가장 큰 걸로 하나씩 말해보는 시간을 가져볼까요? 라는 말에 팀 분위기가 어떤지 대략 느낌이 오네요.. 배려와 격려를 한번에.. 항상 응원하고 있습니다 형님!
항상 건강 잘 챙기시기 바랍니다 : )

답글 달기
comment-user-thumbnail
2022년 8월 4일

이번에도 역시 잘 이겨내셨군요 고생하셨습니다 성깐님
추석 때 뵙시다

답글 달기
comment-user-thumbnail
2022년 8월 25일

저도 요즘 자발적으로 시작한 레거시 리팩토링 중인데, 레거시 분석을 하다보니 서비스 대부분을 한번씩 훑고 지나가더라구요....
마지막 문장에 굉장히 공감하는데, 리팩토링으로 인해 생길 성능개선과 개인의 성장을 기대하며 열심히 하고 있습니다 ㅎㅎ

답글 달기
comment-user-thumbnail
2022년 8월 28일

저도 형님의 가치관과 생각에 감명받고 붐업하고 도망갑니다.
많이 배우도록 하겠습니다 ( _ _ )

1개의 답글