-
페어 프로그래밍 알아보기프로젝트 2022. 5. 5. 21:06
프로젝트를 진행하면서 코드를 작성하는 데 막막함과 두려움을 느낄 때가 많다. 막상 작성을 시작하면 생각보다 두려운 일이 아니란 걸 알게 되지만, 항상 처음 마음을 다잡기까지 시간이 소요되는 편이다. 두려움을 극복하기 위해 최근 여러 방법을 시도해보는 중인데, 그러던 중 페어 프로그래밍의 존재를 알게 되었다. 먼저 페어 프로그래밍에 대해 알아보고 간단히 정리를 한 후, 직접 경험해보고 후기글을 추가할 예정이다.
페어 프로그래밍이란?
페어 프로그래밍은 '하나의 컴퓨터를 두고 동료와 함께 프로그래밍을 하는 방법'으로, 다른 말로 짝 프로그래밍이라고도 한다. 물리적으로 한 공간에서 한 컴퓨터를 사용하는 것만을 의미하는 게 아니라, 각자의 공간에서 각자의 컴퓨터를 사용하더라도 화면 공유 툴 등을 통해 함께하는 것 또한 페어 프로그래밍이 될 수 있다.
페어 프로그래밍 방법
페어 프로그래밍에는 여러 가지 방법이 있지만 드라이버와 내비게이터 두 역할을 맡아 번갈아 작업을 하는 게 범용적인 방법이라고 한다. 드라이버는 코드를 직접 작성하는 사람이다. 드라이버는 자신이 작성하는 코드에 대해 내비게이터에게 이야기해야 하고, 내비게이터의 의견에 적극적으로 응할 필요가 있다. 내비게이터는 드라이버가 코드를 작성하는 동안 옆에서 관찰자의 입장이 된다. 내비게이터는 드라이버의 코드를 검토하고, 전체적인 방향이나 구조적인 문제 등에 대한 자신의 의견을 적극적으로 공유해야 한다.
드라이버가 코드의 세부사항, 구체적이고 기술적인 것에 집중을 한다면, 내비게이터는 더 넓은 관점에서 전체적인 흐름을 생각할 수 있어야 한다. 예를 들어 드라이버가 코드 한줄한줄에 집중하다가 발생할 수 있는 버그 가능성을 놓치고 지나갈 수가 있는데, 이럴 때 내비게이터가 문제를 잡아줄 수 있다.
드라이버와 내비게이터 역할은 시간을 정해두고 번갈아가며 진행을 하는 것이 좋다. 코드의 세부사항을 생각하는 능력과 구조적인 흐름을 파악하는 능력을 고루 향상하고, 혼자 작업을 할 때보다 시야가 더 넓어지는 것을 돕기 위함이다.
페어 프로그래밍의 장점
동료에게 무언가를 배우고 싶어도, 그가 작성한 코드의 결과물만 보고는 알 수 없는 지식들이 존재한다. 동료가 이를 말로 설명해주거나 글을 써서 공유한다고 해도, 동료와 코드 작성을 함께하는 것보다 효과적이지는 못할 수 있다. 우리가 이론보다는 실습을 하면서 무언가를 체화할 가능성이 높은 것처럼 말이다.
페어 프로그래밍을 잘 활용하게 되면 서로의 지식을 공유하는 효과적인 장이 될 수 있다. 동료가 어떤 방식으로 코드 작성을 하는지 들여다볼 수 있고, 문제를 마주했을 때 어떻게 해결을 하려고 하는지 지켜볼 수 있다. 예를 들어 검색을 할 때 키워드를 어떻게 조합하는지 등 사소한 부분까지도 보고 배울 수 있다. 동료의 모습을 보면서 혹은 피드백을 받으면서, 혼자서는 느끼지 못했던 자신의 나쁜 습관 등을 인지할 수도 있을 것이다.
또한 함께 코드를 짜는 과정에서 혼자 작업을 할 때보다 팀원과 더 많은 소통을 하게 되고, 이는 자연스럽게 팀워크 향상으로 이어진다. 갈등이 생긴다면 그 자리에서 바로 이야기하며 해소할 기회가 있기 때문에 추후 큰 갈등으로 이어지지 않고, 작은 갈등에서 끝날 가능성이 높다.
잘 이용한다면 팀원들과의 커뮤니케이션 비용도 줄어들 수 있다. 예를 들어, 코딩 컨벤션이나 네이밍 규칙 등을 페어 프로그래밍을 통해 정해둔다면, 각자 작업을 하고 서로 다른 규칙 등을 통합할 때 드는 노력이 필요하지 않게 된다.
주의할 점
내비게이터와 드라이버는 서로 수평 관계를 잘 유지한 채로 빈번한 교대를 하는 게 중요하다. 한 사람이 코드를 완전히 주도하게 되면 주도하는 사람은 주도하는 사람대로 피로감을 느끼고, 따라가는 사람은 이해하지 못한 채로 시간만 흘러 지칠 가능성이 높다. 특히 실력 차이가 많이 날 때 주의해야 한다.
혼자 할 때보다 더 집중력이 요구되기 때문에 페어 프로그래밍을 할 때 느끼는 피로감이 클 수도 있다. 서로 지치지 않도록 중간에 쉬는 시간을 충분히 갖는 등 페어 프로그래밍의 효과가 떨어지지 않도록 관리하는 것이 중요해 보인다.
혼자 개발을 할 때 막연함을 느낄 때가 많다. 이렇게 막연함이나 지루함을 느끼는 순간에 페어 프로그래밍을 시도하면 새로운 인사이트를 얻을 수 있을 것 같다. 다른 사람과 함께 문제를 해결하기 때문에 심리적으로 안정되고, 코드를 작성할 때 느끼는 두려움도 조금은 줄일 수 있지 않을까 싶다. 아무래도 장점이나 주의할 점이 더 있겠지만, 우선 이 정도로 숙지를 하고 직접 페어 프로그래밍을 한 후기를 적어봐야겠다.
'프로젝트' 카테고리의 다른 글
페어 프로그래밍 후기 (2) 2022.05.08 결제 기능 - PaymentService에 구현체 주입하기 (9) 2022.04.13 2. Scale Out의 세션 불일치 문제 (2) 2021.08.11 1. Scale Up과 Scale Out 알아보기 (2) 2021.07.23