프로그래밍 심리학 (제럴드 M. 와인버그, 2008) 독후감
프로그래밍은 엄연히 인간 행동의 한 형태임에도 그런 관점에서 프로그래밍을 연구한 사람은 거의 없다. 그렇다면 프로그래밍을 인간 행위로 조명하지 않은 이유가 있었던 건 아닐까? 아마도 프로그래밍은 연구 대상으로 삼기에 너무나 복잡한 행위이기 때문에 커다란 불가사의로 남을 수밖에 없었을 것이다.
고전 중의 고전이다. 1971년에 초판이 발행되었으니 거의 40년이 된 책이다. 가끔 예를 들어서 설명하는 천공카드가 아니었더라면 옛날 책 인지도 몰랐을 거다. 프로그래밍은 사람이 한다. 하지만, 이 당연한 사실에 대한 인식이 책이 써진 40년 전이나 지금이나 같다. 아직도 유용하다. 참 슬프기도 하지.
프 로그래밍을 인간 행위, 사회 활동, 개인 행위로 나눠서 심리학적인 접근을 했는데, 어떤 자질이 프로그래머에게 필요할까? 필요한 지능은 어떤 게 있을까? 프로그램 팀은 어떻게 구성해야 할까? 등등. 발상 자체도 재미있고 한번 자신을 돌아보고 실천해 볼 것이 가득한 책이다. 그 중 나는 비자아적 프로그래밍이 가장 기억에 남는다.
다른 사람에게 코드 검토를 부탁하는 일은 생각보다 힘든 일이다. 논리의 오류나 지름길을 놔두고 내가 둘러간 길을 지적받기 위해서인데, 이런 지적에 마음 상하지 않기가 참 어렵다. 그래서 코드 검토를 부탁하는 일이 드문지도 모른다. 여기서 이런 문제를 명쾌하게 짚어 주는데 코드와 자신을 동일시하는 자아적 프로그래밍(ego programming) 때문에 이런 현상이 발생한다는 거다. 코드에 대한 비판을 감성적이지 않고 이성적으로 받아들일 수 있는 즉, 코드와 자신을 분리시킬 수 있는 이런 걸 비자아적 프로그래밍(egoless programming)이라 부른다.
코드를 지적받으면 왜 그렇게 방어적으로 변하는지 모르겠다. 나 자신도 또한 철저하게 코드와 자신을 동일시했나 보다. 비자아적 프로그래밍을 하려면 어떻게 해야 하나? XP(Extreme Programming)의 짝 프로그래밍(Pair Programming)과 같이 비자아적 프로그래밍을 자연스레 하는 방법을 도입해야 할까? 비자아적 프로그래밍을 하는 팀 분위기를 어떻게 조성해야 하나. 코드 검토를 부탁해볼까? 개발 규모가 커져서 다른 사람에게 코드 검토를 부탁하기조차 쉽지 않다. 일단은 비자아적 프로그래밍이란 단어를 마음에 담아둬야겠다. 그래도 담기만 하면 조금이라도 변하지 않을까?
Update
표지 사진 교체