1장. 실용주의 철학
소제목
- 고양이가 내 소스코드를 삼켰어요
- 소프트웨어 엔트로피
- 돌멩이 수프와 삶은 개구리
- 적당히 괜찮은 소프트웨어
- 지식 포트폴리오
- 소통하라!
1장 실용주의 철학에서는 실용주의 프로그래머가 어떻게 일반 프로그래머와 다른지에 대해 설명한다.
1. 고양이가 내 소스코드를 삼켰어요
가장 큰 약점은 약점을 보일 것에 대한 두려움이다.
문제가 발생했을 때, "고양이가 내 소스코드를 삼켰어요" 라는 답변은 실용적이지 않다. 자신이 맡은 일에 책임을 지고, 자신이 저지른 실수에도 책임을 질 줄 알아야 한다.
모르는 것은 모른다고 솔직하게 말하고 문제가 발생한 부분은 어설픈 변명 대신 대안을 제시하라.
2. 소프트웨어 엔트로피
소프트웨어는 여러가지 물리 법칙을 무시하지만 엔트로피는 대부분의 경우 적용된다. 소프트웨어를 그대로 방치하면 엔트로피는 점점 커져, 결국 무질서한 소프트웨어가 될 것이다. 작은 문제점을 발견하면 즉시 이를 해결하라.
3. 돌멩이 수프와 삶은 개구리
전쟁을 마친 군인이 마을에 들어가 먹을 것을 요구하려 했지만, 마을 주민들은 긴 전쟁 때문에 식량이 거의 떨어졌다. 마을 주민들은 군인들에게 음식주는 것을 거부하고 모르는 척했다. 결국 군인들은 물에 돌멩이를 넣고 끓이기 시작했다. 이에 호기심을 갖고 한 마을 주민이 뭐하는 것이냐고 물어봤다. 군인들은 수프를 끓인다고 대답하며, 당근이 하나 있으면 더 나은 수프가 될 것이라고 말했다. 마을 주민 한 사람은 당근을 가져왔고, 여기에 호기심을 가진 또 다른 마을 주민이 다가와 뭐하는 것이냐고 묻자 군인은 수프를 끓이는데 돌멩이와 당근 뿐이라며 감자가 있으면 더 나은 수프가 될 것이라 말했다. 이 말을 들은 마을 주민이 감자를 가지고 왔고, 점점 하나씩 더해 수프, 고기, 당근, 감자 등이 들어간 훌륭한 수프가 완성되어 마을 주민들과 나눠먹게 되었다.
처음에 호기심을 주는 것으로 시작해, 부담을 주지 않는 화법으로 동료들에게 도움을 요청하는 것이 프로젝트를 성공으로 이끄는 좋은 방법이다.
4. 적당히 괜찮은 소프트웨어
한 두가지 기능이 빠졌으나 지금 당장 사용 가능한 프로그램과 일 년 뒤에 사용 가능한 모든 기능을 갖춘 프로그램 중 어떤 것을 선택하겠는가? 대부분의 사람이 전자를 택할 것이다. 완벽하지 않더라도(사실상 완벽한 소프트웨어를 만든다는 것은 거의 불가능하다) 빠르게 사용자에게 서비스를 제공할 수 있는 소프트웨어가 더 좋은 소프트웨어일 가능성이 높다.
5. 지식 포트폴리오
자신의 기술 스택을 넓히기 위해 노력하라. 적어도 일 년에 한 개의 프로그래밍 언어를 학습해라. 그리고 분기당 한 권의 기술 서적을 읽고, 익숙해지면 비기술 서적까지 범위를 넓혀라.
6.소통하라!
팀으로 일하던, 혼자 일하던 소통은 언제나 발생한다. 자신이 말하려는 바를 청중을 고려해 전달하고, 아름답게 전달하라. 문서를 꾸미는 것을 불필요한 것으로 여기지 말라.