ベター・プログラマを読みました

書籍「ベター・プログラマ」を読みました。 印象に残っている章のメモをまとめておきます。

  • 3章 少ないコードを書く
    • コメントは「なぜ」を説明するべき。ただし、「なぜ」が明らかでない場合にだけ。
    • コメントをいつ、どこにどのくらい書くのか迷うことがあるので、改めて判断基準を再確認することができました
  • 11章 テストの時代
    • 優れたテストは
      • 短く明瞭な名前、保守可能、素早く実行できる、更新されている、実行前の作業が不要、他のテストに依存しない
    • ひどいテストは
      • 時々実行され・時々失敗する、読みづらい、大きすぎる、2つ以上のことを行うテスト、サードパーティに対するテスト、無駄に過剰な網羅度
  • 12章 複雑さに対処する
    • ブロブ(ソフトウェアのコンポーネント)や線(コンポーネント間の接続)から複雑さが発生している。この複雑さを生み出しているのは、実装している人である
  • 24章 学びを愛して生きる
    • 学習を楽しむことを学ぶこと
    • 交差感覚を刺激して学習する
      • 音楽を流す、考えながら落書きする、何か指で動かす、仕事しながら話す、思考プロセスを可視化する、瞑想する
    • 能力の4段階
      • 自覚のある無能、自覚ある有能、自覚のない有能、自覚のない無能
    • 学習モデル
      • 初心者、初級者、中級者 、上級者、専門家
      • ある話題をマスターするために今どの段階にいるのかを理解し、どこに到達する必要があるかを決めるのに役立つ
      • 適用する単純な規則を求めているか?(中級者)、経験を導く格言を貪欲に求めているか(上級者)、直感で答えを求めているか(専門家)
      • 中級者と上級者の違いは、デザインパターンや他人の体験談を、いつ、どこで生かすことができるのかが分かっているかどうか
  • 26章 チャレンジを楽しむ
    • チャレンジすることでモチベーションを維持することに繋がる
      • 個人的なプロジェクトを開始する。
  • 28章 倫理的なプログラマ
    • エンジニアの質は技術的な技量ではなく、態度に依存する
      • コードに対する態度、法的問題、人への態度、チームメイト、マネージャ、雇用主、自分自身
    • コードにおけるヒポクラテスの誓い
      • コードやビジネスに対して害を及ぼさないことを誓います。個人的な進歩と私の技能の向上を追い求めます。最善の能力で割り当てられた仕事を行い、チームと協調して働きます。誠意を持って他人に接し、プロジェクトとチームが最大限の効果と価値を生み出すために働きます。
  • 31章 一生懸命ではなく、賢く
    • 生産的なプログラマであるためには、一生懸命ではなく賢く働くことを学ぶ必要がある。経験を積んだプログラマの特徴の1つは、技術的な判断力だけでなく、問題の解き方と戦い方の選び方にある。
      • 賢く再利用する、他人の問題にする、やらなければならないことだけを行う、何を求められているのか、一度に1つずつ、小さくそして単純にする、問題を先延ばしにして積み上げない、自動化、誤りを防ぐ、会話する、燃え尽きを避ける、強力なツール
  • 35章 原因は思考
    • 自身の能力の最善を尽くすことを促してきた最も重要なことは、優秀なプログラマのチームに対して説明責任を持つこと
      • 自身の実装に対して説明責任を持つことで、アウトプットの質が向上する