도전적인 문제에 적극적으로 임하는 자세는 진부한 모습이 되지 않도록 해 줄 것이다. 아무도 진부한 프로그래머를 좋아하지 않는다.

저마다 책을 읽을 때 꽂히는 문장이 하나씩 있을텐데, 나는 2/3 정도 읽었을 때 저 문장이 그랬습니다.

제목부터 느껴지는, 보통의 자기개발서 같은 목차대로 책은 서술합니다. 여느 자기개발서들과 마찬가지로 적절한 명언과 적절한 법칙과 같은 것들이 적절하게 요약되어, 읽으면서 “아 그렇구나” 하게 만들지만 책을 덮을 시점에는 다시금 현실과의 괴리감에 공허해 지기도 합니다.

그래서인지 자기개발서를 읽고 났을 때 필름의 잔영처럼 무언가 내 머리 속에 새겨져 남긴 것이 있다면 난 이 책을 통해 무언가를 얻은 거라 생각하게 됩니다. 이 책은 경력 14년차 진부 해지고 있던 나의 마음에 잔잔한 동요를 일으켰습니다. 그 동안 내가 잊고 있던 아니 애써 감쳐 두었던 것을 끄집어 냈습니다. 배움에 대한 열정이 그것이죠.

사회 초년생 때에는 이런 류의 서적을 좋아하지 않았습니다. 뜬구름 잡는 소리만 하는 것 같았기 때문입니다. 그런데 프로그래밍 분야에서 오랫 동안 읽히는 서적이 맨먼스미신, 피플웨어 같은 것임을 보면 기술만이 다가 아님은 공통 진리인 것 같아요. 2019년에 다녀왔던 ApacheCon 2019의 세션의 반 가까이가 기술 보다도 협업과 철학 같은 내용이었습니다. 오히려 이런 부분은 동양보단 서양에서 더 훨씬 강조하고 있는 분야인 것 같습니다.

한 번쯤 읽어볼 만한 내용을 담고 있는 책입니다다. 약속이 없는 토요일 하루 느긋하게 책을 정독했습니다다. 그리고 내가 느낀 이 책의 백미는 가장 마지막 장으로, (번역본에만 있는) 국내 개발자 이야기 였습니다. 좋은 내용을 담고 있으니 나중에 이 부분만이라도 읽어보길 추천합니다.

배움에 관한 조언

프로그래머에게는 배움이 지속적으로 요구된다.

  1. 지속적으로 배우는 상태를 유지하라.
  2. 배울만한 새로운 무언가를 항상 찾아보라.
  3. 배움을 즐기는 것을 배우라.

이렇게 실천해 보자.

  1. 새로운 기술을 습득하라.
  2. 새로운 기술적 기법을 배우라.
  3. 사람들과 함께 일하는 것을 배우라.
  4. 새로운 영역에 대해 배우라.
  5. 어떻게 배워야 할지 배우라.
  6. 완전히 다른 것을 배우라.

나의 성향에 관해

  • 좌뇌/우뇌
    • 좌뇌형: 논리적이고 선형적, 사실의 나열 선호
    • 우회형: 패턴과 전체적 관점, 거대한 이야기
  • 성향
    • 내향적: 스스로 배우는 것을 선호
    • 외향적: 협력할 수 있는 워크샵
좌뇌형 우뇌형
내향적 60%
외향적 40%

기억에 남는 구절들

  • 발생할 수 있는 사장 나쁜 상황 중 하나는 아직 모르는 것을 설계.
    • 처음 만드는 시점부터 설계에 필요할 것으로 예상 되는 모든 요소를 추가하는 것은 위험.
  • 좋은 코드 세가지 강력한 규칙
    1. 간결하게 하라
    2. 머리를 쓰라
    3. 변하지 않는 것은 없다
  • 개발과 테스트 사이에 인위적인 단절을 만들어내지 않도록 주의하라
  • 팀 간의 의사소통이 건전하지 않으면 코드도 건전해지지 않는다
  • 훌륭한 프로그래머들과 함께 하라
    • 우울한 사람들과 오래 지내면 같이 침체된다. 쇠퇴하는 사람들과 오래 지내면 지치고 무기력해진다. 엉성한 작업자들과 오래 지내면 똑같이 엉성해진다.

기억에 남는 약어/용어들

  • DRY - Don’t Repeat Yourself.
  • YAGNI - Don’t do anything if You Aint Going to Need It.
  • KISS - Keep It Simple Stupid
  • Technical Debt - 소프트웨어를 빠르게 출시하는 결정은 부채와 같다
  • 콘웨이의 법칙 - 소프트웨어의 구조와 그것을 개발하는 팀의 구조은 서로 유사해진다는 법칙

기억에 남는 명언들

  • 미련한 프로그래머는 컴퓨터가 이해할 수 있는 코드를 만들고, 좋은 프로그래머는 사람이 이해할 수 있는 코드를 만든다 - Martin Fowler
  • 디버깅이 소프트웨어 버그를 없애는 과정이라면, 프로그래밍은 분명 버그를 만드는 과정이다 - Edsger Dijkstra
  • 가르치는 것은 두 번 배우는 것이다 - Joseph Joubert