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

January 15, 2011 - 書籍

「プログラマが知るべき97のこと」を読みました。

一時期いろいろネタにもされていましたが、読んで損はない本ですね。 内容は、プログラマの精神論から設計のTipsやパターン紹介まで多岐にわたっています。が、ひとつひとつが見開き1ページにまとまっているため、あとで気軽に読み返せますので、ぜひデスクに常備しておきたい一冊となりました。

主に精神論のはなしに惹かれたので少しまとめを。

問題のあるソフトウェアをつくりだす可能性と、それに対して立ち向かう姿勢

どれだけ経験を重ねても、度重なる変更やスケジュールからの圧力などによって、品質が悪くなることは往々にしてあります。

24.変更を恐れない Mike Lewis

作っている人間がシステムを嫌っているようでは、そんなものを遣わされる側はたまらないでしょう。

病気なソフトウェアを治すには痛みを伴うが、それを治すことで利益も得られ、治すことはメンバーにとって経験となると言っています。積極的にシステムを改良していくという姿勢はチームに伝播しやすいものであると。

52.「その場しのぎ」が長生きしてしまう Klaus Marquardt

いったん「暫定ソリューション」ができてしまうと、既成事実化するのです。

さらに、暫定ソリューションに対する修正も暫定になってしまいがち。でも、「ソリューション」というだけに必要なものではあるはず。修正の優先度があがる体制づくりをするとか、もっと有用なソリューションを開発すればよい、と言っています。 いつまでたっても暫定のままの暫定ソリューションはいくつも見てきたので、かなり実感湧きます。

新しいことを学び続ける姿勢

新しい言語を毎年学ぶと良いというのは、割とよく聞く話しだと思います。

26.言語だけでなく文化も学ぶ Anders Noras

そうではなく、新しい言語から新たな発想を得て、同じ問題に対して違った解決策を見つけられるようになることが大事なのです。

ある言語では言語仕様で対応してくれているけどその他の言語では自分で実装しなければいけなかったり(GCとか)、そういった、各言語ごとの視点を自分に取り入れるのは良いことです。 私は、ふだんPHPでオブジェクト指向プログラミングをやっていて、Scalaという関数言語を学んでいます。Scalaを学ぶことで、なんとなく関数型思考でPHPコードを書いていることもあります。あきらかにその書いたコードにたいする距離感が違っていて、そのコードの根拠が明確になっている気がするのです。

誰のためのコードか、という意識

なぜかこのような似通ったテーマをとりあげた人が多くいました。

35.超人の神話 Ryan Brush

超人は必要ありません。必要なのはエキスパートです。積極的に自分以外にもエキスパートを育てようとする意思をもったエキスパートです。そういう人がいてくれれば、凡人が力をつけ、活躍できる可能性が生まれるでしょう。
56.未来へのメッセージ Linda Rising
「自分の書くコードは、全部、未来の誰かへのメッセージだと思うのよ。その誰かは、あなたの弟さんかもしれない。誰か、とても賢い人に、自分が難しい問題をどう解いたのか、丁寧に説明するつもりで書くの。」
82.他社への思いやりを意識したコーディング Aslam Khan
他人の存在を意識すれば、他人の書くコードにも当然良い影響を与えることになります。チームの同様のことを考え、思いやりを持ってコードを書けば、それは同僚たちにとって価値あるコードとなり、いずれ自分にも良い影響となって帰ってきます。どんなかたちであれ、そのコードに触れた誰もが、触れる前より良い人間、良いプログラマになれる、そういうコードを書くようにすべきでしょう。

88.コードは生涯サポートするつもりで書く Yuriy Zubarev
「生涯サポートしなくてはならない」と考えながら仕事をするようになれば、素晴らしいことが起きるでしょう。
チームで開発するのが当然な現場では当たり前のことですが意外と意識できていなかったりします。私も、新しく知り得たパターンとかついつい自分の判断で取り入れてしまい、誰が見てもわかりにくいコードを書いたこともあります。今でもそういうコードになっているかもしれません。

こういうことを無意識にできるように、ペアプログラミングをするのも効果的かもしれません。隣で同じ画面を見ている「他人の目」が常にあり、自分も他人も納得のいく設計が結果的にできるわけですから。

と、ここまで書かれた複数人の内容をひとりじめするような内容の人がいましたw

91.良いプログラマになるには Pete Goodliffe

‘とりあえず’という意識を捨て、他人や未来の自分のためにわかりやすいコードを書き、新しいことを学び続けよう、ということを彼は言っています。 ※前述のテーマについては、それぞれにエピソードが違うので、どれを読んでも面白いものなので、まとめのようなものがあっても別に構わないのですが。

目の前のコードに集中しがちですが、冷静になって、こういった基本姿勢を思い返すようにしたいものです。

「達人プログラマー」や、「リファクタリング」など、引用された本で未読のものがいくつかあったので、これらについても今後読んでみようと思います。