[프로그래밍 심리학 이야기/조상민]

사랑스러운 자식일수록 더 엄격한 스승을…

앞선 글에서 다뤘던 프로그래머의 프로그램에 대한 집착 즉, 프로그래밍에서 자아가 초래하는 문제를 어떻게 해결할 수 있을까요?
매가 약이라며 프로그래머들에게 네가 만든 버그를 모두 불라고 강요하는 수밖에 없을까요?와인버그는 이 질문에 대해 단연코 “No”라고 대답했습니다.

직접적인 공격이 이 문제에 대한 해결책이 될 수는 없다. 공격은 언제나 방어를 부르고, 그런 방어 자세는 우리가 없애려 노력해야 할 대상이기 때문이다. 자아의 문제는 사회적 환경과 더불어 프로그래머들의 가치 체계를 재구성함으로써 극복해야 한다.


그렇다면 와인버그가 말하는 바람직한 가치 체계는 무엇이고 어떤 모습일까요? 이를 간접적으로 엿볼 수 있는 일화가 있어 소개합니다.
 

빌은 모종의 시뮬레이터를 개발하는 업무를 맡았다. 매우 작고 함축적인 루프 하나로 충분한 규모였는데, 빌은 어느 정도 완성에 가까워졌다고 생각되자 자신의 작업을 비판해 줄 동료를 찾아 나섰다(이는 그 프로그래밍 그룹에서 표준적인 절차였다).

빌은 매럴린에게 부탁했고, 그녀는 거꾸로 빌이 나중에 자신의 코드를 검토할 때를 대비해 호의를 얻을 생각에 기꺼이 응했다. 이런 거래는 그 그룹에서 통상적인 일이었다. 사실 다른 사람에게 자신의 코드를 검토 받는 게 꼭 필요한 일임은 모두 인정했지만 왠지 비난을 받는 기분이었는데, 암묵적인 거래를 통해 그런 느낌을 어느 정도 줄일 수 있었던 것이다. 그러나 제대로 훈련 받은 프로그래머인 빌에게는 그런 거래의 보호가 필요치 않았다. 그의 프로그래밍 가치 체계에서 비밀스럽고 독점적인 프로그래밍은 나쁜 축에 속했고 공개적이고 공유된 프로그래밍이 좋은 축이었다. 그가 작성한 코드(‘그의 코드’가 아니다)에서 남이 오류를 찾는 것은 그에 대한 개인적인 공격이 아니라 코드를 개선하기 위함이었다.

때마침 빌의 컨디션이 좋지 못한 시기였던 듯, 매럴린은 빌의 코드에서 버그를 하나둘씩 찾아내기 시작했다. 그러나 빌은 보통의 프로그래머처럼 방어하는 자세를 취하는 대신에 버그나 나올 때마다 즐거운 비명을 질렀다. 마침내 그는 회의 시간에 매럴린이 겨우 13줄짜리 코드에서 버그를 17개나 찾아냈다는 놀라운 사실을 떳떳이 밝혔다. 게다가 거기서 그치지 않고 ‘오늘은 내가 코딩이 잘 안 되는 날’이라며 자기의 짧은 코드에서 그렇게 많은 버그가 발견되었음을 동네방네 떠들고 다녔다.

그 코드를 실제로 업무에 사용했을 때에는 매우 엄격한 테스트에도 불구하고 버그가 더 이상 발견되지 않았다.

 

저도 프로그래머지만 위의 빌처럼 행동하기는 쉽지 않을 것 같군요. 특히, 저렇게 사는 프로그래머가 주위에 나밖에 없다면 더욱 힘든 일이겠죠. 팀 전체가 더 나아가 회사 전체가 개방하고 공유하는 분위기가 아니라면 쉽게 정착되기 힘든 철학입니다.

 

여러분 그리고 여러분의 팀은 코드의 소유권에 대해 어떤 태도 또는 방식을 취하고 계신가요?