読了『Clean Craftsmanship』
全体の感想など
当書は、ソフトウェアの重要性が高まり社会的責任が問われるようになってきた背景を踏まえて、プログラマーのプロ意識や職業倫理といったものを規律・基準・倫理の3つの観点から啓蒙している。
「給与の高さや自由度の高い労働環境といった高待遇」や「お金や時間がないのでとにかく動くものをリリースする」といった側面のみ重要視されているような印象を受けるが、高待遇や技術に則した責任を意識する必要を感じている。(とはいえお金は大事。貧すれば鈍する)
このように表現すると精神的部分をクローズアップされているように思えるが、技術的な内容も多い。実際、当書の半分がテスト駆動開発(TDD)について解説されている。そしてクラフトマンシップを実現するためのプラクティスの多くを支えるのは「信頼できるテスト」としている。
テストが重要なのは個人的な経験からも言える。作ってリリースすることのみに焦点を当てている状況では、しっかりしたテストがなかった。こうした状況では、少し大きな変更があるときには恐怖感を覚える。とてもクラフトマンシップどころではない。プログラマーでも自身が作ったものをテストできる必要がある(テスト専門家の協力は必要かもしれないが)。プロ意識を持って開発していくには信頼できるテストが必要だ。
規律
規律は最も低いレベルであり、技術的で実践的な内容になっている。そしてその大部分はテスト駆動開発に関することになっている。
テスト駆動開発とは何であろうか。
設計について学習すると、「良い/悪いパターン」は語られていることは多いが「ゼロから良い設計までどのようにたどり着くか」という点はあまり見ない気がする。そしてテスト駆動開発はまさにその「歩き方」のように感じている。
基準
基準とは中間レベルであり、世界がプログラマーに「期待していること」。
生産性や品質、学習についての期待などあるが、中でも印象的なのは次の言葉だった。
「ノー」と言うには「イエスの選択肢がない」ことを判断することになる。それを後押しする技術や経験、勇気が必要になる。つまり専門家の仕事だ。
倫理
倫理とは最も高いレベルであり、プログラマーという職業の倫理的背景について。
大げさに聞こえるが今や生活のいたるところにソフトウェアがある。サイロ化された部門、工程で仕事をしていると思いがいたらないところだが、プログラマーの技能は様々なところに影響を与えている。
乱雑なコードをリリースしても仕事は完了かもしれない。しかしそうした製品を自分で使ったり人に進めたいとは思えない。そしてこのような満足度と事業上のアウトカムには強い相関があることも証明されている。
私がコードの品質や設計に関心を持ち、常にリファクタリングを行うのは職業倫理と言えるのかもしれない。
その他
内在する抽象概念(p.218)については要領を得なかった部分なので、改めて読んでみよう。
他のCleanシリーズをまだ読めていないので、読んでいこう。中途半端に読んだ『Clean Architecture』も。
書籍情報
著者:Robert C. Martin
訳者:角 征典