낙타 책의 애칭으로 사랑 받고 있는 Programming Perl에서 Larry Wall은 프로그래머에 필요한 3대 덕목을 재밌게 설명하고 있어, 마음을 되새기기 위해 메모를 해 둡니다.
나태(Laziness)
The quality that makes you go to great effort to reduce overall energy expenditure. It makes you write labor-saving programs that other people will find useful, and document what you wrote so you don't have to answer so many questions about it. Hence , the first great virtue of a programmer. 전체의 노력을 줄이기 위해 수고를 아끼지 않는 기질. 이 기질의 소유자는, 다른 사람들에게도 유용하다고 생각하는, 노동력을 절감하는 프로그램을 만들도록 하며, 같은 질문에 몇번이나 대답 않아도 되도록 문서를 작성한다. 그래서, 프로그래머의 첫 번째 미덕이다.
프로그래에게서 나태해 지기 위해서는.. 불필요한 반복 작업을 구조화하고 줄이며 재사용성을 조장하고 자동화 할 수있는 곳이 있는지 찾아 그 방법을 생각한다.
조바심(Impatience)
The anger you feel when the computer is being lazy. This makes you write programs that don't just react to your needs, but actually anticipate them. Or at least that pretend to. Hence, the second great virtue of a programmer. 컴퓨터가 게을러질 때 느끼는 분노. 이 기질의 소유자는 지금 있는 문제에 대응하는 프로그램에 그치지 않고, 향후 발생할 수 있는 문제를 감안한 프로그램을 만든다. 적어도 그렇게 하려고 노력한다. 그래서 프로그래머의 두 번째 미덕이다.
여기서 느끼는 프로그래머의 감정은..
- 서버가 노는 꼴을 보지 못해 사람의 일을 없애고 시스템이 하도록 하며
- 느린 응답속도를 못봐 성능 개선을 꾀하고
- 예측해서 아키텍처를 만들고
- 대안 요소가 어떤 것이 있는지를 찾고
- 변경되는 부분과 그렇지 않은 부분을 파악하고
- 그래서, 요구에 유연하게 대응할 수있는 구조를 만들게 된다.
자만심(Hubris)
Excessive pride, the sort of thing Zeus zaps you for. Also the quality that makes you write (and maintain) programs that other people won't want to say bad things about. Hence, the third great virtue of a programmer. 천벌을 내릴 정도의 과도한 자존심. 또는 다른 사람들에게 부끄럽지 않은 프로그램을 만들려고 또한 유지하려는 기질. 그래서 프로그래머의 세 번째 미덕이다.
이런 기질을 가능케 하려면 다음과 같은 노력을 해야한다.
- 기능마다 구조를 만들고 유지 관리하기 쉽게 하고
- 자긍심을 느끼는 코드를 만들려고 노력하며
- 테스트도 설계에 포함시키고 불필요한 코드는 줄이고
- 구조를 만들면 자동화하는 방법이 없는지를 항상 생각하고
- 쓸모있는 문서를 만들며, 지속적인 업데이트를 해 살아있는 문서를 제공한다.
잉여력을 위해서 시간을 확보하고, 예측을 해서 문제를 줄이고, 자신감을 가지고 책임을 질 줄 알며 남에게 부끄럽지 않는 프로그래머가 되어야 한다. ^^