- 作者: Andrew Hunt,David Thomas,村上雅章
- 出版社/メーカー: オーム社
- 発売日: 2016/10/20
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (5件) を見る
数多くの技術者がオススメしている名著「達人プログラマー」を読んだ。
ちなみに絶版となっているほうは読んでいない。
Rebuild.fmでomoさんが話していたように、確かに時代背景をきちんと考慮しないと読者のためにならないような情報も多かった。特に技術に関する箇所はそうだったが、取り組む姿勢・技術の根底にある考え方に関しては今でもとても役に立つ内容となっている。
各トピックに関しては広く浅く、エッセンスだけの紹介にとどまるので、「達人プログラマー」となるためには自分でそれぞれ深掘りしていく必要がある。
今となっては当たり前となっていて意識しないようなことも書いてあるが、17年前にこの本を読んだ「達人プログラマー」たちの努力によって技術・環境が進化して今があるかと思うと感慨深い。
総じて、「古典として素晴らしい」というものだった。
合わせて読みたい
- Rebuild: 169: Your Blog Can Be Generated By Neural Networks (omo)
- 17年後のプラグマティズム (0) – To Phantasien
- 【改訂版】PHP7で堅牢なコードを書く - 例外処理、表明プログラミング、契約による設計 / PHP Conference 2016 Revised
- 技術書の歩き方勉強会「達人プログラマー」編 - connpass
読書メモ
第1章 達人の哲学
- 割れ窓理論
- 毎年少なくとも一つの言語を学習する
第2章 達人のアプローチ
- 直交性
- 「直交性」という言葉の意味がよくわかってなかったからスッキリした
- ヘリコプターの操縦の例がわかりやすい
- 恥ずかしがりなコード
- 専用の言語
- Rebuildで話してたようにDSLの話は歴史を感じた
第3章 基本的なツール
- デバッグの節がよかった
- パニックに陥らない心構え
- バグを直すだけでなく、バグを早期発見できなかった原因を考えて改善する
- 他の節は古典としては楽しめた
第4章 妄想の達人
- 契約による設計(DbC)
- 誰の責任かを明確に
- 早めのクラッシュ
- 問題発生時点で早めにクラッシュするほうが問題の早期発見や診断を簡単に行える
- 表明プログラミング
- もし起こり得ないというのであれば、表明を用いてそれを保証
- 副作用があってはだめ
- 本来のエラー処理に表明を使ってはだめ
- もし起こり得ないというのであれば、表明を用いてそれを保証
- いつ例外を使用するか
- 例外とは予期せぬ事態に備えるためのものであり、プログラムの通常の流れの一部には組み込むべきではない
- 例外は例外的な問題のみに使用する
t_wadaさんの話を聞いてたから、この章は理解しやすかった。
【改訂版】PHP7で堅牢なコードを書く - 例外処理、表明プログラミング、契約による設計 / PHP Conference 2016 Revised
第5章 柳に雪折れ無し
- デメテルの法則
- 別名最小知識の法則
基本的な考え方は、任意のオブジェクトが自分以外(サブコンポーネント含む)の構造やプロパティに対して持っている仮定を最小限にすべきであるという点にある。
// デメテルの法則に違反している console.log(aStudent.class.grade) // デメテルの法則に違反していない console.log(aStudent.getGrade())
Ref: 何かのときにすっと出したい、プログラミングに関する法則・原則一覧 - Qiita
- メタプログラミング
- 去年のPyCon JPのメタプログラミングPythonをやっと見た
- 内容がまとまっててよかった
- メタプログラミングRuby 第2版よさげ
第6章 コーディング段階
- アルゴリズムのスピード
- 入門 データ構造とアルゴリズム これを去年読んでたから理解しやすかった
- テストしやすいコード
- ユーザにテストさせない
- 邪悪な魔法使い
- ウィザードについて
- 何やってるか自分でわからないものは使うな
第7章 プロジェクトを始める前に
- 要求の落とし穴
- 用語集を管理する
- glossaryは管理し続けるのが難しいから人気ないけど、ユビキタス言語の整理にもなるし必要最低限のものは作りたい
- 用語集を管理する
要求とは拾い集めるものではなく、掘り起こすものである
最終的な目標は、要求どおりのものを作るということではなく、ビジネス上の問題を解決するということ
第8章 プロジェクトを始める前に
- 誇りと愛着
- コードへの署名を推奨しているけど、属人性を強めるから好きではない
- おそらくバージョン管理がないような時代背景のせい
達人プログラマーは責任逃れを潔しとしません。 代わりにチャレンジを受け入れること、技術を発揮することに喜びを感じます。