알아두면 쓸 데 있는 잡다한 개발지식
알아두면 쓸 데 있는 잡다한 개발지식을 많은 분들에게 공유하고자 2탄으로 돌아 왔습니다.
저희 스터디(var)에서는 다양한 개발 주제를 탐구하고 공유하고 있으며
개발 주제는 개발 언어, 프레임워크에만 치우쳐 있지 않고
애자일, 디자인 패턴, DB, 개발 툴, 새로 나온 프레임워크 등 다양한 분야에 대해 탐구하고 있으니
앞으로 올라오는 알쓸개잡 포스트에도 많은 관심과 저희 스터디에도 많은 관심 가져주세요~~
저희 스터디는 언제나 새로운 분들을 환영합니다. (잡아먹지 않아요.. 편하게 들어와주세요)
이번 포스트에서는 애자일에 개발 방법론 중 하나인
페어 프로그래밍(Pair Programming) 에 대해서 알아보고자 합니다.
페어 프로그래밍(Pair Programming)
페어 프로그래밍이란 어떤걸까요?
페어라는 단어와 프로그래밍이라는 단어만 보더라도 어떤 개발 방법인지 감이 오실거라고 생각합니다.
이 사진을 보시면 더 확실히 이해가 될거 같네요
우선 페어 프로그래밍이 무엇인지 부터 알아봅시다.
페어 프로그래밍은 애자일 개발 방법론 중의 하나로 하나의 개발 가능한 PC 에서 두 명의 개발자가 함께 작업하는 것을 말합니다. 네비게이터(navigator)가 전략을 제시하고 드라이버(driver)가 실제 코드를 작성하며, 이 역할을 각자 번갈아가며 수행합니다. 짝 프로그래밍이라고도 합니다.
저는 페어 프로그래밍이라는 방법론을 처음 들었을 때 이런 생각 부터 들었습니다.
사람 두명에서 하나의 PC 가지고 하는것보다 각자 작업하는게 더 좋지 않을까?
각자 작업을 했을 때에 완성된 작업물의 개수는 1 + 1 = 2 인데
페어 프로그래밍은 1 + 1 = 1 이라니.. 이렇게 비효율적인 방법론을 왜 애자일에서 제시할까..
이러한 생각들을 해결하기 위해 페어 프로그래밍을 찾아보고
여러 문서와 페어 프로그래밍을 회고하는 블로그들을 찾아보아 정리 해보았습니다.
페어 프로그래밍(Pair Programming) 장점
오류율 감소
페어 프로그램 진행 시 오류율이 줄어드는 장점이 있습니다.
개발을 하다보면 자기 자신도 발견하지 못하고 넘어가는 오탈자나,
내 눈에는 보이지 않는 오류들이 많이 있습니다.
한 두시간 찾아 도저히 못찾겠다 싶었는데 옆에서 5분 보던 동료가 발견 했을 때
그 허탈감은 말로 할 수 없죠…
그러한 실수를 페어 프로그래밍을 진행하다보면 방지 할 수 있습니다.
실력 향상
개발자들은 어느 분야든 다 잘하려고 하지만 자신이 관심이 있고 잘하는 분야가 각자 다르다고 생각합니다.
나는 웹 쪽 지식이 많은 편이고 같이하는 동료는 DB를 잘 한다고 하면
페어 프로그래밍을 통해 서로의 더 좋은 효과를 결과물을
낼 수 있고 서로가 가지고 있는 지식을 공유하여 페어 프로그래밍이 끝났을 때
많은 지식을 쌓으며 윈윈 할 수 있게 됩니다.
또한 혼자 개발 할 때보다 같이 개발을 할 경우 옆사람과 함께라는 생각에 집중도도 올라가고 평소와 다른 긴장감을 가지며
개발에 더욱 빠져 들 수 있게 합니다. 그러다 보면 혼자 작업할 때 보다 더 좋은 퍼포먼스를 보여주기도 하죠
유지보수의 용이성
하나의 기능에 대해서 혼자 개발한다고 가정 하였을 때 그 코드를 다른 사람이 유지보수 할 일이 생기면
코드 분석에 굉장히 많은 시간을 쏟게 됩니다. 기능이 어려울 경우 더욱 시간이 많이 걸리기도 하죠
하지만 그 기능을 페어 프로그래밍을 통해 함께 고민하고 함께 작성한 코드라면
유지보수 하기 수월해지며 유지보수성이 올라가게 됩니다.
나의 페어 프로그래밍은?
페어 프로그래밍의 장점을 찾아보다 보니 처음에 왜 이걸 해야 하지? 라는 생각은
거의 없어지고 좋은 프로그래밍 방법론 같다는 생각이 들었습니다.
하지만 백문불여일견이라고 한번 해보면서 직접 경험하는게 제일 좋겠죠
다음 프로젝트 진행 시 페어 프로그래밍을 해 볼 계획을 가지고 있습니다.
물론 프로젝트 진행하는 2주 내내 진행하지는 않고 날짜를 정하고 시간을 정해서
진행 하겠죠. 진행 한 후 제가 느꼈던 부분은 다음 포스트에서 작성 해보겠습니다.
이 글을 읽으시는 많은 분들도 제 글을 통해 페어 프로그래밍에 관심이 생기셨다면
진행해보시고 의견을 많이 남겨주시면 좋을거 같습니다!!