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