Search
👫

짝프로그래밍을 아시나요?

1. 짝 프로그래밍

짝 프로그래밍은 두 사람이 한 대의 컴퓨터 앞에 앉아서 자판을 교대로 번갈아가면서 프로그램을 같이 만드는 것입니다. 얼핏 들으면 두 사람이 한 대의 컴퓨터에서 프로그래밍을 한다는게 비효율적으로 느껴질 수 있습니다. 하지만 짝 프로그래밍을 하면 버그를 빠르게 탐지하여 버그수를 줄일 수 있고, 팀원간의 신뢰가 높아지며, 더 읽기 좋은 코드를 만들 확률이 높아집니다. 이런 결과물을 만들어낼 수 있는 이유는 짝 프로그래밍은 코드를 작성하는 과정이 서로 정말 많은 피드백을 주고 받을 수 있기 때문입니다.

짝 프로그래밍 하는 방법

짝프로그래밍은 ‘네비게이터’와 ‘드라이버’라는 역할 2개로 나뉘어서 진행하게 됩니다. 드라이버는 키보드를 직접 잡고 프로그램을 작성하는 역할입니다. 네비게이터는 우리가 지도 앱에서 보는 네비게이션처럼 전체 지도를 보며 목적지에 가는 길을 제대로 갈 수 있게 봐주는 역할을 합니다. 그래서 드라이버가 운전 중(프로그래밍)에 잘못 흘러가는 상황을 만들거나, 의문점이 있으면 드라이버에게 그걸 이야기해줘야 합니다. 드라이버가 코딩하다보면 코딩 자체의 디테일에 몰입하느라 전체적인 그림을 못보는 경우가 있을 수 있습니다. 예기치 못한 버그 사항이나 처리해야하는 예외사항, 전체 구조에 결함을 만드는 여러가지 버그를 만들수도 있는데 내비게이터가 한발자국 떨어져서 상황과 코드를 좀 더 멀리서 보고 피드백을 주는 역할을 합니다.
이 때 드라이버는 프로그래밍을 하면서 네비게이터에게 잘 가고 있는지 중간중간 말을 걸면서 물어볼수도 있고, 네비게이터가 안내를 해주면 참고해서 어떻게 드라이빙하면 좋을지 함께 고민하고 나아가는 역할입니다. 이렇게 빈번하게 피드백을 주고 받다보면 자연스럽게 혼자서는 보지 못한 부분을 빠르게 탐지하고 조정해나갈 수 있습니다. 그리고 최소 2명 이상이 이해하는 코드를 작성하다보니 자연스럽게 더 읽기 좋은 코드를 작성할 수 있습니다. 또 대화를 많이 하게 되기 때문에 서로의 커뮤니케이션 스타일이나 사고 방식을 자연스럽게 알 수 있게 되고, 그 과정에서 팀원과의 더 효율적인 소통방식을 발견할 수 있습니다. 간혹 이 때 갈등 상황이 생길수도 있는데 걱정할 필요 없습니다. 갈등은 커졌을 때 문제이지 오히려 작은 갈등을 빠르게 겪고 해결하는 경험을 한다면 오히려 서로에 대한 신뢰도가 더 커질 수 있습니다. 그래서 짝 프로그래밍을 많이 하면 팀워크가 탄탄해지는 경우가 많습니다.

짝 프로그래밍 할 때 주의할 점

이렇게 좋은 효과를 얻을 수 있는 짝 프로그래밍을 하기 위해서는 주의해야할 점이 3가지가 있습니다.
첫번째는 한 역할을 한 번에 오래 하지 않는 것입니다. 자연스럽게 서로 역할을 번갈아 가면서 하는게 중요합니다. 이를 위해서 드라이버와 네비게이터 역할을 ‘짧은 시간’을 주기로 번갈아가면서 해보는걸 추천합니다. 특히 처음해보는 입장에서는 5분정도로 짧게 드라이버와 네이게이터 역할을 맡아서 진행해보면 좋습니다. 이렇게 짧은 주기로 번갈아가면서 하면 자연스럽게 더 작은 단위로 서로 대화를 하고 피드백을 주고받을 수 있습니다.
두번째는 수평 관계를 유지하는 것입니다. 두 사람이 함께 하기 때문에 분명 실력차가 있는 경우가 있습니다. 이 때 잘하는 사람이 혼자 진도를 계속 나가거나, 잘 모르는 부분에 대해 무안을 주게 되면 다른 한 명은 점점 피드백을 줄 용기를 잃어버리게 됩니다. 분명 잘하는 사람도 버그를 만들 수 있기 때문에, 서로 수평한 관계로 대화를 해야 편안하게 궁금증이 드는 부분에 대해서 이야기를 할 수 있습니다. 그래서 서로 존중하는 마음으로 수평 관계를 유지해야합니다.
마지막으로는 문제 정의를 정확하게 해서, 요구사항을 함께 정리하는 것입니다. 짝 프로그래밍할 때 두 사람이 함께 하는 것이기 때문에 목적을 정확하게 정의하지 않으면 서로 다른 요구사항을 생각하며 코딩을 하고 이야기를 나눌 수 있습니다. 그래서 구현해야할 요구사항을 체크리스트로 미리 만들면 좋습니다. 그러면 그 결과물 하나씩 달성하기 위한 대화를 자연스럽게 하게 될 것입니다.

짝 프로그래밍을 한 단계 더 잘하는 방법

짝 프로그래밍은 다른 사람과 함께 하는 것이기 때문에 잘하기 위해서는 함께 회고를 하고 우리만의 짝 프로그래밍 하는 방법을 만들어나가면 더 효과적입니다. 실제로 짝 프로그래밍을 잘해내는 사람들은 짝 프로그래밍 시작 전, 진행 중, 진행 후 3단계에 나누어서 더 의미있는 시간을 만들기 위해 고민을 해야합니다.

1) 짝 프로그래밍 시작 전

일단은 협력할 짝 프로그래밍 대상자와 어떤 스타일로 함께 프로그래밍 할 것인지를 살펴봐야 합니다. 천천히 고민하면서 코딩을 해야하는 사람도 있고, 일단 빠르게 코딩을 해야하는 사람도 있는 것처럼 서로의 스타일을 파악하는 것은 매우 중요합니다. 이런 부분을 이야기하지 않고 시작하면 서로의 진행 방식에 답답함을 느낄수도 있습니다. 그리고 쉬는 시간과 같은 규칙도 정할 수 있습니다. 보통 이때 몇분 단위로 짝 프로그래밍할지도 정하게 됩니다. 중요한건 처음에 정한 규칙으로 시작은 하지만 짝 프로그래밍 하는 도중에 아닌것 같다면 언제든 서로의 합의하에 변경할 수 있습니다. 처음 시작을 위한 규칙을 함께 만드는 것이라고 생각하면 됩니다. 그리고 나서 짝 프로그래밍 진행을 위해 어떤 요구사항을 함께 해결할 것인지 투두리스트(todo list)를 만들면 좋습니다. 투두리스트를 함께 적으며 함께 해결해야할 문제 정의가 명확히 되면 다른 길로 새지 않고 더 효율적으로 이야기를 진행할 수 있습니다.

2) 짝 프로그래밍 진행 중

짝 프로그래밍 시작 전에 함께 스타일과 규칙에 대해 이야기 했다면 짝 프로그래밍 진행 중에 가장 중요한건 ‘편하게 이야기를 나누는 것’입니다. 너무 기본 개념이어서 ‘내가 이걸 모르면 창피할것 같다’라던가, ‘해결책이 떠오르지 않는데 이야기해도 될까?’와 같은 고민이 들더라도 서로 편하게 이야기할 수 있어야 합니다. 처음에는 막연한 생각 때문에 이야기 꺼내지 않던게 나중에 한참 프로그래밍하고 나서 문제를 발견하면 수정하는데 오랜 시간이 걸릴 수도 있기 때문입니다. 중요한건 의문이 드는 점을 빠르게 주고 받고, 그게 중요한 문제라면 함께 해결하는 것입니다. 그래서 이런 용기를 내주거나, 누군가 문제를 주도적으로 잘 해결했다면 서로 칭찬을 많이 하는 것도 좋은 방법입니다. 만약에 특정 방법이 잘 진행되지 않고 있다면, 짝 프로그래밍 중에 잠깐 멈춰서 5~10분 정도 짧게 회고를 하고 진행하는것도 좋은 방법입니다.

3) 짝 프로그래밍 후

짝 프로그래밍을 하고 나서 가장 중요한 것은 ‘회고’를 하는 것입니다. 우리의 짝 프로그래밍은 어땠는지, 하면서 어떤 점이 좋았고, 어떤 점이 아쉬웠는지를 나누는 시간입니다. 서로에게 감사 인사도 꼭 전하고, 서로에게서 배울 점 그리고 서로의 성장을 위한 이야기를 솔직하게 나누면서 자연스럽게 서로에 대한 신뢰가 함께 올라갑니다. 그리고 이런 과정이 반복되면 함께 성장하는 기쁨을 느낄 수 있습니다. 그리고 이런 회고를 통해 다음번에는 더 좋은 짝 프로그래밍 경험도 만들 수 있습니다. 만약 아쉬움이 크게 남는 짝 프로그래밍이었다면 다시 한다면 어떻게 시도했을지를 이야기 나눠보는것도 좋습니다. 그러면 다음에는 비슷한 실수를 안할 확률이 높습니다. 짝 프로그래밍 과정이 좋았던 경험이었던, 아쉬웠던 경험이었든지간에 회고를 통해 우리는 그 경험을 더 개선시켜나갈 수 있습니다.