[우아한테크코스 6기] 1주 차 온보딩, 자동차 경주 미션 회고

,

설 연휴가 마무리되는 화요일, 곧바로 우테코 6기의 OT와 함께 10개월의 마라톤이 시작됐다 🏃🏻‍♂️ 캠퍼스는 잠실이었는데, 집과는 거리가 조금 있어서 매번 한 시간 넘게 버스와 지하철을 타고 오고가야 했다. 아침 2호선은 아직도 적응이 안 되는 것 같다. 건물에 도착해서도 캠퍼스에 들어가기까지 꽤 시간이 걸렸다. 출근하시는 다른 회사원들이랑 시간이 겹쳐 엘리베이터를 기다리는 데만 하세월 기다리고… 웬만한 인기 놀이기구 줄을 훌쩍 뛰어넘는 길이에 14층을 계단으로 가야할 지 고민도 했다. 정말 계단으로 올라가신 분들도 계셨다 🤣

🏄 온보딩

최종적으로 백엔드 분야에 80명이 선발됐고, 모두가 모여 오리엔테이션을 진행하게 되었다. 첫 주는 온보딩 기간이라고 한다. 처음 보는 크루들과 얼굴도 트고, 새로운 규칙에 적응하는 기간이다. 여러 코치들의 소개도 듣고, 힘든 일은 다 갔고 더 힘든 날이 왔다는 이야기도 듣고(…) 많은 이야기가 오고갔다. 새로운 정보들이 계속 입력되는 바람에 머리가 지끈해졌지만, 사실 우테코가 우리에게 요구하는 것은 크지 않았다. 프리코스 때처럼 알아서 잘 하거라, 프리코스는 레벨 0이었다(우테코는 레벨 1에서 5까지의 과정을 완료해야 수료한다)와 같은 미지근한 말도 듣고, 테스트는 왜 하는가? 리팩토링 경험은 왜 중요한가? 와 같이 집중해서 나의 대답을 해야 하는 질문들도 들었다.

온보딩 기간동안 코치 브리와 함께 지내게 되었다. 페어인 폴라를 비롯해서 재즈, 호기, 상돌까지 다섯명이서 꾸려나가게 되었는데, 본 지 일주일도 안 됐는데 금방 친해지게 된 것 같다. 같은 브리조인 짱수, 아토, 커찬, 시소, 타칸과도 말을 나누고 밥도 같이 먹고… 😋

💬 약속

우테코에서는 약속을 중요하게 여긴다. 9시 1분은 9시가 아니다라는 문구가 스티커로 곳곳에 붙어 있다. 무엇보다 자유로운 활동을 보장하고 장려했지만, 모든 행동에는 책임이 따른다는 말꼬리가 항상 뒤따랐다. 마감일을 지키는 게 어려울 수 있지만, 그만큼 중요하니 확실하게 하자는 생각.

실제로 데일리 미팅으로 수다떠는 게 즐거워서, 시간 가는 줄 모르고 마치고 보니 강의 시간을 넘겨 다같이 지각하는 소동(?)이 있었다. 온보딩 기간에는 이런 규칙을 계속해서 상기시켜주면서 몸에 새기는 시간이니 잘 지키도록 해야지.

👨🏻‍💻 미션, 페어 프로그래밍

매 레벨에는 미션이 있고, 대부분 페어 프로그래밍 형식으로 진행한다. 둘이서 코딩을 한다고 해서 각자 코딩을 하는 게 아니라, 하나의 컴퓨터로 둘이서 서로 토의하며 코드를 맞춰나가는 과정이다. 막상 코드를 칠 때면 보이지 않던 것들이 페어의 뒤에서는 곧바로 보인다거나, 보다 간결한 구조를 떠올리는 게 쉬워지는 것 같다. 물론 단축키나 키보드 배열 때문에 내 페어는 고생을 많이 했지만…

처음 강의를 들으면서 인상깊었던 것은 25분 안에 간단한 계산을 하는 요구사항을 가진 프로그램을 만드는 것이었다. 프리코스 때처럼 도메인, 입출력, 검증 등을 하려니 막막했고, 실제로 시간 내로 풀었다는 크루가 없었다. 그만큼 다른 크루들도 지금까지 해 왔으니까 하던 대로 자신의 코드를 짜 나갔을 것이다.

하지만.. 요구사항이 제일 중요하지 않았던가? 마감 기한 안에 요구사항을 만족하지 못했다면, 내가 클래스를 책임에 따라 분리하지 못해 찝찝한 문제보다 더 아쉬울 것이었다. 그래서 리팩토링이 필요했던 것이고, 리팩토링을 하기 쉽게 짜는 방법이 등장한 배경이 아닐까.

🚗 미션: 자동차 경주

프리코스 때 진행했던 자동차 경주를 페어 프로그래밍을 통해 진행했다. 페어는 폴라. 둘 다 시원시원하게 불만을 뱉는 스타일이고, 코드에 대한 훈수에 상처를 받지 않는 타입이라 잘 맞았다. 이 때문인지 키보드 위에서 타이핑하는 시간보다, 구조와 코드에 대해서 토론하는 시간이 더 길었다. 중요하게 생각하는 정도에 따라 코드에도 변화가 일어난다는 것, 서로 절대 포기할 수 없는 것을 상대에게 설득하는 과정도 겪으면서 코드에는 정답이 없는 걸 다시 떠올리게 되었다… 이런 내용들은 코드리뷰를 위한 PR에도 적어서 리뷰어분들이 우리의 생각을 좀 더 이해하기 쉽도록 했다. 돌아오는 건 더 많은 질문들이었지만…

🚕 자동차 경주 피드백

1단계 PR 마감이 끝나고, 네오와 함께 진행되었던 두 시간 가량의 자동차 경주 피드백 강의. 페어 프로그래밍에서 훈수를 두는(?) 사람을 네비게이터navigator라고 하고, 직접 타이핑을 통해 코드를 작성하는 사람을 드라이버driver라고 하는데, 80명의 네비게이터의 훈수를 뚫고 자신만의 코딩을 해내는 네오의 능력이 대단해 보였다. 당연하게 생각해 왔던 방법들을 제시했을 때, “지금 우선순위는 이걸 만드는 게 아니다”라고 근거와 함께 많은 네비게이터들을 잘 설득해내는 모습을 보고 코드에도 성격이 묻어날 수 있겠구나, 생각했다.

🤯 다시 시작된 코드리뷰

미션의 요구사항을 완료하고 단계에 대한 PR을 제출한 뒤, 리뷰 요청을 할 수 있다. 우테코 이전 기수들 혹은 현업에서 근무하시는 개발자분들이 리뷰어로 참여해, 1:1로 코드에 대한 토의를 진행한다. 보통은 왜 이렇게 작성했는지, 컨벤션convention이 맞지 않는 것을 묻는다. 각자의 코드를 존중하니 무슨 의도로 코드를 타이핑했는지를 많이 물어보시는 것 같았다. 나같은 경우는 질문을 굉장히 많이 받았는데, 이게 꽤나 효과가 좋아서 다음 리뷰받을 때에도 답변을 질문으로 해 달라고 하면 좋을 것 같았다. PR에 5개의 질문을 담았는데 15개의 물음표와 함께 리뷰가 올 것이라고는 상상도 할 수 없었다…

프리코스 때에도 나의 코드를 다른 사람들에게 보여주고, 다른 사람들의 코드를 많이 참고하면서 성장했는데, 이번에도 마찬가지였다. 크루들 또한 미션에 대해서 PR을 제출했고, 나 역시 크루들이 어떻게 작성했는지 확인할 수 있었다. 내가 짚고 넘어가지 못한 부분을 발견하기도 했고, 뒤통수를 얼얼하게 만드는 리뷰어분의 글들도 읽으면서 성장했다. 1차 PR을 낸 다음에 다른 크루들의 PR과 코드리뷰들을 확인하면서 인상깊었던 글들에는 눈동자 이모지👀를 남기기도 했다.

코드는 문학이다

테스트가 완벽한 코드, 재사용성과 리팩토링이 무난한 코드, 의존성이 최소화된 객체지향적 코드를 단번에 작성할 수 있다면 얼마나 좋을까. 제한된 시간과 머리로는 요구사항을 채워나가기에 벅차다. 이번 미션과 강의를 진행하면서 느낀 것 중 하나이다. 많은 에너지를 들여서 얻을 수 있는 편리함이 작다면, 코드 변경을 해야하는지 다시 생각해야 할 필요가 있다고 느꼈다.

😎 첫 번째 2단계 머지!

이번 미션은 프리코스 때 진행했던 주제이기도 했고, 페어와 많은 이야기를 나누면서 코드도 잘 다듬어졌다. 리뷰어의 질문 세례를 대답하면서 나의 주관을 이렇게 잡아나갈 수 있구나, 갈피를 잡을 수도 있어서 많은 것을 배웠다. 미션 2단계 요구사항인 Model, View, Controller 패턴에 맞춰 리팩터링하는 것은 이미 1단계 때 어느정도 완성돼 있어서, 코드를 읽을 때 편리하도록 컨벤션을 다듬었다.

1단계 때 의문스러웠던 점을 조금 더 생각해 보고, 이에 대한 답을 달아서 PR을 작성했고, 별 탈 없이 빠르게 2단계가 머지돼서 생각보다 당황스럽기도 했다. 잘 되었으니 머지가 된 건지.. 요구사항을 잘 만족했으니 머지가 된 건지.. 우선 코드에서의 궁금증은 모두 해소돼서 만족하기로 했다. 배우는 페이스를 잘 조절해야 나중에 지치지 않을 테니 1주 차는 이제 잠시 쉬는 편이 나을 것 같았다..

🥳 재밌다! 너무 재미있다

사실 작년, 알고리즘 동아리를 만들고 하루같이 바쁜 나날이었어서, 2학기가 끝나고 우테코 지원 과정도 마치니 번아웃이 강하게 왔었다. 공부를 위해서 컴퓨터에 손을 대는 일은 줄었고, 프리코스에서 공부했던 내용들도 시간이 지나면서 잊혀져가는 것 같아서 아쉬웠다. 우테코를 통해서 다시 시동을 걸게 됐고, 길게 배우면서 좋은 인사이트를 많이 얻어가고 싶어졌다.

이번 우테코에서의 1년 목표는 물론 나의 성장도 있겠지만, 많은 사람들을 만나서 나의 네트워크를 키워나가는 것이 주 목표다! 잡담을 많이 나누는 것이 경쟁력이라는 (우아한 형제들의) 말이 있지 않은가? 실컷 실패하고, 도전하면서 주관을 또렷이 가지는 시간이 됐으면 하는 바람이다!

Categories