本書は、Clean Coder(プログラマのプロ)とはどんな人物で、どういうことに心がける必要があるのかを解説した本です。
プロとは、自分の行いに責任を持つ人物。責任とは、清く正しく働くということ。コミュニケーションをうまくとること。見積りを確実にすること。時間をかんりすること。リスクと見返りの見極めが困難な状況に立ち向かうこと。
本書はこういった、プロのプログラマを育てる本です。コーディングだけではなく、どういう仕事の仕方をする必要があるか、どういうことに気を付けないといけないのかを解説しています。新入社員や初めて先輩になる人におすすめの一冊です。
目次
- プロ意識
- 「ノー」と言う
- 「イエス」と言う
- コーディング
- テスト駆動開発
- 練習
- 受け入れテスト
- テスト戦略
- 時間管理
- 見積もり
- プレッシャー
- 協力
- チームとプロジェクト
- 指導・従弟制度・職人気質
おぼえがき
プロ意識
プロは自分で後始末をする。プロは責任をともなう。
コードを把握する
プロのプログラマは、自分のコードが動作することを把握している。どうやって把握するかといえば、それはテストである。
正常に動いていること、期待しているとおりに動くことは、テストでしか確認できない!
過去を知る
「過去を記憶できない者は、それを繰り返す運命にある」
これまでの業界の進歩や先人の知恵、経験は、色々な本から吸収できる。ソフトウェアのプロとして最低限覚えておかなければならないものが以下になる。
- デザインパターン
- 設計原則
- 方法論
- 規律・規範(ソフトウェア開発メソッド)
- 成果物・表記法(UML・構造チャート・状態遷移図等)
「ノー」と言う
出来ないこと、ムリなこと、正しくないことには「ノー」という。誠実に!
「イエス」と言う
「イエス」と言う時には、確実に約束したと分かる言葉を使う。責任をもってやり遂げる!
コーディング
「完了」を定義する。何をしたら終わるか。それには、受け入れテストが必要だ。
TDD(テスト駆動開発)は、実施するに値する価値がある。プロは自分のコードがどう動くかを把握する必要がある。それにはテストが必要だ。プロはコーディングの終わり時を知っている。それには、受け入れテストが必要だ。
TDD は、テストでコーディングサイクルを回す。確実性、血管混入率の低下、勇気、ドキュメント、設計を促進する。
受け入れテスト
早過ぎる詳細化は癌である。要求は変化するので詳細化は現実的ではない。要求を詳細化すると、開発中のシステムとかけ離れていく。
プロは、開発に入るまで要求を詳細化しない!
いつ受け入れテストを書くか。最初のイテレーションが始まるまでに、最初の受け入れテストを準備しておかなければならない。
時間管理
無駄な会議には参加しない。ケント・ベックはこう言った。「5分で決着のつかない議論は、議論では決着がつかない」と。明確な裏付けのない根拠では議論は決着がつかない。
プレッシャー
プレッシャーから逃れるには、プレッシャーを生み出す状況から逃れること。ただし、最悪な逃げ方は急いでやること。この誘惑には何がなんでも抵抗しなければならない。