비자아적 프로그래밍(Egoless Programming)

2013-08-07 09:33

안녕하세요. 오실장입니다.

제가 아는 개발자 분이 자신의 블로그에 포스팅한 글인데.... 개발자라면 한번 되새겨볼 부분도 있어서 소개합니다.

코드 리뷰 부분에서는 잠시 헷갈리는 부분이 있었는데, 코드 리뷰의 원래 목적보다는 다른 의도로 오용하는 것에 대한 비유로 보입니다.

그럼 아래의 원래 글을 살펴보시기 바랍니다.

<출처: http://blog.naver.com/xyz37/50175084749 > .................................................................

최근 읽고 있는 "프로그래밍 심리학"에 있는 비자아적 프로그래밍(Egoless Programming)에 대한 내용이 있다.

"자신의 프로그램이 자아의 외연이라고 진심으로 믿는 프로그래머는 프로그램에 있는 모든 오류를 찾아내려고 하지는 않을 것이다. 오히려 그 프로그램의 정확성을 증명하려고 노력할 것이다." - In 프로그래밍 심리학 p122 -

내가 만들고 있는 프로그램은 내것이 아니다. 라는 생각으로 자신의 의지를 투영시킨 프로그램을 보라는 것이다.

개발을 하다 보면 자신이 만든 스토리내에 있는 프로그램은 버그나 논리적 오류는 찾아내기가 어렵다는 것을 알 수 있다.

이와 관련한 인간의 심리적인 부분을 아래의 한 문장으로 표현했다.

"사람의 눈은 보고 싶지 않은 것을 보지 않는데 거의 무한한 재능을 지녔다." - In 프로그래밍 심리학 p122 -

또, 바로 이어서 팀 내에서 코드 리뷰(Code Review)를 강조하는 문구가 있어서 남긴다.

"동료(원문은 그)가 작성한 코드에서 남이 오류를 찾는 것은, 동료(원문은 그)에 대한 개인적인 공격이 아니라 코드를 개선하기 위함이었다." - In 프로그래밍 심리학 p124 -

코드 리뷰 한답시고 괜시리 팀원간의 불화를 일으키면 안된다는 내용인데, 예전 직장에서 프로젝트 중간에 코드 리뷰 비스무레한 일을 할 시간이 있었다.

하지만 바로 위의 상사는 자신의 의지를 다른 사람의 코드에 넣길 바랬고, 그렇게 하지 않은 개발자들을 가차없이 폄하했었다. 그 조직은 얼마가지 않아서 90% 이상이 퇴사하는 일이 발생했었다.

코드 리뷰는 매일 조금씩 하는 거지 위의 예처럼 몰아서 하는 것은 코드 리뷰가 아니고 팀워크만 저하 시키는 일이다.

<이상>

2개의 의견 from SLiPP

2013-08-07 09:48

좋은 글 감사합니다. 저도 이 글에 적극 공감합니다. 저도 이 전의 경험을 공유해볼까 합니다.

제가 지금까지 프로그래머로 살아오면서 3, 4개 팀 정도를 맡아서 리더로서 일한 경험이 있습니다. 리더로 일하면서 강조했던 부분 중의 하나가 자신이 구현한 코드를 자기 자신과 일치시키지 말라는 것이었습니다. 소스 코드는 팀 전체의 공동 소유하고, 공동 책임이라는 이야기를 했었습니다. 그런데 아무리 이 부분을 강조하더라도 팀의 문화로 만드는 과정이 쉽지 않더라고요. 특히 각각의 업무를 개인별로 분리하는 경우 이 같은 현상이 더 크더라고요.

지금까지 경험 중 가장 잘 된 경우는 짝 프로그래밍을 했을 때였습니다. 짝 프로그래밍의 경우 큰 기능 단위로 업무를 분배하지 않고, 작은 업무 단위로 업무를 분배해도 개발이 가능하더라고요. 그렇게 업무를 순환하면서 개발을 하다보니 소스 코드에 대한 인식이 개인 소유가 아니라 공유 소유라는 생각을 가지게 되고, 자신들이 구현한 코드에 대해 적극적으로 리뷰하고 개선하려는 모습을 봤습니다. 사실 이런 문화를 만드는데 많은 노력과 비용을 투자해야 합니다. 그냥 오늘부터 비자아적 프로그래밍을 하자고 하더라도 씨알도 먹히지 않더라고요.

문화를 만드는 1차적인 과정은 팀장과 같은 리더의 몫이고요. 그 다음은 팀 시작 단계에서 비슷한 생각을 가지는 개발자들을 끓어들여 팀의 문화를 만드는 것이 중요하다고 봅니다. 4,5명 정도만이라도 팀의 문화를 형성했다면 그 후에 들어오는 개발자들은 팀의 문화에 자연스럽게 흡수되는 것을 느꼈습니다. 처음 시작이 중요하다는 생각을 많이 합니다. 그리고 문화를 만들어 가는 초반 단계에 힘든 점이 있는데 리더 혼자가 아니라 팀원들과 같이 개선해 나가려는 노력을 한다면 충분히 극복할 수 있음을 느꼈습니다.

앞으로도 좋은 글 많이 공유해 주세요.

의견 추가하기