2월 8일에 있었던 OT가 끝나고, 본격적으로 우테코 생활이 시작되었다. 어제(이미 자정이 지나버려서 그저께가 되어버렸지만) 있었던 OT에서는 교육 소개, 코치진 소개, 우아한형제들 전사교육팀이 리드하는 아이스브레이킹 시간, 교육에 임하는 자세에 대한 포비의 한말씀이 있었다. 여러가지 다양한 활동이 있어서 지루하지 않은 OT였고, 한편으로는 OT만 들어도 앞으로의 과정이 쉽지만은 않겠구나라는 생각이 들기도 했다.
여담으로 기존에는 잠실에 있는 루터회관에서 백엔드와 프론트엔드 모두 진행했다고 들었는데, 이번 4기는 프론트엔드는 그대로 루터회관에서, 백엔드는 선릉에 새롭게 마련된 캠퍼스에서 진행된다고 한다. 개인적으로 살짝 아쉬운 점은 나에게 많은 도움을 주었던 선배가 우아한형제들에서 일하고 있어서 백엔드가 루터회관을 사용했다면 오랜만에 같이 점심 먹으면서 이런 저런 얘기를 나누기 쉬웠을거라는 정도? 그리고 2월의 모든 과정이 코로나 상황으로 인해 비대면으로 진행된다는 점도 아쉬웠다. 아무리 원격 시스템이 잘 되어있다고 하지만, 사람과 면대면으로 소통하는 것 만은 못한데다 집에만 갇혀 있는 것이 답답하게 느껴질 것 같다.
앞으로 4월 초까지 약 9주간 Level 1 과정을 진행하게 된다는 이야기를 들었다. 일정표를 살펴보니, Level 1 과정의 앞쪽은 프리코스에서 했던 과제들을 페어 프로그래밍, 리뷰어들의 코드 리뷰와 같은 과정을 거치면서 다시 해 보고, 중반부터는 새로운 미션을 진행하면서 프로그래밍 능력을 향상시키는 과정이었다.
과제의 내용 자체는 어렵지 않은 것 같은데, 기존에 익숙하지 않았던 페어 프로그래밍이나 코드 리뷰와 함께 진행해나가야 한다는 점이 신선했다. 특히 코드 리뷰는 그렇다 치고, 페어 프로그래밍이 굉장히 색다르게 다가왔는데, 페어 프로그래밍에 대한 설명을 듣고 코치인 준과 공원이 하는 페어 프로그래밍 예시를 보면서 기존에 내가 대학에서 팀 프로젝트를 하면서 했던 것은 그저 분업이지 전혀 협업이 아님을 깨달았다!
기존에 협업이랍시고 내가 진행했던 프로그래밍은 각자 파트를 나눠서 해당 부분에 대한 코드를 각자 짜오고, 충돌하는 부분을 모여서 조율하면서 하나의 프로그램으로 만드는 방식이었다. 나는 이 방식도 충분한 협업이라고 생각했는데, 페어 프로그래밍에 대한 설명과 예시를 듣고 나니 전혀 아니었다.
우테코에서 진행하는 페어 프로그래밍은 2인 이상의 팀원이 하나의 페어를 이루어서 코딩을 진행하는데, 하나의 컴퓨터에서 페어가 함께 프로그래밍을 진행한다. 코드를 작성하는 사람이 드라이버(Driver), 다른 한 사람(또는 3인 이상일 때는 그 이상)이 내비게이터(Navigator)의 역할을 맡아서 작업을 진행한다. 그리고 작업을 진행하면서 페어간에 역할을 수시로 변경하는 것이 핵심이었다.
나는 같은 백엔드 크루중에 '연로그'(우테코에서는 서로간에 닉네임을 사용한다)와 페어가 되었다. 처음에 페어가 되고 나서 서로 깃허브부터 팔로우 했는데, 연말부터 잔디가 무성히 자라 있는걸 보니 프리코스 이후로 커밋을 하나도 하지 않은 내가 부끄러워졌다...
페어를 이루고 처음에는 함께 코딩을 할 환경을 세팅하는 것이 먼저였는데, 그나마 다행인 것은 나나 연로그나 맥 유저가 아닌 윈도우 유저였기 때문에 OS의 차이에서 오는 불편함은 없다는 점이었다. 다만, 대면으로 페어 프로그래밍을 했다면 원격 관련된 세팅을 할 필요가 없었을 텐데, 비대면으로 하게 되면서 처음 써보는 IntelliJ의 code with me 플러그인을 설정하느라 조금 애를 먹었었다.
페어 프로그래밍은 신기했다. 개인적으로 내가 내 자신의 코딩 스타일중에 개선해야 할 부분이라고 생각했던 것이 작업을 시작할 때 생각을 구체화 하기 보다는 추상적으로 떠올린 아이디어만으로 일단 코드부터 작성하고 본다는 점이었는데, 페어 프로그래밍을 하면서는 무작정 타이핑 하는 것이 아니라 서로 간에 의견을 공유하면서 상대의 동의를 구한 뒤에 코딩을 시작하는 점에서 나에게 꼭 필요한 브레이크가 되는 느낌이었다.
그리고 비록 하루밖에 하지 않았지만 페어 프로그래밍을 하면서 좋았던 점이, 시야와 사고의 폭이 넓어진다는 점이었다. 서로 코드를 짜면서 놓치는 부분들을 지적해 줄 수 있었고, 각자 프로그램 구조를 만들거나 코드를 작성하는 방식이 다른데 서로의 방법을 비교하면서 더 좋은 쪽을 취사 선택할 수 있다는 점이 굉장한 장점으로 느껴졌다. 아직은 익숙하지 않아서 이런 장점이 더 극대화되지 못한 것 같지만, 몇번 더 진행하다 보면 더 좋은 시너지가 날거라고 생각한다. 물론 페어로 프로그래밍 하다가 싸우거나 하는 일은 없어야겠지.
(연로그는 어떻게 생각할지는 모르겠지만) 어쨌든 한나절간의 짧은 페어 프로그래밍은 성공적이었던 것 같다. Level 1의 첫 번째 과제로 Junit을 이용한 단위 테스트 학습, 문자열 덧셈 계산기를 통한 TDD/리팩토링 학습, 프리코스때 해봤던 자동차 경주 게임 구현 이라는 과제가 나왔는데, 나와 연로그는 빠르게 문자열 덧셈 계산기 까지 완료하고 자동차 경주 게임을 구현하기 시작한 상태로 하루를 마무리했다. 생각보다 빠른 속도로 진행이 되고 있는 것 같아서 만족스럽다.
내일은 따로 수업은 없는 것 같은데 아마 페어 프로그래밍을 위주로 진행하지 않을까 싶다. 금요일까지 과제를 완성해야 하기 때문에 조금 더 효율을 높여서 진행하고, 리팩토링 과정에서 오늘 내가 생각해 본 몇가지 패턴들에 대해서 연로그와 이야기를 나누어 보는 것이 좋을 것 같다.
그리고 페어 프로그래밍을 아무래도 처음 해보는 데다가, 그동안 대학교에서 진행했던 모든 프로젝트에서 내가 팀장을 맡아서 이끌어 왔기 때문에 뭔가 주도적으로 하려는 습관이 배어 있어서 혹여나 페어를 배려하지 않는 코딩을 할 수도 있겠다는 생각이 들었다. 그러지 않도록 생각하고, 또 생각하면서 작업을 진행해야겠다.