행복한 아빠

비자아적 프로그래밍 본문

하고싶은말

비자아적 프로그래밍

행복한아빠 2010. 1. 28. 21:35
"코드리뷰의 비밀"에서 프로그램밍에서 인지부조화 문제를 해결하기 위한 방법은 상호간의 코드리뷰라고 이야기했습니다. 그러나 여기에 약간의 문제가 있습니다.

많은 개발자들이 자신의 코드에 자아를 투영시키는 경향이 있습니다. 개발자들은 자신이 작성한 코드에 많은 애착을 갖고 자신의 코드에는 자신의 특색을 나타내는 무엇인가가 있다고 느낍니다. 실제 어떤 개발자는 코드만 보고 내 소스인지 금방 파악할 수 있다고 말하고는 합니다.

여기에서 코드리뷰 방법에 문제가 발생합니다. 일반적이 코드리뷰의 목적은 코드에 어떤 문제가 될만한 요소가 있는지 찾는 것입니다. 그런데 다른 사람이 나의 코드에서 문제를 찾는 것이 나에 대한 심판으로 여겨질 수도 있습니다. 이는 협력이 가장 중요한 프로그래밍 작업에서 사람들간의 대립과 불신을 만들 수 있습니다.


이런 경우에는 프로그래머에서 코드리뷰의 유용성을 설명하고 코드리뷰에 적극적으로 임하라고 교육시키는 것만으로는 충분하지 않습니다. 물론 교육을 받을 당시에는 그 뜻에 공감하겠지만 개발자가 자신의 코드에 자아를 투영시키는 한 다른 사람이 그 코드에서 문제점을 지적하는 일은 개발자에게 방어적인 태도를 취하게 만들는 일이며 결국 성공적인 코드리뷰가 이루어질 수 없습니다.

따라서 근본적인 문제인 자아적 프로그래밍 문화를 바꾸어야 합니다. 이것을 "프로그래밍 심리학"에서 비자아적 프로그래밍이라고 합니다.
이 책에서는 비자아적 프로그래밍을 하는 조직에서는 프로그램 작성 후 작성자가 코드를 리뷰할 사람을 찾고 적극적으로 조언을 구한다고 합니다.
비자아적 프로그램을 할 경우 우선 남에게 보여줘야 하는 코드이기 때문에 명확한 프로그램 구조를 가져야 하고 읽기 쉽게 작성하려고 노력합니다. 결국 자연스럽게 코드의 품질은 높아집니다.
또한 릴리즈 되기전 동료가 문제될 만한 버그를 대부분 찾기 때문에 릴리즈 후 발생하는 버그로 인해 개발자가 받을 수 있는 곤경을 차단하기에 개발자는 일과 팀에 대한 만족감을 높일 수 있습니다.
그 팀은 서로 코드를 읽어야 하기 때문에 다른 사람의 지식을 자연스럽게 습득할 수 있어 팀 학습능력이 뛰어납니다.

그러나 여기에서는 비자아적 프로그래밍을 하는 팀이 되기 위한 구체적인 방법은 없으며 그런 팀이 많지 않은 이유만을 설명합니다.

비자아적 프로그래밍을 하기 위한 구체적인 실천방법으로 XP(Extreme Programming)에서 이야기 하는 짝프로그래밍이 아닐까 합니다. 이 방법으로 개발을 하다 보면 프로그래밍 소스에 대한 소유권이 애매해져 자연스럽게 코드를 공유하게 되고 나 혼자만의 코드가 아니라 자아를 투영하기 어렵습니다.
또한 누군가 코드에서 문제를 발견하여 보고하더라도(또는 심하게 비판을 하더라도) 혼자 개발한 코드에 대한 문제보다 덜 상처받고 쉽게 응할 수 있습니다.

이 방법은 결국 자연스럽게 비자아적 프로그래밍이 가능하게 하고 그로 인한 열매를 얻을 수 있습니다.

'하고싶은말' 카테고리의 다른 글

난 착한아빠가 싫다  (0) 2010.02.03
짝 프로그래밍이 더 생산성이 좋은 이유  (2) 2010.02.01
비자아적 프로그래밍  (4) 2010.01.28
사람이 가장 훌륭한 도구다  (6) 2010.01.21
개발자를 괴롭히는 기술들  (3) 2010.01.11
코드리뷰의 비밀  (3) 2010.01.04
4 Comments
  • 프로필사진 roadlamp 2010.01.28 23:25 신고 코드리뷰가 중요한건 아는데
    업무 시간에 쫓기다 보니, 할 여유가 없네요.

    마구잡이로 작성하고, 테스트해서 별다른 문제 없으면 그냥 넘어가고
    또 다른일 하고, 리뷰는 꿈도 못꾸고 있어요 ㅜㅜ
  • 프로필사진 행복한아빠 2010.01.28 23:57 신고 충분히 공감합니다. 업무에 쫓기다보면 코드리뷰는 배부른 소리같을 수 있죠. 코드리뷰에서 40~75%의 오류를 잡는다는 통계가 있는데도 말이죠. 저도 중요성은 알고 있으니 실천하기 참 어렵네요.
    시작하는 좋은 방법은 짝 프로그래밍이 아닐까 합니다. 코드리뷰의 효과도 어느정도 있으니 말이죠. ^^
  • 프로필사진 알 수 없는 사용자 2010.01.29 11:52 흠,, 진짜 근데 비 자아적 프로그래밍이 가능하긴 한건지 ㅠ 짝 프로그래밍을 해도 짝끼리 뭉쳐서 방어적인 태세를 취할수 도 있는듯, ㅠ 오픈마인드가 제일 좋긴 하네요
  • 프로필사진 행복한아빠 2010.01.29 21:28 신고 짝 프로그래밍은 서로 서로 짝을 주기적으로 바꿔서 하기 때문에 그럴 염려는 크게 없을 듯 합니다. 짝 프로그래밍 문화를 정착하려면 팀 전체의 노력이 많이 필요하던군요 ^^
댓글쓰기 폼