더북(TheBook)

페어 프로그래밍

페어(Pair) 프로그래밍은 기술적인 실행 관례라기보다는 사회적 활동에 더 가깝다. 페어 프로그래밍을 하면 팀의 정신적 에너지가 높아지고 개발자들이 서로 좀더 친밀해질 수 있다. 개발자들에게 코딩할 때 누군가 옆에서 지켜본다고 상상해보라고 하면 불편함이나 두려움을 느끼는 것이 대부분이다. 오래 전에 나 역시 그러했다. 그 불편함과 두려움의 근원이 나의 한계가 드러날 수 있다는 걱정에서 온다는 것을 깨달았다. 이러한 걱정거리가 페어 프로그래밍을 꺼리는 이유라면 극복해야만 한다. 혼자서 배우는 데는 한계가 있다. 물론 개발자들은 상당 수준의 지적 역량이 있기 때문에 혼자 배우고 싶다면 무엇이든 배울 수 있다. 문제는 시간이다. 더불어 스스로에게만 의존하면, 자신만의 좁고 편향된 생각에서 벗어날 방법이 없다.

페어 프로그래밍을 이용하면 새로운 내용을 빨리 배울 수 있다. 처음 보는 프로그래밍 언어, 전에 다루지 않았던 모듈, 테스트 주도 개발과 같은 새로운 실행 관례, 개발툴의 단축키와 같은 사소한 것부터 전혀 다른 형태의 문제 해결 방법론까지 배울 수 있다. 나 자신의 실제 역량을 파악하는 기회도 된다. 개발자들은 보통 자신이 다른 개발자들보다 더 훌륭하고 능력이 있다고 생각하기 쉽다. 다른 개발자들은 엉망인 코드를 작성하지만 나는 아니라고 생각한다. 페어 프로그래밍을 하면 우리가 작성한 코드와 아이디어에 대해 즉각적인 피드백을 받는다. 키보드로 타이밍을 하는 즉시 옆에서 지켜보는 페어 개발자의 검증을 받는다. 페어 개발자는 내가 무엇을 하는 건지 이해하지 못할 수도 있고 변수 네이밍이나 API 사용방식이나 설계에 동의하지 않을 수도 있다. 그럴 때마다 한발 물러서서 내가 내린 결정에 관해 다시 한번 생각할 틈이 생긴다. 다른 사람을 어리석다고 단정짓기 전에(실제로 그런 경우는 극히 드물다), 나 자신이 그렇게 훌륭하지 않을 수도 있음을 받아들여야 한다. 훌륭한 개발자는 다른 어떤 개발자가 보더라도 이해할 수 있는 코드를 작성한다. 페어 개발자가 나의 작업 내용에 동의하지 않거나 무엇을 하는 건지 이해하지 못하고 있다면 좋은 토론 기회로 삼아야 한다. 새로운 것을 배우거나, 색다른 접근 방법에 눈을 뜨도록 이런 기회를 놓치지 말자. 페어 개발자가 내가 방금한 것이 무엇인지 물어본다면 뭔가 작업한 것에 부족한 점이 있거나 더 나은 방법이 있기 때문일 것이다. 알고 있는 것을 공유하고 우리 주변의 개발자들이 더 나아질 수 있는 기회를 늘 찾고 활용해야 한다. 누군가를 가르치다보면 내 생각을 구조화할 수밖에 없어서 설익은 개념을 제대로 이해하고 가다듬게 된다. 그러고 나면 다른 사람도 이해시킬 수 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.