[Book Review] Pragmatic Programmer
얼마전, 구청 도서관에서 책을 빌려 실용주의 프로그래머라는 책을 처음 접하게 되었다. 우선, 실용주의 프로그래머는 효율적인 코드 작성과 유지보수, 재사용성을 높혀주는 개발 방법론이다. 이 도서를 읽으면서 어떻게 좋은 품질의 코드로 개선할 수 있을까를 배울 수 있었던 것 같다. 다른 분들이 업로드한 게시물도 참고하면서 다시 한번 봐야겠다.
실용주의 철학
첫번째 챕터에서는 실용주의 프로그래머로 성장하기위해 도움이 되는 여러가지 철학들이 나와있다.
어떠한 일이 발생했을 때 전문가 답게 처리하는 능력, 정직하고 솔직함으로 이슈에 대한 변명거리를 만들지 말고 사실을 인정하여 대안을 제시하는 것이 다른 개발자분들의 수고를 덜어주는 일이라는 것. 매번 스스로의 지식을 투자를 하면서 리스트를 피하고 검토하는 시간이 필요하다는 것이다. 스스로의 지식을 투자한다는 것은 아래와 같다.
📌 지식 포트폴리오 Tips!
1. 매년 새로운 언어를 최소 하나 배워라 (각 언어마다 서로 다른 능력의 ‘맛’이 있다고 한다.)
2. 기술서적을 분기마다 하나씩 읽어 지식을 가지치기해 넓혀라
3. 비기술 서적도 있고 세미나나 모임에 참여해 적극적으로 행동해라
4. 다른 환경에서도 실행해보라
5. 트렌드를 놓치말고 인터넷을 이용해라
물론 가장 중요한 것은 자신이 알고 있는, 또는 얻은 지식에 대해 비판적으로 분석하는 능력이 필요하다. 이것이 메타 인지인가..?
실용주의 접근법
두번째 챕터는 실용주의 프로그래머로서의 목표를 위한 여러가지 제안들이 나와있다. (개인 Version)
- DRY 원칙 : 어떠한 지식의 한 조각도 중복성을 가지면 안되며 모호하지 않은 단 하나의 표현을 가져야 한다.
- 직교성 : 모듈간의 결합도를 줄여 생산성을 높일 수 있는 재사용 가능한 환경을 만들어야 한다.
- 예광탄과 프로토타입 : 여러가지로 예광탄을 써보고 정확성을 맞추자. 여기서, 프로토타입과 예광탄의 차이는 쓰고 버릴 코드인지 아니면 골격이 되는 코드인지의 차이다.
- 추정 : 추정을 하기전에 미리 생각해보는 습관을 기르자. 점증적 개발(위험 관리)에 도움이 될 것이다.
코딩을 하는 동안 우리가 해야할 일
실질적으로 코드를 작성하면서 실용적인 방법으로 프로그래밍하는 것에 대해 나와있다.
먼저, 자신이 열심히 치고 있는 코드가 어떻게 돌아가는지, 내가 무엇을 하고 있는지 명확히 인지하는 의도적 프로그래밍 습관을 길러야 한다. 사실은 늘 “그렇지” 하면서도 막상 상황이 되면 못했던 자신을 반성하게끔 한다. 그외에도 중요한 몇가지 제안들이 나와있다.
- 코드의 품질을 높이기 위해서는 지속적인 코드 리뷰가 필요하다.
- 테스트 주도 개발(TDD)를 통해 적극적인 코드 품질 안정화를 하는 것도 중요하다.
- 요구 사항 분석과 프로그램 명세화를 통해 전반적인 이해로 효율적인 리팩터링을 하는 것도 해결방안이다.
실용주의 팀
거의 마지막에서는 실용주의 접근법의 팀 버전으로 소개된다.
- 형편 없는 코드를 방지하지 말고 바로 고쳐야 한다는 깨진 창문을 피해라
- 항상 프로젝트를 예의 주시하며 둔감해 하지 말고 큰 그림을 기억하라
- 팀원들과의 끊임 없는 소통이 중요하다
- 자동화와 기능적으로 분리된 팀으로 구축하라는 관리자 측면의 말도 있었다.
마지막으로, 실용주의 프로젝트에 대한 제안이 나와있었다.
- 가차없는 테스트 : 자주 일찍 자동으로 테스트하라. 테스트 하면서 내가 무엇을 테스트하는 지 명확하게 인지하라. (단위 테스트? 유효성 검증 테스트?)
- 결국 모두 글쓰기 : 소스 주석에 나오지 말아야할 것과 나와야 할것을 소개했다.
- 소스코드 주석에 나오지 말아야 할 것 : 리비전 기록, 파일 목록, 파일 이름, export 함수
- 소스코드 주석에 나와야 할것 : 코드 생성자나 소유자의 이름
그 외 알아두면 좋을 몇가지 내용
- 청중과의 소통을 돕기 위한 WISDOM
- 실용주의 프로그래머 체크리스트
- 실용주의 프로그래머 Tips 70
- 실용주의 프로그래머 Gitbook