본문 바로가기

Thinking about development

실용주의 프로그래머를 읽고...

실용주의 프로그래머
국내도서
저자 : 앤드류 헌트(Andrew Hunt),데이비드 토머스(David Thomas) / 김창준,정지호역
출판 : 인사이트 2014.03.28
상세보기

코딩 이외에 개발적인 방향성 혹은 소양을 쌓기 위해서 짬날 때마다 책을 한 권씩 읽기로 하였다. 첫 번째로 완독 한 책은 실용주의 프로그래머이다. 

 

이 책의 서문에는 효율적이고 생산성 높은 프로그래머가 되고 싶어 하는 사람들을 대상으로 쓰여있다고 기술되어있다. 또한  챕터 주변에 Tip들이 쓰여 있으며 이  Tip을 기준으로 내가 간직하고 싶은 내용을 포스팅할 것이다.


실용주의 프로그래머 Tip 4. 깨진 창문을 내버려 두지 말라.

'깨진 창문' (나쁜 설계, 잘못된 결정, 혹은 형편없는 코드)를 고치지지 않은 채로 내버려 두지 말라는 내용이다.

 

운전을 하다가 돌이나 어떠한 파편 같은 것에 유리창이 맞아 실금이 갔다고 예를 들어보자. 실금을 조금 이따 고치 지자 고치자 차일피일 미루다 보면 그 실금은 계속해서 길어지며 결국 운전에 방해가 되는 정도까지 커지기 마련이다.

 

프로그램도 마찬가지이다. 깨진 창문을 발견하고 즉시 고치지 않는다면 그것은 일종의 바이러스와 같아서 프로젝트 전체에 영향을 주는 상황이 발생할 수 도 있다. 


실용주의 프로그래머 Tip 8. 지식 포트폴리오에 주기적으로 투자하라

  • 매년 새로운 언어를 최소 하나를 배워라
    • 몇 개의 서로 다른 접근법을 알면 사고를 확장하고 판에 박힌 사고에 갇히는 걸 예방
  • 기술 서적을 분기마다 한 권씩 읽어라
    • 습관이 들면 한 달에 한 권씩 읽는 것으로 하기!
  • 다른 환경에서 실험해보라
    • 윈도만 가지고 일을 하였다면 유닉스를 갖고 놀아보라

실용주의 프로그래머 Tip 9. 읽고 듣는 것을 비판적으로 분석하라

일고 듣는 것에 대해서 언제나 비판적으로 생각해보자

앞서 말한 자신의 지식 포트폴리오에 대해서 정확한 지식을 채워 넣고 블로그나 기타 매체가 항상 옳은 것은 아니기에 너무 맹신하는 자세는 버리도록 하자!


실용주의 프로그래머 Tip 22. 하나의 에디터를 잘 사용하라

하나의 에디터에 대해서 능숙하게 사용할 수 있다면 텍스트를 조작할 때 생각이 멈추는 시간을 방지하기 때문에 꼭 하나의 에디터에 대해서는 마스터하도록 하자

https://www.youtube.com/watch?v=qn1soztN7k4


실용주의 프로그래머 Tip 22. 모듈 간의 결합도를 최소화하라

모듈 간의 결합도가 높아지게 된다면 하나의 모듈이 수정될 때 연관 모듈이 함께 수정되기 마련이다. 이러한 이유로 디미터의 법칙을 사용하여 모듈 간의 결합도를 최소화 하자

결합도 낮추기 : 디미터 법칙

디미터 법칙이란 객체의 내부 구조에 강하게 결합되지 않도록 협력 경로를 제한하자
낯선 자에게 말을 걸지 말고 오직 인접한 이웃에게만 말을 걸자!

https://jwdeveloper.tistory.com/247?category=830367

 

오브젝트를 읽고

Getter Setter의 캡슐화 위반 getFee 메서드와 setFee 메서드는 Movie 내부에 Money 타입의 fee라는 인스턴스 변수가 존재하는 사실을 퍼블릭 인터페이스에 노골적으로 드러낸다. 추측에 의한 설계 전략 - ��

jwdeveloper.tistory.com


실용주의 프로그래머 Tip 41. 언제나 동시성을 고려해 설계하라

직선형 코드에서는 엄밀하지 않은 프로그래밍으로 이끌리는 전제들을 남발하기 쉽다. 하지만 동시성을 염두한다면 더 주의 깊게 생각하는 프로그래밍을 할 수 있다.

 

예를 들어 스레드를 쓰는 프로그래밍은 몇 가지 설계상의 제약을 받지만 이러한 제약은 우연에 맡기는 프로그래밍과 싸우는 좋은 영양소가 된다.


실용주의 프로그래머 Tip 44. 우연에 맡기는 프로그래밍을 하지 말라

우리는 우연에 맡기는 프로그래밍, 어쩌다 한번 잘되는 프로그램을 성공으로 생각하지 말아야 한다. 우연에 맡기는 프로그래밍이 아닌 의도적인 프로그래밍을 해야 한다.

 

의도적으로 프로그래밍하기

  • 언제나 자신이 무엇을 하고 있는지 알기
  • 익숙하지 않은 기술을 사용하지 않기
  • 계획을 세우고 그것을 바탕으로 진행하기
  • 모든 가정을 문서로 남기기

실용주의 프로그래머 Tip 47. 일찍 리펙터링하고 자주 리펙터링하라

리 펙터 링은 언제나 바로 지금이 최적기이다.

 

하나 비즈니스 로직에 강하게 묶여있는 경우 리펙토링을 함으로써 위험이 따를 수 도 있다.

그로 인해서 리펙토링은 항상 신중하고 조심스럽고 천천히 진행해야 한다.

 

이에 대한 몇 가지 팁이 있다.

  1. 리 펙터 링과 새로운 기능 추가를 동시에 하지 말라
  2. 할 수 있는 한 자주 테스트를 돌려본다.
  3. 단계를 나누어서 신중하게 작업한다.

실용주의 프로그래머 Tip 55. 생각의 틀을 벗어나지 말고, 틀을 찾아라

어려운 문제가 발생했을 때 해결의 실마리가 될 수 있는 몇 가지 팁을 제공한다.

  • 더 쉬운 방법이 존재하는가?
  • 현재 중요하지 않은 기술적 문제에 정신이 팔려있진 않은가?
  • 왜 이것이 문제인가?
  • 문제를 풀기 어렵게 만드는 것이 무엇인가?
  • 반드시 이 방법으로 해결해야 하는가?
  • 반드시 해야 하는 일인가?

실용주의 프로그래머 Tip 67. 주석에서 가장 중요한 정보 중 하나는 저자의 이름이다

꼭 최종 수정자일 필요는 없고 소유자 이면 된다.

이러한 방식을 사용하면 소스코드에 대한 책임감이 올라가기 때문에 꼭 사용해야 한다.

 

나 또한 누군가를 막연하게 따라 하다가 코드에 내 이름을 넣곤 하는데 이것이 책임감을 표현하는 것이었다니!

앞으로도 이러한 형식을 지키되 나의 코드 서명이 부끄럽지 않도록 더 노력해야겠다.