짝 프로그래밍.
신기방기한 프로그래밍의 세계.
이글은 코딩호러의 이펙티브 프로그래밍 책 내용 중 일부 내용이다.
핵심은 두 개발자가 하나의 컴퓨터 상에서 일을 하는데 있다. 둘 다 키보드와 마우스를 가진다. 어느 특정 시점에서 한 사람은 운전을 하고 다른 한 사람은 길을 알려 준다. 이러한 역할은 한 시간마다, 혹은 어떤 식으로든 정해진 시간마다 바뀐다.
운전사는 코드를 입력하고, 내비게이터는 해결해야 할 문제와 다음에 작성해야할 코드의 내용을 고민하면서 동시에 운전사가 입력한 코드를 읽고, 확인하고, 철자 검사도 하고, 코드의 에러 여부를 검사한다. 운전사가 실수를 저지르면 문제를 해결할 수 있는 사람이 두 명이나 존재하고, 특히 그 중에서 한 명은 좋은 해결책을 가지고 있는 경우가 대부분이다.
두 사람이 각자 서로 다른 전문분야를 가지고 있을 거라는 장점 이외에도, 이러한 과정은 서로의 기술이 서로에게 전달되게 하는 장점도 있다. 한 사람이 다른 사람에게 어떤 기법을 전하거나 문제를 임시적으로 해결하는 기술을 눈앞에서 보여줌으로써 특별한 교육효과를 갖게 되는 것이다.
이런 과정을 밟으면 어떤 코드의 내용을 완전히 숙지하고, 그것이 왜 그런 식으로 작성 됐는지 제대로 이해하는 사람이 팀 안에 두명이나 존재하게 된다.
이러한 코드는 다른 사람이 바로 옆에서 지켜보고 있는 동안 작성 됐기 때문에 한 사람이 작성한 코드에 비해 더 좋은 품질을 가지고 있을 가능성도 높다.
또한 이런 코드는 나중에 유지보수와 관련된 문제를 일으키는 버그나 임시 변통의 코드를 포함하고 있을 가능성 역시 매우 낮다.규모가 큰 팀에서는 매 주마다 짝을 바꿔서 다른 사람과 짝을 이루게 하는 것이 가능하다.
이런 과정은 개발자들이 서로의 생각을 공통의 언어인 코드를 통해 논의하게 만들기 때문에 엄청난 장점이 있다.우리는 이런식으로 일 하는 것이 혼자서 개별적으로 코딩하는 것보다 느리지 않다는 사실도 발견했다.
짝 프로그래밍을 통해 코드는 빠르게 작성되고 일단 작성된 다음에는 누가 다시 살펴보지 않아도 된다.
그리고 설령 코드에 변경이 필요한 순간이 오더라도 코드를 변경할 수 있는 사람이 두 명이나 더 있다.
'프로그래밍' 카테고리의 다른 글
TDD(Test Driven Development) (0) | 2020.03.10 |
---|---|
CDN이란(Content Delivery Network: 컨텐츠 전송 네트워크) (0) | 2019.11.06 |
프로그래머의 특징. (0) | 2019.04.26 |
대칭키 AES256 = C# + Objective C(ios) + PHP + JAVA(Android) + Perl + Javascript + Python (0) | 2019.04.25 |
당신은 나아가고 있는가? (0) | 2019.04.25 |