프로그래밍 심리학, 제랄드 와인버그 지음, 조상민 옮김, 인사이트, 2007
(The Psychology of Computer Programming, Gerald M. Weinberg, Dorset House Publishing co.,1971,1998)
수 년에 걸쳐 관찰하면서 최고의 프로그래머는 가장 내성(introspective)적인 사람이라는 걸 알게 되었다. 그들은 자신이 만들어 낸 오류를 발견하면 문제를 야기한 정신적 과정(혹은 물리적 과정)을 검토한다. 그리고 그 과정을 바꾸려 시도한다. (98)
…일정에 착오가 생길 가능성에 대비하려 한다면 팀에 정원 외 인력을 충원해야 한다. 그러나 작업을 더 많은 사람이 분담할수록 전체 작업의 통합이 더 어려워진다는 점을 고려해야 한다. 어림잡아, 프로그래머 3명으로 구성된 팀은 작업을 통합하는 데 소요되는 시간 때문에 동등한 능력을 지닌 프로그래머 한 명이 할 일의 2 배밖에 하지 못한다.(147)
민주적으로 조직된 팀은 …구성원을 잃을 때 받는 충격을 더 잘 견디는 경향이 있다. 그런 팀에서는 팀원들이 업무를 서로 공유하고 의사 소토을 많이 하기 때문에, 필요하면 나서서 도움을 주기도 하고 떠난 사람과 함꼐 일함녀서 얻은 지식을 적용하다 보면 구성원이 빠져나간 구멍이 거의 눈에 띄지 않게 된다. 그러나 한편으로는 민주적으로 조직된 팀이 다른 형태의 팀에 비해 새 구성원을 받아들이기 더 힘든것으로 알려져 있다. 이늩 팀 구조 내에 새 팀원이 차지할 많나 분명하게 정의도니 지위 같은것이 없기 때문이다. (174)
학습 효과를 최대화하려면 학습 주체가 자신에 대한 평가를 피드백으로 받아야 한다는심리학적 원칙은 잘 알려져 있다. 쪼 잘 알려져 있지는 않지만, 지신의 성과에 대한 평가각 있는 것은 ㅇ라지만 적절한 피드팩을 ㅂ잗지 못하는 사람은 보고 내용에 모종의 변화를 주어 체계를 시험하려 한다….평가를 안 좋게 받을 수 ㅇ씨는 위험도 감수하면서 말이다.(205-6)
절대 없어서는 안 될 프로그래머가 있다면,
한시라도 빨리 그를 프로젝트에서 제거하라(202)
최근에는 소프트웨어에 대한 경험이 없는 사람도 대규모 소프트웨어 프로젝트를 성공적으로 관리할 수 있음이 분명해졌다. 즉, 문제는소프트웨어 기술의 부족이 아니라 관리 기술의 부족인 셈이다,. (230-1)
작업 환경에 따라 다른 형태의 지능적 행위를 취해야 하는 것과 마찬가지로 프로그래밍 단계에 따라 두각을 나타내는 프로그래머가 달라진다.(309)
“프로그래머를 만든다”는 표현이 예비 프로그래머에게 어떤 최고의 사고 방식을 답습시켜야 한다는 뜻은 아니다. .. 사람마다 문제 해결의 방식이 다르다…따라서 프로그래머를 강제로 다른 사람의 방식에 따르도록 하면 문제 해결력이 저하된다. 결국, 창의적 사고보다더 중요한 것이 창의적 의사소통이라 하겠다. (328)
가능하다면 코딩을 시작하기도 전에 테스트 케이스를 먼저 작성해 두는 편이 좋다.(453)