🍮

【箇条書き】プリンシプルオブプログラミング要約&感想

2024/12/22に公開

https://www.shuwasystem.co.jp/book/9784798046143.html

「シンプル = 優れている」
とにかくシンプルであることがいかに優れているかを説いている印象でした!
箇条書きまとめ・感想を雑に残します✏️

箇条書きまとめ

前提

  • プログラミングに特効薬(銀の弾丸)は存在しない。
    → ソフトウェアは本質的に困難であり、複雑さと戦うべし。

  • コードこそが設計書であり、製造にあたるのはリリースビルド
    → コーディング工程は「製造」ではなく、設計行為にあたる
    → コードはソフトウェアの振る舞いを「正確に・完全に」把握できる唯一のものだから

大事にしたい考え方

  • プログラミング中は「最もシンプルなものは何か」と常に問いかけるようにする
    → 余計なことはしない
      ①新しく覚えたことを使いたい
      ②将来の必要に備えたい
      ③勝手に要件を追加してしまう

  • レガシーコード = テストの無いコード
    → 品質保護を重要視する目的で「テストの無いコード」と再定義された
    → 品質を守るためには、テストを用意して修正を行う!

  • コードは「今」必要なものだけ
    → 様々な事態を想定してコードを盛っても、大抵は使われない
    → 使われないどころか、何のために存在しているのかわからないので、邪魔になる

  • コードを書いている時は「他の人の視点」を忘れない
    → シンプル < わかりやすいコミュニケーションを優先 (変数名など)

  • 高級なコードを書きたくなるが、その誘惑に負けないようなメンタルが必要
    → エゴを捨ててわかりやすいコードを書く (エゴレスプログラミング)

  • コードは自然状態で複雑になるからこそ、シンプルを美しいとする文化が重要
    →「最も生産的な日は、1000行のコードを捨てた日だ」

  • ハードワークは報われない
    → 時間に追われて書いたコードは、理解しづらいものとなる

  • フロー状態に入るためには15分以上の精神集中時間が必要
    → 開発者にはまとまった時間を与えよう

手法

  • ステップ・バイ・ステップ
    → 1つずつ、コツコツ思考する (近道はできない)
    → 頭の良い人はコツコツを高速化している

  • ラバーダッキング
    → 発生している問題を誰かに説明することで、原因に気づく手法
    → 詰まった時は、ぬいぐるみでも良いので誰かに向かって説明してみる

感想

自身は業務経験1年未満のひよっこWebエンジニアですが、「プリンシプルオブプログラミング」を通して、開発する上で大事な大事な考え方を知ることができました。
なんとなく「こうあるべきだよな」と思っていたことを、わかりやすく言語化してくれているので、頷きながらすらすら読むことができました。
自分のような業務経験の浅い人にほど読んでほしい本でした。

(この本の原理原則を肝に銘じて、後々に禍根を残さないコードを書きたい)

Discussion