PairProgramming을 통해서 배우고 있는 것이 매우 많다.
PairProgramming을 통해서, 상대방이 어떤 사고의 과정을 거쳐서 프로그래밍을 하는지 엿볼 수 있다. 보통 전문가나 시니어와 같은 팀에서 일을 한다고 해도, 그들의 결과물만을 보고 감탄하거나 동경하는데서 그친다. 또는 그 결과물에 담긴 품질을 내 결과물에도 구현하기 위해 목표로 삼고 노력한다.
하지만 전문가는 초심자와 멘탈 모델이 다르다. 초심자가 보지 못하는 단서(cue)들을 볼 수 있고, 다른 전략(strategy)을 사용한다. 때문에, 초심자가 아무리 노력한다고 해도, 결과물만을 들여다 봐서는, 전문가가 어떻게 그 결과물을 만들어냈는지 그 사고 과정, 그 멘탈 모델을 들여다볼 수 없다.
그런데 PairProgramming을 할 때는, 전문가의 사고 과정이 드러나게 된다. 만들어가는 과정을 실시간으로 함께 하기 때문에. 그 과정에서, 전문가가 어떻게 생각하는지, 어떤 것을 알아채는지, 어떤 접근을 하는지를 파악할 수 있어서, 훨씬 효과적으로 학습할 수 있다.
꼭 전문가가 아니더라도, 짝이 서로 다른 접근법, 다른 노하우, 다른 강점을 가지고 있을 수 있기 때문에, 서로 배울 점이 있을 것 같다.
전문가 입장에서는, 짝과 같이 프로그래밍을 하면서 자신의 접근법에 대해 좀 더 명확한 이해를 할 수 있게 된다. 마치, 빠른 기차를 타고 갈 때는 미처 인식하지 못하던 풍경이, 천천히 자전거를 타고 갈 때는 보이는 것처럼, 자동적이고 무의식적으로 행하던 접근, 알아채던 단서들을 찬찬히 하나씩 조망하게 되면서, 의식의 차원으로 끌어올릴 수 있다.
페어를 하면서, 나는 당연하다고 여겼던 것들이 짝에게는 당연하지 않다는 것에 새삼스럽게 놀란다. 나는 별 감흥이 없었던 것들이, 짝이 '우와, 이렇게 접근할 수도 있군요!'라고 발견해주면, 그게 당연한 것이 아니라 계발된 전문성의 요소라는 것을 깨닫는다.