Books/실용주의 프로그래머

실용주의 프로그래머 (Day 6, 7)

devmomori 2022. 3. 25. 02:44

오늘 TIL 3줄 요약

  • 현재 사용하는 도구들을 더 효율적으로 사용할 수 있도록 습관을 개선시켜보자.
  • 테스트와 지속적인 메모, 그리고 디버깅을 통해 안정적이고 더 좋은 프로그램 설계해보자
  • 항상 작은 단계를 밟아가며 프로그래밍을 하고 너무 먼 미래를 예측하려 하지말자. 대신에 언제나 교체 가능한 코드를 작성하여 대비하자.

 

TIL (Today I Learned) 날짜
2022.03.24 - 2022.03.25



오늘 읽은 범위
3장. 기본도구 ~ 4장. 실용주의 편집증


책에서 기억하고 싶은 내용

  • 쉘 스크립트를 통해 좀 더 효율적인 프로그래밍을 할 수 있다.
  • 어느 정도 에디터를 써야 유창하다고 볼 수 있을까에 대한 과제 목록들 (마우스를 사용하지 않고 진행해보기)
  • 디버깅에 대한 사고방식; 한발짝 뒤로 물러나서 버그라고 생각하는 증상의 원인이 무엇일지 진짜로 생각해보는 것이 중요하다. 근시안의 함정에 주의하며, 표면에 보이는 증상만 고치려하지 말자.
  • 문제의 원인을 해결하는 방법 중 유용한 기법은 '누군가에게 설명하는 것'
  • 가정하지 말고 증명하자.
  • 엔지니어링 일지를 남겨보자. 파일이나 위키말고 종이를 사용해보자. 일단 한달만.
  • DBC (Design By Contract): 단순하지만 강력한 기법으로, 프로그램의 정확성을 보장하기 위해 소프트웨어 모듈의 권리와 책임을 문서와하고 합의하는 데에 초점을 맞춘다.
  • 명시적으로 검증해야 할 매개 변수가 하나라도 있다면 호출자가 검증을 수행해야한다.
  • '그런 일은 절대 일어날 리 없어.' 라는 사고에 빠지기 쉽다.
  • 모든 오류는 정보를 준다.
  • 대부분의 경우 내일은 오늘과 거의 같을 것이다. 하지만 확신하지 말자.

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

일단, 한 챕터가 밀리니 하루에 읽을 양이 상당했다. 그래도 3장과 4장에 주옥같은 내용들이 많이 담겨 있어서 많은 인사이트를 얻을 수 있었다. 하지만 정확히 이해가 가지 않는 내용들이 있어서 두고두고 봐야한다.

 

최근, Jenkins와 GitLab을 통한 배포환경을 자동으로 구축해보며 원격 스크립트를 통해 배포하기 위한 쉘 스크립트를 작성해본적이 있었는다. 이때 쉘을 실무적으로 처음 다루어보았는데 꽤나 간단하게 내가 원하는 작업을 수행할 수 있도록 도와주었다. 책에서 말하는 것처럼 쉘을 더 잘 다루게 된다면 더 효율적으로 작업이 가능할 듯 싶다. 시간내어 공부하면 좋을듯.

 

응집도와 결합도에 대한 이야기도 나오는 데 더 자세하게 공부하는 시간을 가져야겠다.

 

프로젝트를 진행하면 많은 오류 메시지들을 볼 수 있다. 이러한 메시지들을 지우기 위해 급급해 할 떄가 있는데, 근본적인 원인에 집중하기 위해 노력해야겠다. 그리고 문제 해결 후 메모하는 습관을 통해 비슷한 상황에서 빠르게 대처할  수 있는 역량을 기르자! 대부분 노션에 작성하게 되는데 가끔 '나중에 적어야지' 생각하고 까먹을 때가 있다. 책상 앞, 아이패드에 빠르게 메모하는 습관을 들여보자. (아이패드 펜을 살 때가 온것 같다.)

 

설계에 불필요하게 많은 시간을 쏟을 때가 있다. 일어나지 않을 상황이나 더 많은 기능이 추가될 것을 가정하기 보다는 작은 단위의 코드를 작성하며 프로그램을 만들어나가야겠다. 또 작성하는 코드들은 언제든 대체될 수 있도록 DRY 원칙과 ETC 원칙을 염두해야지.

 

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

- DBC 기법에 대해 좀 더 알아봐야겠다.

- 응집도, 결합도

- 나쁜 예외처리와 Best Practice 예외 처리

오늘 읽은 다른사람의 TIL