Books/실용주의 프로그래머

실용주의 프로그래머 TIL (Day 3,4)

devmomori 2022. 3. 22. 00:49

오늘 TIL 3줄 요약

  • DRY 원칙과 ETC (easier to change)를 따르자
  • 예광탄 개발 방법
  • 추정하기

 

TIL (Today I Learned) 날짜
2022.03.20 - 2022.03.21

오늘 읽은 범위
2장 실용주의 접근법


책에서 기억하고 싶은 내용

1. DRY 원칙과 ETC

DRY를 따르지 않으면 똑같은 것이 두 군데 이상에 표현될 것이다. 하나를 바꾸면 나머지도 바꿔야 함을 기억해야 한다. 하지만 모든 코드의 중복이 지식의 중복은 아니라는 것을 알아야한다. 예를 들어, 코드가 동일하지만 표현하고자 하는 지식(목적)이 다를 때다. 각각 서로 다른 것을 검증하지만 우연히 규칙이 같은 것 뿐.

 

스스로 자꾸 물어보자. '내가 방금 한 일이 전체 시스템을 바꾸기 쉽게 만들까?, 어렵게 만들었을까?' 파일을 저장할 떄도, 테스트를 쓸 떄도 버그를 수정할떄도!

2. 예광탄 개발 방법

소프트웨어 개발을 과녁 맞히기에 비유하고는 한다. 예광탄이란 총알이 밝은 줄무늬의 궤적을 남기는 것인데, 군인들에게 사격과 동시에 발사된 예광탄을 통해 조준을 재조정할 수 있다. 실제 상황에서의 실시간 피드백을 의미한다. 프로젝트에서도 이 원리는 마찬가지이다. 프로젝트를 완성하기 전에 환경이 변한다는 것을 거의 장담할 수 있다.

예광탄 개발 방법의 장점은 다음과 같다.

 

  1. 사용자가 뭔가 작동하는 것을 일찍부터 볼 수 있다.

  2. 개발자가 들어가서 일할 수 있는 구조를 얻는다.

  3. 통합(Intergration) 작업을 수행할 기반이 생긴다.

  4. 보여줄 것이 생긴다.

  5. 진행 상황에 대해 더 정확하게 감을 잡을 수 있다.

 

3. 추정하기

무엇을 묻고 있는지 이해하라. 코드와 함께 일정도 반복하여 조정하라


오늘 읽은 소감? 떠오르는 생각?

항상 DRY 원칙과 ETC를 염두하며 코드를 짜야겠다. 이를 통해 추후 요구사항이 늘어나도 유지보수가 더 간단해질 수 있다. 항상 모든 코드가 교체될 수 있다는 사실을 기억하며 당장의 코드 수정에 급급하지말자.

 

직교성에 대한 이야기도 나오는데, 의존성, 응집성에 대한 이야기이다. 컴포넌트들이 서로 상호 의존적이라면 어떠한 기능을 수정하기 위해 많은 컴포넌트들을 수정해야 한다. 컴포넌트들을 나누고 특정 기능을 바꾼다면, 몇 개의 모듈이 영향을 받을지에 대한 답변은 하나이다.

 

프로젝트 일정 혹은 요구사항이 얼마나 많은 시간이 걸릴지 추정하는 것이  굉장히 어렵다고 느껴지는데, 그저 대략적인 일정을 말하는 것이 아니라 요구사항을 확실히 확인하고 우선순위를 나열하여 먼저 테스트를 해봐야한다는 것을 알게되었다. 또한 반복적인 연습이 필요한 듯

 

궁금한 내용 또는 잘 이해되지 않는 내용

- 도메인 언어와 관련된 주제는 어려웠다..

오늘 읽은 다른사람의 TIL