뒤로가기
1년 전의 나에게

April 22, 2022

essay

안녕, 오늘 입사 첫날이지? 양복 입을까 후드 입을까 30분 고민하다가 결국 셔츠에 청바지 입고 왔을 거다. 정답이었어. 팀 사람들 대부분 후드인데 혼자 양복 입고 왔으면 좀 어색했을 거다. 참고로 나는 지금 맨투맨에 청바지를 입고 있어. 복장에 신경 쓰는 건 첫 주까지더라.

노트북 받고 개발 환경 세팅하는 데 하루 종일 걸렸지? Node 버전 맞추고, .env 파일 받고, Docker 띄우다가 에러 나고. README에 "이 순서대로 하면 됩니다"라고 적혀 있는데, 3번 항목에서 바로 에러가 나서 멘붕 왔을 거다. Docker Desktop 버전 문제였는데, 그걸 혼자 찾느라 두 시간을 쓰지 마. 옆에 앉은 시니어한테 바로 물어봐. "이거 어떻게 해요?" 물어보는 게 아직 어색할 거다. 그 사람 집중하고 있는 것 같아서 방해하는 것 같고, 이런 기본적인 걸 모르면 무능해 보일까 봐 걱정되고.

한 가지 말해줄게. 그 사람 진짜 좋은 사람이야. 지금 얼굴이 무표정한 건 집중하고 있어서 그런 거고, 물어보면 항상 잘 알려줘. 하던 일 멈추고 내 화면을 보면서 같이 에러를 읽어줘. 1년 후에 그 사람이 제일 고마운 사람이 될 거다. 이 편지를 쓰는 지금도 그 시니어 옆자리에 앉아 있어.

첫 PR에 대해서#

첫 PR 올리는 데 3일 걸릴 거다. 버튼 색상 하나 바꾸는 건데 3일. 지금 듣기엔 말이 안 되지? 근데 그렇게 된다.

코드 어디를 바꿔야 하는지 찾는 데 하루. 프로젝트 구조가 처음이니까 파일이 100개 넘는데 어디가 어딘지 모르겠고, 글로벌 검색으로 해당 텍스트를 찾았는데 그게 상수 파일인지, 컴포넌트인지, 스타일인지 헷갈리고. 바꾸고 나서 다른 데 영향 없는지 확인하는 데 하루. 이 버튼이 다른 페이지에서도 쓰이는 건 아닌지, 공용 컴포넌트인지, 이 페이지에만 있는 건지. PR 설명 쓰고 올리는 데 반나절. "이 PR은 무엇을 왜 변경했는지" 영어로 쓸지 한국어로 쓸지도 고민하고.

느린 거 아니야. 다 그래. 코드베이스가 낯설면 버튼 하나도 무섭다. 지금의 나도 새 프로젝트 들어가면 처음 며칠은 비슷해. 다만 찾는 속도가 빨라졌을 뿐이야.

리뷰가 올 거다. 코멘트 7개. 처음에는 7개나 달렸다고 놀랄 텐데, 그건 문제가 많다는 게 아니라 관심을 가져준다는 뜻이야. 리뷰 안 받는 것보다 훨씬 낫다. 코멘트 하나하나 읽으면서 "아 이런 것도 신경 써야 하는구나" 하고 배우는 게 많을 거다. 접근성(a11y) 관련 코멘트가 있을 텐데, 버튼에 aria-label을 달아야 한다는 내용이야. 그때 처음 알게 되는 개념인데, 이게 나중에 꽤 큰 도움이 돼. 1년 후에는 접근성을 먼저 챙기는 습관이 생겨 있을 거야.

점심시간이 어색한 기간#

처음 한 달은 점심시간이 제일 긴장된다. 누구랑 먹을지, 뭘 시킬지, 대화 주제를 뭘로 할지. 11시 반쯤 되면 슬슬 신경이 쓰이기 시작해. 혼자 먹으면 "혼밥 하는 신입"으로 보일까 봐 불안하고, 같이 먹으면 대화에 끼어들 타이밍을 모르겠고. 다들 사내 이야기나 이전 프로젝트 이야기를 하는데, 맥락을 모르니까 그냥 웃고만 있게 된다.

걱정 안 해도 돼. 한 달만 지나면 자연스러워져. 그리고 혼자 먹는 날도 생기는데, 그것도 괜찮아. 혼자 먹으면서 유튜브 보는 게 편한 날이 있거든. 개발팀 사람들은 대부분 그 감각을 이해해. 매일 같이 먹자고 하는 사람도 없고, 혼자 먹는다고 서운해하는 사람도 없어.

점심 때 기술 이야기 나오면 모르는 단어가 엄청 많을 거다. "쿠버네티스", "카프카", "테라폼", "gRPC" 같은 거. 프론트엔드랑 직접 관련 없는 것들인데, 뭔지도 모르면서 고개를 끄덕이겠지. 나도 그랬어. 괜찮아. 1년 후에도 쿠버네티스가 정확히 뭔지는 모르지만, "컨테이너 오케스트레이션 도구"라는 한 문장 정도는 말할 수 있어. 그 정도면 충분해.

실수들에 대해서#

스테이징 환경이랑 프로덕션 환경을 헷갈려서, 스테이징에 올려야 할 걸 프로덕션에 배포하는 일이 생길 거다. 입사 2개월 차쯤. 금요일 오후에. 하필 금요일이야. 식은땀이 날 거다. 심장이 쿵쿵 뛸 거고, 손이 떨릴 거다. 근데 CI/CD 파이프라인이 잘 되어 있어서 롤백이 금방 된다. 5분이면 돌아가. 팀 리드가 "괜찮아, 다들 한 번씩은 해"라고 할 텐데, 위로가 안 되겠지. "나는 왜 이런 실수를 했을까" 자책할 거다. 실수한 당일은 퇴근하고 나서도 계속 생각날 거다. 주말 내내.

근데 그 실수 덕분에 배포 프로세스를 확실히 이해하게 돼. 어떤 브랜치가 어디로 가는지, PR 머지 후 파이프라인이 어떤 순서로 도는지, 스테이징과 프로덕션의 환경 변수가 어떻게 다른지. 실수 전에는 그냥 버튼 누르면 나간다고만 알았는데, 실수 후에는 전체 흐름이 머리에 들어온다. 값비싼 수업료였지만 효과는 확실했어. 1년 후에는 배포할 때 무의식적으로 브랜치를 두 번 확인하는 습관이 생겨 있어.

코드 리뷰에서 울 뻔한 날#

3개월차쯤에 큰 피처를 맡게 된다. 사용자 프로필 페이지. 여러 섹션이 있고, 각 섹션마다 편집 모드가 있는 꽤 복잡한 페이지야. 혼자 맡는 첫 번째 큰 피처라서 열심히 했다. 일주일 동안 밤 9시까지 남아서 코드를 쳤어.

리뷰를 올렸는데 코멘트가 23개 달릴 거다. 스물세 개. 알림이 계속 와서 세다가 지칠 정도. 대부분 "이 부분은 왜 이렇게 했나요?"라는 질문인데, 3개월 차 눈에는 "다 틀렸다"로 읽힌다. "이 상태 관리 방식은 적절하지 않은 것 같습니다", "이 컴포넌트는 책임이 너무 많습니다", "이 useEffect의 의존성 배열을 확인해주세요." 빨간 줄이 23개. 화장실에 가서 잠깐 멍하니 서 있었지.

1년 후에 깨닫게 되는 건데, 그때 받은 리뷰 내용이 지금 내 코딩 습관의 90%를 만들었다. "컴포넌트가 너무 많은 걸 알고 있다"는 코멘트에서 단일 책임 원칙을 배웠다. "이 상태는 여기서 관리할 게 아니라 부모에서 내려주는 게 맞다"에서 상태 끌어올리기를 배웠다. "이 useEffect는 정리 함수가 필요하다"에서 클린업의 중요성을 배웠다. "이 함수는 컴포넌트 밖으로 빼도 되지 않을까요?"에서 순수 함수의 개념을 배웠다. 다 그때 리뷰에서 배운 거다.

23개 코멘트가 공격이 아니라 투자였다는 걸, 그때는 몰랐을 거다. 23개나 써준 건 그만큼 시간을 쏟아준 거야.

비교하지 말라는 건 어렵지만#

같은 시기에 입사한 동기가 있을 거다. 백엔드 개발자인데, 그 사람이 빠르게 적응하는 것처럼 보일 거다. 경력이 있는 사람이거든. 첫 주에 바로 피처를 올리는 걸 보면서 "나는 아직 환경 세팅도 못 했는데" 할 거다. 비교하게 될 텐데, 출발선이 다르다는 걸 기억해. 비교해봤자 자기 페이스가 흔들릴 뿐이야.

6개월쯤 지나면 "나는 왜 아직도 이런 것도 모르지?" 하는 시기가 온다. 이걸 "정체기"라고 부르더라. 매일 같은 일을 반복하는데 성장하는 느낌이 없는 시기. 무섭겠지만 정상이야. 거기서 꾹 참고 계속 하면 어느 날 갑자기 "어, 이거 알겠는데?" 하는 순간이 온다. 계단처럼.

지금의 내가 해줄 수 있는 말#

1년 후에 너는 팀에서 프론트엔드 피처 하나를 온전히 맡아서 설계부터 배포까지 할 수 있게 돼. 기획서를 받으면 컴포넌트 구조가 머리에 그려지고, 어떤 라이브러리를 쓸지 판단할 수 있어. 새로 들어오는 인턴한테 온보딩을 해줄 정도가 된다. 첫날에 Node 버전 맞추는 것도 못 하던 사람이.

완벽한 개발자는 아니야. 아직도 모르는 게 산더미고, 시니어한테 질문하는 일이 많고, 코드 리뷰에서 배우는 게 더 많다. 근데 "성장하고 있다"는 건 확실해. 느리지만 확실해.

첫날의 긴장감을 기억해. 1년 후에 그 긴장감이 그리워질 때가 있다. 모든 게 새롭고, 모든 게 배움이던 그 감각. 지금은 좀 무뎌졌거든. 루틴에 익숙해지면 새로운 자극을 일부러 찾아야 해. 그게 좀 아쉽다.

그러니까 첫날을 즐겨. 어색하고 불안하겠지만, 그게 시작이니까.

추신: 회사 근처 골목에 김치찌개 맛집이 있다. 간판이 허름해서 안 가게 생겼는데, 꼭 가봐. 두부 김치찌개 7,000원. 1년 후에도 거기 다녀. 아, 가격은 7,500원으로 올랐다.