Pair - 둘 (기본 원칙)
혼자하는 프로그래밍은 배에 올라탄 한 사람이 키를 잡고 혼자 항해하는 것과 같습니다.
반면 페어 프로그래밍은 배에 올라탄 두명이 뚜렷한 역할이 부여되게 됩니다.
한명은 조타수(Driver)로 배의 키를 잡은 사람이며 코드를 '깔끔하고 논리적으로' 작성하는 역할을 하고,
다른 한명은 선장(Navigator)으로 배의 방향을 결정하는 사람이며 '조사를 통해' 코드를 어떻게 작성하는지 말해주는 사람입니다.
미국에서는 페어프로그래밍의 강점을 다음과 같이 표현합니다:
초반에 할 수 있는 실수들을 빠르게 잡을 수 있고,
역할이 분담되기 때문에 프로그래밍에 중요한 두 핵심 요소(driver, navigator)를 따로 집중적으로 공략할 수 있고,
상호간의 피드백을 지속적으로 빠르게 받을 수 있습니다.
여기서 팁을 더하자면:
Driver와 Navigator는 같은 수준에서 진행하는 것이 좋습니다.
속도보다 방향에 집중하는 것이 좋습니다.
페어프로그램 강점에 대한 쉬운 요약:
팀 전체:
네비게이터의 경우:
조사를 어떻게 하는지, 조사한 내용을 어떻게 논리적인 말로 전달하는지 여부를 배울 수 있습니다.
드라이버의 경우:
논리에 맞는 코드를 작성함으로 읽기 좋은 코드, 즉 재사용 가능한 코드를 어떻게 작성하는지 배울 수 있습니다.
코딩에서는:
드라이버는 조사를 하지 않고 네비게이터의 말을 코드로 옮기는 역할만 합니다.
처음은 수도코드로 작성하는 것을 강력하게 추천합니다.
드라이버는 (자기가 답을 안다고 생각하더라도 최대한) 네비게이터의 논리여부가 맞는지 질문을 하고 그 논리를 코드로 작성하는데 집중을 합니다.
네비게이터는 필요에 따라 인터넷 조사를 통해 논리적인 언어를 형성하여 드라이버에게 전달을 합니다.
절대로 문제를 빨리 푸는데 목적을 두지 말고, 네비게이터가 논리를 형성하는 방법과 드라이버가 논리를 이해하는 방법의 차이를 인정하고, 더 많은 대화와 토론을 통해 서로가 맞추는 연습을 하는데 목적을 두고 풀어야 한다는 것을 인지한 상태에서 진행을 해봅시다.
프로그래머에게 서치는 작업의 일부이며, 핵심 스킬입니다.
우리는 기본 원칙을 알려줄 수만 있지만 결국 각 필요한 정보마다 어떻게 검색하고 답을
찾아내는지는 직접 필요를 느끼고 경험을 통해 얻을 수 밖에 없습니다.
과하게 말하면, 코딩의 반은 서치하는데 이루어진 경우도 허다하다고 할 수 있습니다.
기본 순서:
페어프로그래밍에서 Navigator의 능력은 Driver와의 관계에서의 조절문제도 있지만
기술적으로는 서치를 얼마나 잘하냐에 달려있기도 합니다.