All ContentsCategoryAbout

프로그래밍 심리학(The psychology of computer programming)

19 May, 2020 - book - 4 min read

book



프로그래밍 심리학

프로그래밍 심리학

제럴드 M. 와인버그

약 40년 전 제랄드 와인버그는 ‘프로그래밍도 사람이 하는 것’이라는, 당연하지만 현실에선 제대로 인정받지 못하는 문제 인식을 바탕으로 『프로그래밍 심리학』을 탄생시켰다. 프로그래밍을 둘러싼 여러 부류의 사람들이 가지는 마음의 이치를 다룬 역사적인 책이다. 프로젝트를 이끌어나가는 사람 사이의 관계뿐 아니...




프로그래밍 + 심리학

본디 책 욕심이 과한 나는, 본격적인 공부를 시작하기도 전부터 프로그래밍 관련 서적이라면 닥치는대로 사 모았다. 그렇게 충동구매 했던 많은 책들 중 하나가 ‘프로그래밍 심리학’이었다. 몇 개월을 책장에만 두고 읽을 엄두도 못 내다가 마침내 최근에서야 읽었는데, 수많은 책들 중 가장 먼저 읽게 된 이유라면 역시 제목이었다. ‘프로그래밍’과 ‘심리학’이라니, 마치 수십년간 서로를 이해하지 못 하는 이과와 문과가 조화롭게 어울리는 듯한 생경한 모습으로 다가왔다. 더불어, 아직 코드를 물 흐르듯 읽을 정도의 실력이 되지 못 하는 나는 가장 코드의 등장 빈도가 낮은 이 책을 선택한 것이다.

프로그래밍 심리학은 어떤 책인가

프로그래밍이라는 분야는 여러모로 흥미로운 분야다. 학문으로써도 그렇지만, 프로그래밍 역사에 한 획을 그은 이들 중 상당수가 아직까지 생존하고 있다는 점이 특히 그렇다. 그만큼 역사가 길지 않은데, 이 책은 약 40년 전 초판이 발행되었다. 불과 40년 밖에 되지 않은 책이 프로그래밍 세계에서는 고전인 것이다. 어찌 흥미롭지 않을 수 있겠는가. 심지어 프로그래밍 심리학의 저자 또한 아직까지 건재하여 개정판이 나올 때마다 내용을 덧붙이고 있다.

이러한 프로그래밍 세계의 고전 ‘프로그래밍 심리학’에서 시종일관 강조하는 것은, 협업 에 관한 내용이다. 예나 지금이나 사람 관계만큼 힘든 것이 없다. 그것은 이쪽 업계도 마찬가지인 것이다. 저자는 협업을 강조하는 과정에 있어서 빼먹지 않고 각자의 심리를 연관 짓고 있는데, 그럼에도 마지막에 남는 것은 심리보다는 인간관계에 대한 다양한 사례들이다. 그래서인지 개인적으로는 심리학보다 인간관계론의 비중이 크게 느껴졌다.

책에서는 대략적으로 다음과 같은 내용들을 다룬다. ‘프로그래밍을 하는 프로그래머 본인의 심리’, ‘프로그래머 사이의 관계’, ‘프로그래머와 관리자의 관계’, ‘프로그래머의 마음가짐과 태도’ 등을 다양한 사례를 곁들이며 유쾌하게 풀어내고 있다. 그리고, 역시 약 40년 전에 쓰인 책이라고 느껴질 수 있는 대목도 심심치 않게 등장한다. ‘천공카드’, ‘FORTRAN’, ‘PL/1’ 등 지금은 쉽게 접하기 어려운 용어들인데, 덕분에 겸사겸사 비루한 내 배경지식을 키울 수 있어서 긍정적으로 다가왔다.

프로그래머로서의 자세

이런저런 재밌는 옛날(?)이야기들이 대거 등장하지만, 결국 저자가 말하고 싶은 것은 프로그래머로서의 자세 라고 생각한다. 내가 이 책을 읽고 느낀 것은 크게 세 가지다.

첫째, 프로그래밍이라는 행위는 프로그래머 한 명과 컴퓨터 사이에서만 진행되는 개인적인 일이 아니라, 다수의 프로그래머와 프로그래머가 아닌 누군가가 컴퓨터를 도구 삼아 유기적으로 진행하는 삶의 한 부분인 것이다. 따라서 컴퓨터보다 사람을 먼저 생각해야 한다.

둘째, 너무 겸손한 태도도, 너무 자신만만한 태도도 좋지 않다. 특히, 과한 자신감은 집단과 멀어지게 만들고, 작은 실수도 크게 보이게 한다.

셋째, 컴퓨터는 융통성이 없기 때문에, 프로그래머는 유연한 사고를 할 수 있어야 한다. 또한, 컴퓨터는 시시때때로 앞에 앉은 사람을 한 없이 바보처럼 느끼게 만들기 때문에, 프로그래머의 가장 큰 덕목은 유머러스함과 끊임없는 동기부여다.

인상적인 대목

끝으로, 두고 두고 다시 읽으며 기억하고 싶은 인상적인 대목을 여기에 적어두려 한다.

프로그램은 사람이 만드는 다른 모든 물건처럼 명확한 수명과 활용 범위를 염두에 두고 설계되어야 한다. 수백 년 동안 유지될 수 있을 만큼 논리적인 방법으로 만든 장인의 작품처럼, 프로그램에는 과도하게 설계된 부분도 미진하게 설계된 부분도 있어서는 안 된다. -프로그래밍 심리학 p.246-

아마도 좋은 프로그래머를 만드는 요소가 훌륭한 우정을 만드는 요소와 비슷하다는 사실을 발견하게 될 것이다. 바로, 상호 관심과 개성 존중이다. -프로그래밍 심리학 p.262-

프로그래머에게는 유머감각이 필요하다. 컴퓨터는 자신 앞에 앉은 사람을 모두 바보로 만드는 기계이기 때문에 우스꽝스러운 꼴을 당한 자신의 모습을 웃고 넘길 수 없는 사람이 프로그래머로 오랫동안 버티기는 어렵다. 누군가가 말했다. 프로그래머의 주제가는 “아아아아아~(괴로워하는 신음소리)”라고. 프로그래머는 작업을 하나 마칠 때마다 자기가 저질렀던 멍청한 실수와 대면한다. 그리고 주제가의 두 번째 소절을 부른다. “하하하하~” 그러지 않고서는 광대 노릇을 계속할 수가 없다. -프로그래밍 심리학 p.284-

심리적 자세가 야기한 문제를 논할 때에는 주석문 얘기가 빠질 수 없다. 코드에 주석을 다는 목적은 읽는 이가 코드를 직접 보기 전에 적당한 마음의 준비를 하게 만들려는 것이다. 그 코드가 정확히 구현되어 있다면, 주석문은 확실히 효과가 있다. 그러나 코드가 부정확하다면, 읽는 사람의 심리적 자세가 주석문의 지배를 당하기 때문에 오류를 찾아내는 데 오히려 방해가 된다. -프로그래밍 심리학 p.303-

우리 머릿속의 잘못된 믿을들을 깨끗이 쓸어 내고, 가능하다면 실험을 통해 나온 견고한 증거들로 채워 넣을 때가 되었다. 여러 문제 중 일부라도 결국에는 해결된다는 뜻이 아니다. 그러기에는 문제가 너무 복잡하다. 그러나 언제나 완벽하게 해결될 수 있는 문제만 풀어볼 만한 가치가 있지는 않다. 사실, 우리에게 필요한 것은 정답이 아니라 그것을 찾는 과정에서 얻는 경험이다. -프로그래밍 심리학 p.484-

© 2023 intzzzero, Built with

Gatsby