Yunseok's Dev Blog

배운 것을 적는 블로그입니다.

실용주의 프로그래머(20주년 기념판) 서평

실용주의 프로그래머는 스스로 행동을 결정하여 변화하는 사람이다.

인상깊었던 것

Topic 1. 당신의 인생이다

회사에서 회고를 매주하다 보니 자꾸 해결할 수 없는 문제에 부딪혔다. 내가 할 수 있는 게 없다고 생각하다 보니 신세 한탄만 하게 되고 점점 더 무기력해지고 팀원들도 회고를 할 때 별로 할 말이 없어 보였다. 그래서 우리가 해결하는 데 오래 걸리는 일과 당장 해결할 수 있는 일로 구분했다. 그리고 오래 걸리는 일은 신경 쓰지 않고 당장 해결할 수 있는 일에 집중해서 우리가 할 수 있는 일을 찾았다. 아주 작은 일이지만 우리가 할 수 있는 일이 있었다.

문제가 없는 회사는 없다. 그 문제를 어떻게 해결해나갈지 내가 스스로 결정하고 행동해야겠다. 그리고 사람들이 스스로 행동할 수 있도록 씨앗을 심는 게 중요하다.

Topic 3. 깨진 창문을 내버려 두지 말라

레거시 시스템에 깨진 창문이 참 많다. 이미 망했으니 더 망해도 차이가 안날 것 같다. 반대로 아름다운 곳은 더럽히기 싫다. 이미 깨진 것은 어쩔 수 없으니, 깨진 것과 아름다운 곳을 완전히 분리하여 더 이상 깨지지 않도록 방지하고 사람들이 더럽히고 싶지 않도록 만드는 게 중요한 것 같다. 물론 처음부터 잘하는 것도 중요하지만, 이미 지난 일은 어쩔 수 없다. 깨진 창문과 깨지지 않은 창문을 구분하여 청정지역을 만들고, 이 청정지역이 넓어지도록 해야겠다.

테스트도 마찬가지다. 커버리지 100%가 중요하지 않다고 하는 사람들도 많지만 난 그렇게 생각하지 않는다. 테스트가 이미 커버리지가 100%인 곳은 절대 떨어트리고 싶지 않다.

Topic 14. 도메인 언어

DSL을 만들어봤다. DSL의 예시를 많이 얘기할 수 있다고 생각했지만 생각보다 내가 사용하는 코드들에 DSL이 많았다. 예를 들어 스프링의 Controller도 DSL이었다

Topic 48. 애자일의 핵심

애자일은 상황마다 다르게 행동하는 것이다. 만약 내가 이전에 했던 방식과 똑같이 행동하고 있다면, 그것은 이전의 행동에서 배운 것이 없는 것이다. 내가 똑같이 행동하고 있는 것을 주의하자.

배운 것

  • DSL만드는 법을 배웠다.
  • 애자일은 상황마다 다르게 행동한다.

할 수 있게 된 것

  • DSL을 만들 수 있다.
  • 깨진 창문을 구분할 수 있고, 방지할 수 있다.

더 해볼 것

  • 엑터 모델
  • 배운 것을 토대로 새로운 방식을 시도하기

Sources