2017년 8월 20일 일요일

실용주의 프로그래머


 IT 고전(?)인 「실용주의 프로그래머」 를 읽었다.

과거 선배들이 적극 추천을 해주어 사놓긴 했는데 드디어 읽게 되었다.

바로 전에 읽은 「조엘 온 소프트웨어」 같이 프로그래밍을 하는데에 있어서 프로그래머가 지향해야할 방법들에 대해서 기술을 하였지만 「조엘 온 소프트웨어」는 블로그인 만큼 가볍고 재미있는 문체를 사용했다면 「실용주의 프로그래머」는 원론적인 이야기가 많았다.

그만큼 지루했다는 말도 될 수 있을 것 같다. ㅋㅋ 그리고 번역과정에서 뭔가 어색한 부분이 종종 있어서 읽고 지나가도 다시 한번 읽게 되는 부분이 적지 않았던 것 같고 이 책 역시 오래전(2005년)에 쓰여진 만큼 호랑이 담배피던 시절 이야기로 잘 이해가 가지 않는 부분도 있었다.
(02학번이라 05년도 내용이면 웬만큼 지식이 있어야 할것도 같지만.... ㅡㅡ;)

암튼 당연히 하고 있는 것들도 많고, 당연하지만 실제로는 실행하지 못하고 있는 것들도 있는데 이 책에서 팁이라고 정한 부분만 나열해 본다.


  1. 자신의 기술에 관심과 애정을 가져라.
  2. 자신의 일에 대해 생각하면서 일하라!
  3. 어설픈 변명을 만들지 말고 대안을 제시하라.
  4. 깨진 창문을 내버려두지 말라.
  5. 변화의 촉매가 되라.
  6. 큰 그림을 기억하라.
  7. 품질을 요구사항으로 만들어라.
  8. 지식 포트폴리오에 주기적으로 투자하라.
  9. 읽고 듣는 것을 비판적으로 분석하라.
  10. 무엇을 말하는가와 어떻게 말하는가 모두 중요하다.
  11. DRY - 반복하지 마라
  12. 재사용하기 쉽게 만들라.
  13. 관련 없는 것들 간에 서로 영향이 없도록 하라.
  14. 최종 결정이란 없다.
  15. 목표물을 찾기 위해 예광탄을 써라.
  16. 프로토타입을 통해 학습하라.
  17. 문제 도메인에 가깝게 프로그래밍하라.
  18. 추정을 통해 놀람을 피하라.
  19. 코드와 함께 일정도 반복하며 조정하라.
  20. 지식을 일반 텍스트로 저장하라.
  21. 명령어 셸의 힘을 사용하라.
  22. 하나의 에디터를 잘 사용하라.
  23. 언제나 소스코드 관리 시스템을 사용하라.
  24. 비난 대신 문제를 해결하라.
  25. 디버깅을 할 때 당황하지 마라.
  26. 'select'는 망가지지 않았다.
  27. 가정하지 마라. 증명하라.
  28. 텍스트 처리 언어를 하나 익혀라.
  29. 코드를 작성하는 코드를 작성하라.
  30. 완벽한 소프트웨어는 만들 수 없다.
  31. 계약에 따른 설계를 하라.
  32. 일찍 작동을 멈추게 하라.
  33. 단정문을 사용해서 불가능한 상황을 예방하라.
  34. 예외는 예외적인 문제에 사용하라.
  35. 시작한 것은 끝내라.
  36. 모듈간의 결합도를 최소화하라.
  37. 통합하지 말고 설정하라.
  38. 코드에는 추상화를, 메타데이터에는 세부 내용을.
  39. 작업흐름 분석을 통해 동시성을 개선하라.
  40. 서비스를 사용해서 설계하라.
  41. 언제나 동시성을 고려해 설계하라.
  42. 모델에서 뷰를 분리하라.
  43. 칠판을 사용해 작업흐름을 조율하라.
  44. 우연에 맡기는 프로그래밍을 하지 말라.
  45. 여러분의 알고리즘의 차수를 추정하라.
  46. 여러분의 추정을 테스트하라.
  47. 일찍 리팩터링하고, 자주 리팩터링하라.
  48. 테스트를 염주에 두고 설계하라.
  49. 소프트웨어를 테스트하라. 그렇지 않으면 사용자가 테스트하게 될 것이다.
  50. 자신이 이해하지 못하는, 마법사가 만들어준 코드는 사용하지 말라.
  51. 요구사항을 수집하지 말고 채굴하라.
  52. 사용자처럼 생각하기 위해 사용자와 함께 일하라.
  53. 구체적인 것보다 추상적인 것이 더 오래간다.
  54. 프로젝트 용어사전을 사용하라.
  55. 생각의 틀을 벗어나지 말고, 틀을 찾아라.
  56. 준비가 되었을 때 시작하라.
  57. 어떤 일들은 설명하기보다 실제로 하는 것이 더 쉽다.
  58. 형식적 방법의 노예가 되지 마라.
  59. 비싼 도구가 더 좋은 설계를 낳지는 않는다.
  60. 팀을 기능 중심으로 조직하라.
  61. 수작업 절차를 사용하지 말라.
  62. 일찍 테스트하고, 자주 테스트하라. 자동으로 테스트하라.
  63. 모든 테스트가 통과하기 전엔 코딩이 다 된게 아니다.
  64. 파괴자를 써서 테스트를 테스트하라.
  65. 코드 커버리지보다 상태 커버리지를 테스트하라.
  66. 버그는 한 번만 잡아라.
  67. 환국어도 하나의 프로그래밍 언어인 것처럼 다루라.
  68. 문서가 애초부터 전체의 일부가 되게하고, 나중에 집어넣으려고 하지 말라.
  69. 사용자의 기대를 부드럽게 넘어서라.
  70. 자신의 작품에 서명하라.

댓글 없음:

댓글 쓰기