본 회고는 첫 페어프로그래밍을 하면서 느꼈던 점과 다음엔 어떻게 페어프로그래밍을 효과적으로 잘할 수 있을까에 대해 생각하며 쓴 글입니다.
우아한 테크코스 레벨 1 - 자동차 경주 게임
을 페어프로그래밍으로 이틀만에 완성시키는 것이 우테코에서 첫번째 미션이었기 때문이다.
우테코 첫 날에, 처음 보는 페어와, 처음 만나는 미션... 많이 두렵기도 했지만 본격적으로 우테코에서 소프트 스킬을 배울 생각에 너무 설레기도 했다.
페어 프로그래밍에는 여러가지 방식이 있지만 그 중에서 저희는
드라이버 & 네비게이터
방식을 사용했습니다.
정석적인 드라이버 & 네비게이터
( 네비게이터가 시키는 대로 드라이버가 작성하는 방식 )의 경우 시간이 너무 오래 걸리겠다고 판단해서 드라이버가 자신이 생각나는 대로 코딩을 하고 네비게이터가 훈수?를 두는 식으로 진행을 하였습니다.
한 명이서 드라이버의 역할을 너무 오래 해버리면 각자의 참여도가 다르다고 판단하여 드라이버와 네비게이터의 30분에 한 번씩 역할을 돌아가면서 작업하였습니다.
아래 후기 글은 라잇(페어)와 같이 작성해본 페어프로그래밍 후기 글입니다.
1) 오타를 쉽게 찾을 수 있다.
ㅋㅋㅋㅋㅋ
2) 서로 코드를 작성하고 그 코드에 대한 질문과 대답을 하면서 이유있는 코드를 짤 수 있어서 되게 좋았다.
3) 평소에 사용하지 않았던 메서드나 꿀팁들을 알 수 있었다.
4) 평소하지 않았던 방식에 대해서 알 수 있어서 좋았다.
5) 세세한 걸 상대방과 같이 이야기 할 수 있어서 좋았다.
6) 페어와 금방 친해질 수 있었고 최종 구현했을 때의 성취감은 너무 짜릿했다.폼 미춌다!!👍👍
1) 혼자서 짜는 것이 아니라 상대방을 이해하고 설득시키면서 코드를 짜기 때문에 시간이 정말 오래 걸렸다.
2) 서로 대략적으로 알고 있는 부분에 대해서 설명하고 설득하는 부분에서 많은 시간을 소모했다.(ex) MVC 패턴)
3) 머릿 속에 있는 생각들을 말로 표현하기가 힘들었다.
4) 각자 완강하게 이야기했던 부분들을 맞춰가는 것들이 힘들었다.(ex) 코드 스타일 적인 부분)
1) 문서화의 중요성
코드 스타일
이나 객체 설계
적인 부분, 기능 구현 목록
에 대해서 페어끼리 정확히 합을 맞추고 진행하였으면 좀 더 작업이 수월하였을 거 같앗다.2) 비판적인 태도
페어 프로그래밍이 끝나고 어떻게 하면 페어 프로그래밍을 할 때 서로 효과적으로 코드를 짜고 빠르게 짤 수 있을까 고민을 하고 우테코 크루원들과 잡답을 하다가
쵸파(프론트 크루)가 5일 만에 기획에서 개발까지 한 테오의 스프린트 경험
을 저에게 들려주었습니다.
테오의 스프린트는 테오님이 하시는
구글 스프린트
방식의 팀프로젝트를 의미한다.
테오의 스프린트
를 요약하자면
- 팀원들 각각 자신이 만들고자 하는 앱에 필요한 키워드, 기능들을 생각나는 대로 적는다.
- 공통된 키워드, 자주 나온 기능들을 바탕으로 자신이 만들고자 하는 앱에 필요한 기능을 정리하단다. (앱의 목적과 기획이 모두 끝)
- 팀원들 각각 자신이 만들고자 하는 앱에 와이어 프레임을 만들어본다.
- 팀원들 각자 만든 와이어 프레임에 공통된 컴포넌트와 페이지들을 조합하여 디자인 한다.
- 만들어진 와이어 프레임에 1,2에 종합된 기능들과 키워드를 적합한 페이지에 넣는다.
- 최종 와이어프레임 완성(기획 끝)
이 테오의 스프린트
를 토대로 페어 프로그래밍을 진행해보면 어떨까라는 생각이 들었다.
페어들끼리 각자 서로 프로그램이 돌아가는 순서도를 그려본다.
만들어진 순서도들을 조합, 프로젝트를 진행할 최종 순서도를 결정한다.
순서도와 기능 요구사항을 바탕으로 기능 구현 목록들을 작성해본다. 각자 만든 기능 구현 목록들을 조합, 기능 구현 목록을 결정한다.
프로그래밍할 때 필요한 메서드(구현할 기능)들을 각자 생각나는 대로 작성해보자. (네이밍이 다를 경우 합의를 보고 불필요한 기능일 경우 삭제)
개발 시 필요한 패턴이나 객체 구조 등을 결정하자.
페어 각자 원하는 객체 구조나 패턴을 정하고
비슷한 구조와 객체가 있을 경우 (공통분모)를 통합하는 식으로 객체 구조를 짜자.
( 패턴의 경우 서로 이해하는 바가 다를 수 있으므로 공통 레퍼런스를 같이 공부하고 적용해보자. )
페어와 최종으로 짠 객체 구조(패턴)에 우리가 정한 메서드들을 올바르다고 생각하는 위치에 넣자.
기능 구현 목록, 객체 구조가 모두 완성되었으니 바로 개발을 시작하자.
( 그 전에 각자 코드 스타일이나 컨벤션은 모두 맞추고 가자... )
상대방이 다 말할 때까지 기다리고 말하기
이건 아니야, 이건 맞아 이런 태도보다는 이건 어때?
, 이건 어떻게 생각해?
라고 말하기
두괄식, 수미상관 구조로 말하기
칭찬
도 많이 해주기 ❤️사실 이번이 제 개발인생에서 첫 협업이자 첫 페어프로그래밍이었습니다. 생각보다 훨씬 재미있었고 페어와 금방 친해질 수 있어서 너무나 좋았습니다.
하지만 그 과정에서 힘든 부분도 있었고 이를 개선해서 재미있게 페어 프로그래밍하고 개발했으면 좋겠다.
라잇이라는 분..대단하네요..