Published on

노마드코더 북클럽 실용주의 프로그래머 TIL 세번째

Authors

2022년 3월 23일 TIL

오늘 TIL 3줄 요약

  • 일반 텍스트를 활용하자.
  • 현재에 만족하지 말고 생산성을 올릴 수 있는 기능(셸 스크립트, IDE의 확장 등)을 찾고, 만들어 쓰자.
  • 생산하는 모든 것에 VCS를 적용하자.

오늘 읽은 범위

  • 3장. 기본 도구 (128/477 ~ 169/477)

책에서 기억하고 싶은 내용을 써보세요.

  • 실용주의 프로그래머로서 우리의 기본 재료는 나무나 쇠가 아니라 지식이다. (130/477)
  • 모든 소프트웨어는 작성되자마자 레거시가 된다. (132/477)
  • 언제나. 혼자서 한 주짜리 프로젝트를 진행하는 경우일지라도, 나중에 '버리기로 한' 프로토타입일지라도, 심지어 여러분이 작업하는 것이 소스 코드가 아닐지라도, 모든 것을 버전 관리 아래에 둬라. (146/477)
  • 기술의 전당에서는 남을 비난하기보다 문제를 고치는 데에 집중해야 한다. (151/477)
  • 디버깅에서 이진 분할 활용
    • 중간 즈음에서 스택 프레임을 하나 골라서 값이 정상이지 확인한다. 정상이라면 그 위의 프레임들을 확인해야 하고, 아니라면 그 밑의 프레임들을 확인해야 한다. 다시 이진 분알을 반복한다. (157/477)
    • 데이터 세트를 둘로 나누고, 각각을 프로그램에 넣었을 때 문제가 발생하는지 살펴보라. 문제가 발생하는 가장 작은 데이터 세트를 만들 때까지 나누기를 반복하라.(157/477)
    • 현재 릴리스에서 실패하는 테스트를 만들어라. 문제가 없었던 버전 중 가장 최근 버전과 현재 버전 사이에서 중간 정도에 위치한 릴리스를 골라라. 테스트를 수행한 수, 결과에 따라 어느 쪽을 탐색할지 골라라. (158/477)
  • 발굽 모양을 보면 말을 생각해야지 얼룩말부터 떠올리지 말라. OS는 아마 망가지지 않았을 것이고, select도 아마 괜찮을 거다. (160/477)
  • 놀라운 버그를 마주쳤을 때, 단순히 그걸 고치는 것을 넘어서 왜 이 문제가 더 일찍 발견되지 않았을까 생각해 봐야 한다. 버그를 미리 잡을 수 있도록 단위 테스트나 다른 테스트를 수정할 필요가 있는지 고민해 보라.(162/477)
  • 엔지니어링 일지를 남겨 보라. 파일이나 위키말고 종이를 사용하라. 글씨를 쓰는 것은 키보드를 두드리는 것과는 다른 무언가 특별한 것이 있다. 일단 한 달만 써 보고 어떤 이득을 얻었는지 살펴보라.(168/477)

오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요

  • 일반 텍스트로 된 데이터가 수명이 없다는 부분은 너무나 공감하는 내용이다. 아무리 정돈되더라도 json, yaml, toml은 한눈에 알아보기 어려운 경우가 종종있다.
  • 주석으로 달린 짧은 내용이지만 모든 소프트웨어는 작성되자마자 레거시가 된다... 맞다. 히스토리도 소실된 몇 년 묵은 낡은 코드도 어제 내가 만들어서 올린 코드도 모두 레거시다.
  • 디버깅에 이진분할은 활용하는 경우는 보통 그 단계까지 가기 전에, 호출 스택이나 데이터를 펼쳐서 살펴보다가 버그 원인을 찾은 경우가 많았는데 살펴보기 전에 이진분할을 하면서 찾아나갔으면 더 빨리 찾았을까..? 잘 모르겠다.
  • 엔지니어링 일지는 써보고 싶은데 막상 써보려고하면 그냥 낙서만 남을 뿐 그 이상도 이하도 아닌 것 같다. 얼마 전에도 몇달 전에 메모했던 내용을 다시 살펴봤는데 A라고 써놓은건지 B라고 써놓은건지 명확하지 않아서 결국 다시 관련 내용을 처음부터 확인하기도 했다.
  • 현재 개인적으로는 git, 업무는 perforce로 하고있어서 방식이 다른 두 VCS를 모두 사용하고 있는데, 오직 프로그래머 입장에서 보기에는 git이 편한것이 사실이다. 이전 직장에서는 gitlab을 적극 활용해서 issue, merge request, gitlab ci를 모두 활용해서 코드 리뷰부터 테스트까지 통과 해야 main (당시엔 master) 브랜치에 내용을 반영되었다. 반면에 지금은 코드 리뷰도 없이 올리고 있다...