Masassiah Blog

現役サラリーマンのスキルアップのための読書まとめ

プログラマが知るべき97のこと Kevlin Henney

2021年3月12日

プログラマが知るべき97のこと』"97 Things Every Programmer Should Know" (Kevlin Henney 編,和田 卓人 監修,夏目 大 訳,オライリージャパン,2010年12月10日)を読了。

コンピュータシステム,ソフトウェア工学の世界における改革は,しばしば個を無視した全体最適の視点で語られがちです。昔から「このツールを導入すれば」「このプロセスを導入すれば」,誰でも,どんなレベルの人を集めても成功できる――銀の弾丸を探し,そして失望する――何度となく繰り返してきました。(VIII)

銀の弾丸を探し,そして失望を繰り返してきた。
銀の弾丸は,自分で作り出すしかない。

システムに何か問題が起きて,それをコンパイラや OS のせいにしたくなった時は,シャーロック・ホームズの「完全にありえないことをすべて取り除いていけば,残ったものは,いかに信じがたいものでも,事実に違いない」という言葉を思い出すといいでしょう。(Allan Kelly,p. 19)

信じがたいかもしれないが,コンパイラや OS に問題があることも十分ありうる。

技術はすごい速さで変化していきます。学ばなければ置いていかれるのは確実です。(Clint Shank,p. 37)

技術のスピードに置いていかれないように,学び続けなければならない。

何も情報を与えられなくても,あらゆる質問に答え,あらゆる問題を解決できる。そんな人はいません。ソフトウェア業界にそんな「超人」がいるという神話は,そろそろ一掃すべきでしょう。どれほど優れたプログラマも人間であることには違いはないのです。彼らも他の人と同じように,論理的に考え,体系的に分析をしない限り,どんな問題も解決できないのです。(Ryan Brush,p. 71)

存在しない「超人」に頼るのではなく,自分で論理的に考え,体系的に分析することを続ける。たとえ,もがき苦しんだとしても。

仕事には長い時間をかけず,集中して短い時間で終わらせるように心がける。より効率的な問題解決方法を探す努力を常にする。プロジェクトに貢献するというのはそういうことです。技術力を向上させ,自分の行動パターンを振り返り,改善に努めることも,プロジェクトにとってプラスになるでしょう。(Olve Maudal,p. 73)

技術を向上させ,改善に努めることは,プログラムのプロジェクトだけではなく,様々なプロジェクトにとってもプラスになる。

結局は気持ちの持ち方,さらに言えば,取り組む態度の問題ということになってしまうのだと思います。(Yuriy Zubarev,p. 177)

最後は,取り組む態度,つまり気持ち(パッション)の問題に帰着する。

常に,最大限の力を尽くして良いコードを書こうとします。リソースの制約がある中,早く作業を終わらせろと会社が圧力をかけてくる中,それでもできる限り良いコードを書こうと努力をするのです。(Pete Goodliffe,p. 182)

作業を終わらせることだけを考えていては,いつまでたっても作業に追われてしまう。

プログラマが持つべき 3 つのスキル(吉岡 弘隆,p. 209)

  1. コードを読むスキル
  2. テストをするスキル
  3. デバッグをするスキル

プログラマなコアな部分は,上記の 3 つのスキルなのだろう。

有名な UNIX 哲学では "Write programs that do one thing and do it well" (1 つのことをうまくやるプログラムを書け)といわれるように,複数の機能をつめ込まず,単一の機能をもったプログラムを組み合わせて使うことが美とされます。(宮川 達彦,p. 219)

今,実装しようとしているプログラムは,どんな機能を持たせたいのか,よく考えながらプログラムを書く。

プログラマが知るべき97のこと

プログラマが知るべき97のこと

  • 発売日: 2010/12/18
  • メディア: 単行本(ソフトカバー)