개발 노트/주절주절

페어 프로그래밍(Pair programming)을 경험하는 중에 작성하는 글

hectick 2022. 9. 6. 18:53

페어 프로그래밍이란?

페어 프로그래밍이란 애자일(Agile) 개발 발법론 중 하나로, 하나의 개발 가능한 PC에서 두 명의 개발자가 작업하는 방법이다. 네비게이터(navigator)가 전략을 제시하고 드라이버(driver)가 실제 코드를 작성하며, 역할을 각자 번갈아가며 수행한다. 짝 프로그래밍이라고도 한다.

 

 

--------------

 

 

페어 프로그래밍이란 용어는 사실 오늘 제대로 알게 되었는데,

나와 친구가 현재 진행중인 프로젝트를 협업하는 방법과 유사한 점이 많아서 신기해서 포스팅한다.

 

 

--------------

6월 말 쯤이었을까, 나를 포함한 친구 셋이서 교내 공모전에 나가기로 결정 했다.

프론트는 1명, 백은 2명이서 맡게 되었다.

백에서 사용하는 언어로는 자바와 파이썬이 후보였는데, 파이썬을 이용해 장고로 개발하기로 결정했다.

 

하지만, 나는 파이썬이라는 언어에 익숙하지 않은 사람이다. 

원래 C, C++, JAVA 같은 언어에 익숙하고, 소괄호와 중괄호로 블럭을 구분 하는 것에 익숙한 사람이다.

그리고 무의식적으로 문장의 끝에 꼭 세미콜론을 찍는다.

지난 1학기엔 과제로 GO 언어를 사용했었는데, 과제를 할 때마다 매번 문법이 헷갈려서 꼭 구글링으로 확인해보곤 했다.

GO는 그래도 제어문이나 반복문의 형태가 C랑 유사하기라도 했지, 파이썬은 GO보다 더 낯선 상황이었다.

 

하지만 왜 장고(Django)로 개발하기로 했느냐???

1. 스프링 말고 다른 프레임워크를 경험해 보고 싶었다.

    서로 다른 프레임워크간의 공통점과 차이점이 어느정도 있는지 궁금했다.

2. 장고는 단기간에 빠른 속도로 웹개발이 가능하다.

    팀원 모두 다른 일과 이 프로젝트를 병행하는 상황었기 때문에 시간을 효율적 분배해서 개발하는게 중요했다.

3. 백엔드를 같이 맡기로 한 다른 친구가 동아리에서 장고를 공부하고 있던 중이었는데, 나는 이를 우리 프로젝트에 바로 바로 적용시키면 효율 적일 것이라 생각했다.

    나도 옆에서 줏어먹기 식으로 같이 공부할 수 있는 건 덤이다.

 

 

페어 프로그래밍을 하게 된 계기

아무튼 위에 구구절절 적은 내용의 요약은 한마디로 "나는 파이썬 노베인데 장고로 개발해야 해서 큰일남" 이다.

장고로 프로젝트를 하기로 정한 뒤로, 나는 무작정 vs code로 장고와 가상환경을 설치했다.

부랴부랴 장고 프레임워크가 무엇인지에 대한 개론 영상을 한두시간 봤다.

 

우리는 매번 구글미트로 회의를 진행했는데,

첫 회의는 친구가 구글미트로 자기 노트북 화면을 중계하면서 기본적인 설정과 앱 만들기를 했던 것 같다.

나는 머릿속에 있는 내용을 코드로 구현하기엔 서투를 수 밖에 없는 상황이었기 때문에, 우리가 대화를 통해 정한 내용은 친구가 타이핑을 하는 방식으로 진행했다. 나는 앱에서 url mapping설정 하는 방법, http method 요청을 받아서 처리하는 함수를 만드는 방법, 파이썬 문법 등을 실시간으로 볼 수 있었고, 궁금한점은 바로바로 물어볼 수 있었다.

 

다음 회의에서는 직접 내가 보면서 배운 것을 실천하고자 내가 코딩을 맡았고, 바로 바로 친구에게 피드백을 받을 수 있었다. 우리는 자연스레 이러한 방식으로 코드를 짜는 사람을 때에 따라 바꿔가며 회의를 진행하게 되었다.

 

 

내가 느끼는 페어 프로그래밍의 장점

내가 느꼈던 가장 큰 장점은, 다른 친구가 실시간으로 코드를 타이핑하고 장고 프레임워크를 사용하는 걸 보면서, 장고란 무엇이고 어떻게 사용하는지에 대한 감을 익힐 수 있었다는 것과, 내가 코드를 타이핑 하는 차례에는 내가 친구에게 바로 피드백을 요청할 수 있다는 것이다. 덕분에 금방 장고와 파이썬에 익숙해질 수 있었다.

 

그리고, 집중이 진짜 잘된다.

둘이 계속 입을 털기 때문에 쉬는시간 없이 2시간 동안 스트레이트로 계속 회의한 일도 많았고, 점심먹고 회의를 시작했는데 정신차리니 늦은 저녁을 먹을 시간이 된 적도 있었다. 

하지만 어떤 일이든 오래하면 집중력이 떨어지는 건 당연한 일이다.

둘 중 어느 한명이라도 집중력이 떨어진 날은 금방 회의를 중단하고 쉬는 시간을 갖거나, 다음 회의를 기약하기도 해야 한다.

 

또, 팀원 모두 코드에 대한 이해도가 높아진다.

실제 작성된 모든 코드들은 둘이 동시에 작업한 것이나 마찬가지이다.

따라서 이해하지 못하는 코드가 존재하지 않는다. 코드는 둘 사이의 대화와 즉각적인 피드백을 토대로 작성되었기 때문이다.

우리는 매 회의 전에 누가 코드를 작성할지 네이버 돌림판을 돌렸는데, 누구라도 당장 코드를 이어 작성할 수 있는 상황이었기 때문에 돌림판을 돌리는 긴장감과 재미도 쏠쏠했다. 

 

코드 오류를 잡기 쉽다는 장점도 있다.

프로그래밍을 하다보면 내가 짠 코드에서는 죽어도 어디서 오류가 났는지 모르겠는데, 남이 짠 코드에서는 오류를 금방 찾는 상황이 종종 생기는 걸 모두 경험해 봤을 것이다. 페어 프로그래밍의 경우에는, 한명이 코드를 치면 다른 한명은 실시간으로 코드를 보면서 문법적 오류를 찾아낼 수 있다.

 

 

VS code로 페어 프로그래밍 하는 법 : Visual Studio Live Share

우리는 페어 프로그래밍이란 것의 존재를 모르고 시작했고, 그저 우리가 협업하던 과정이 페어 프로그래밍이었단 걸 자연스레 알았기 때문에, 따로 페어 프로그래밍 툴을 사용할 생각을 하진 못했다.

하지만 구글링 하는 과정에서 페어 프로그래밍을 도와주는 툴이 있다는 것을 알게되어 한번 관련 링크를 첨부한다.

https://visualstudio.microsoft.com/ko/services/live-share/

 

Visual Studio Live Share: 실시간 코드 공동 작업 도구

쌍 프로그래밍, 코드 검토, 기술 인터뷰 등을 위한 실시간 공동 작업 코드 편집기입니다.

visualstudio.microsoft.com