プログラマが知るべき97のことを読んだ

ようやく読み終わりました。年明けから読んだ本では一番時間がかかったかもしれない。
内容は、職業プログラマの方々のエッセイ集。そのほとんどは見開きでまとまってるので、非常に読みやすい。しかし、ひとつひとつの話が非常に考えさせられ、一気に読みきるには少々ボリュームが大きかったです。 また、プログラマが知るべき97のことの他に、日本人プログラマによる知っておくべき10のこと、もついてますので、実際には107ものエッセイが書かれています。

全体の感想としては、「プログラマが知るべき」というタイトルが誇張でもなんでもないものでした。全てのエンジニアに読んでもらいたい1冊。(あえてプログラマとは書かない。日本ではプログラマ=コードを書く人という認識がされがちですが、この本が言うところのプログラマはコーダーではないし、SIerもテストエンジニアも、ぜひ読むべきだと思う)

本当は97+10の全てに対して紹介したいところですが、さすがに大変なので、個人的に気に入ったいくつかについて紹介します。

08. ボーイスカウト・ルール 「モジュールをチェックインする際には、必ずチェックアウト時よりも美しくする」

品質を維持できる簡単なルールですね。うちの会社でも、似たようなことはやっています。

28. 「魔法」に頼りすぎてはいけない 他人のする仕事というのは、どういうものであれ、遠くから見ているとどうしても実際より簡単に思えてしまうものです。

他者へのリスペクトは大事だなぁと、ここのところ強く実感してます。

35. 超人の神話 質問をする側の方が、質問をされる側よりも、質問されたことがらについてよく知っていることが多いのです。 何も情報を与えられなくても、あらゆる質問に答え、あらゆる問題を解決できる。そんな人はいません。

うちの会社にも、スーパーマンやエスパーと思える人がいるけど、彼らも普通の人間なんですよね。忘れないようにしないと。。

43. プログラミング言語は複数習得すべき 何年プログラミングを経験しようとも、ずっと同じ言語だけを使い、1つの言語しか知らないプログラマは、その言語の枠の中でしかものを考えられなくなってしまいます。

僕が自信を持って書ける言語は片手の指で余ります。。ちょうど4月になったばかりだし、1年に1言語勉強しようかな。まずはスキルの棚卸しから...

56. 未来へのメッセージ 「自分の書くコードは、全部、未来の誰かへのメッセージだと思うのよ。その誰かは、あなたの弟さんかもしれない。誰か、とても賢い人に、自分が難しい問題をどう解いたのか、丁寧に説明するつもりで書くの」

保守性の高いコードはこういう心構えから生まれる。

77. 偶然の仕様ではなく本物の仕様のためのテストを書く 実装コードには、元々の設計でそうしようと意図したわけではなく、実装の都合でたまたまそうしている、という部分が多くあります。そういう、いわば「偶然の仕様」までテスト対象としてしまうのは問題なのです。

テストは「そのプログラムがどうあるべきか」について書かなければいけない。って最近よく言ってるなぁ。。

~ 日本人プログラマによる知っておきべき10のこと ~

04. プログラマが持つべき3つのスキル プログラマが持っておくべきスキルというのはいろいろありますが、あえて3つあげるとすれば、(1)コードを読むスキル、(2)テストをするスキル、(3)デバッグをするスキル、だと考えます。

これは本当にそうだと思います。他のプログラマのスキルが低いと感じるときは、この3つのどれかが欠如していることが多いからです。逆に、スキルが高いと思えるプログラマたちと自分との差は、この3つのうちのどれかとも言えますね。。

10. 名前重要 適切な名前をつけられると言うことは、その機能が正しく理解されて、設計されているということで、逆にふさわしい名前がつけられないということは、その機能が果たすべき役割を設計者自身も十分理解出来ていないということなのではないでしょうか。

確かに、名前から目的や機能が想像しづらいものは、開発もぐだぐだになることが多いような。。なにかを企画するときには名前に気を付けた方がいいかも。

本当にこれ以外にも、ためになるエッセイがたくさん書かれています。複数の著書によって書かれているため、内容が重複しているものもありますが、それはそれでそれだけ重要であると考えられます。ともあれ、本当に良い本に巡り会えました。著者たちに感謝。