달랩

짝 프로그래밍을 하면서 던지면 좋은 질문들

짝 프로그래밍을 하고 있나요? 짝 프로그래밍을 하면서 무엇에 집중하고 있나요? 여러분은 짝 프로그래밍을 통해 무엇을 얻고 싶은가요? 어떤 일이 일어났을 때, 어떤 기분이 들 때 오늘은 짝 프로그래밍이 잘 됐다고 스스로 다독이시나요?

제가 가장 중요하게 여기는 것 중 하나는 바로 “배움”입니다. 공부하는 것도 배우기 위해서고(공부와 배움의 차이점은 다음에 다루겠습니다), 생각하며 일하는 것도 일과 동료, 고객에 대해서 더 잘 알기 위해서입니다. 혁신을 꿈꾸는 우리는 아직 알지 못하는 것을 목표로 일합니다.

이 관점을 반영한 질문을 몇 개 준비했습니다. 팀에서 짝 프로그래밍을 할 때 수시로 이 질문을 던져 보세요.

  1. 만약 지금 다시 이 코드를 작성한다면 시간이 얼마나 걸릴까요?

  2. 아마 유사한 도메인이나 유사한 기술로 유사한 작업을 또 하게 될 겁니다. 이때 1번 질문의 답과 같은 속도로 할 수 있는 사람은 몇 명이 되었나요?

  3. 우리 팀 모두가 이와 유사한 성과를 내기 위한 방법으로 뭐가 있을까요?

  4. 방금 작성한 코드는 앞으로도 계속 유지보수 해야 할 겁니다. 몇 명이나 이 코드의 의도와 작동 방식을 이해하고 있을까요?

  5. 만약 방금 작성한 코드를 더 나은 방식으로 바꿔야 한다면 누가 할 수 있을까요?

  6. 방금 한 작업을 통해 배운 걸로 타인의 작업을 구체적으로 도울 수 있을까요?

  7. 구체적인 도움이 필요할 때 누구에게 어떤 도움을 받을 수 있을까요?

리스크 관리 측면에서 접근한다면 Truck Number(또는 Bus Factor)에 주목해 보세요.

Pair Programming

저는 멘토링 활동 중 하나로 짝 프로그래밍을 추가했는데, 멘티분들이 매번 흥미로운 주제를 가져와서 정말 많이 배우고 있습니다. 최근에는 PixJS란 처음 보는 라이브러리로 Snake Bites 게임도 만들었고, Node.js에서 Worker Threads를 이용해 단어 개수 세기도 해봤습니다.

저 혼자였다면 이런 걸 해볼 생각조차 안 했을 겁니다. “하면 할 수 있을 거야”란 근거 없는 막연한 생각만 갖고 있었겠죠. (영원히 오지 않을) “나중에 살펴볼 기술 목록”에 저 주제들을 넣어놓고 늘 하던 것만 반복하고 있었을 겁니다.

배움이 일반화된 커뮤니티에 속할 수 있다면 좋을 겁니다. 그리고 그게 바로 내가 많은 시간을 보내는 일터라면 더 좋을 겁니다. 어떻게 해야 내가 일하는 곳을 배움이 일반화된 조직으로 변화시킬 수 있을까요?

※ 윤석님의 짝 프로그래밍 후기: #1, #2, #3, #4, #5, #6, #7