matobaの考えてること

考えていることをとりあえず垂れ流していくブログです。

大学卒業後に仕事でプログラミングを始めてから読みたい本

コンピュータサイエンスを習ってエンジニアとして就職した人にオススメしたい本というのをつぶやきました。

この話は、オススメしたいというより、自分が役に立った本、面白いと思った本を紹介している形になります。

Coders at Work プログラミングの技をめぐる探求

Coders at Work プログラミングの技をめぐる探求

Coders at Workには15人の偉大なプログラマにインタビューをした話が書いてあります。この本を読むことで、「人によってプログラミングに関する考え方は違う」という例をたくさん学ぶことができます。

この本は今も読んでいる最中ではあるのですが、この本によって「偉大なプログラマー」といっても色んな考え方の人がいることがわかります。

プログラマーは、「プログラマーたるもの、こんな風に考えないといけない」と言うことがあるかもしれません。でも、偉大なプログラマーというのは均質な考えを持っているわけではないようです。

この本では、15人の著名なプログラマーにインタビューを行います。Amazonのリンクをたどると、15人のプログラマーの名前が並んでいますが、みんなすごい人です。(語彙力)

本の中でインタビュアーが「別の人は、こんな話をしてましたが、あなたはどう思いますか?」という質問の仕方をしていきます。それによって「私はそうは思はない。これこれこう言う理由があって....」と言う話や「私はこの部分に賛成できるが、こちらには賛成できない。なぜなら〜」と言う話が展開されていきます。

この話はすごく面白い。

他にも、ケン・トンプソン(UNIXの開発者)が、プログラミングの仕方を尋ねられ、回答した後に次のように言うのも面白いです。

それが私のやり方だというだけです。パラダイムとして提案しているわけではありません。単に私がいつもやっている方法というだけです。

私が、プログラミングの仕方を尋ねられて回答したとしてもパラダイムの提案と受け取られることはありません。でも、ケン・トンプソンのように著名になると、パラダイムの提案と受け取られることがあるのでしょう。確かに、実績のある人が自分のやり方を喋るとそれをそのまま採用したい気持ちになることはあります。でも、ケン・トンプソンとしては、そのまま採用されても困るし、そんなことを言いたくて回答しているのではない。と言うのがこのやり取りから、感じられて面白いなあと思います。

他にも面白いことを紹介すると、ピーター・ノーヴィグ(NASAとGoogleで働いたプログラマ。Google研究本部長)は「必要以上の過剰な一般化をすることで、結果としてリソースを無駄にすることは、どのように避けますか?」という質問に対して、次のように回答します。

それは戦いですね。そういうことをめぐってはたくさんの戦いがあります。そして私はたぶんその質問に答えるのに相応しい人間では無いでしょう。私は未だ実用的な解法よりエレガントな解法に惹かれる傾向があります。だから私は「日々の仕事ではそんなふうに考えるわけにはいかないぞ」と思いながら自分と闘っているのです。

「いろんな考え方の偉大なプログラマーがいる」ということを知れるのはすごく意味があることだと思います。

これは個人的にすごく重要なことだったし、サイエンスとエンジニアリングの違いを意識することもできたのでよかったですね。

ソフトウエア開発プロフェッショナル

ソフトウエア開発プロフェッショナル

あと、ソフトウェア開発プロフェッショナルは、ソフトウェア開発のプロをどうやって育てるのか、ということについて考えられた本のように思います。

例えば資格はどうなのだろうか、とか大学に意味はあるのか、とかそういう話をしています。

自分の場合は、大学院を出て、システムエンジニアとして働き出した時に、自分が見聞きしてきたプログラマーイメージとエンジニアのイメージが違いました。

自分の場合は、その違いがなんなのかを知りたくて色々調べました。そして、その中で気づきを得ることができました。

プログラミングの心理学―または、ハイテクノロジーの人間学 25周年記念版

プログラミングの心理学―または、ハイテクノロジーの人間学 25周年記念版

  • 作者: ジェラルド・M.ワインバーグ,木村泉,久野靖,角田博保,白浜律雄
  • 出版社/メーカー: 毎日コミュニケーションズ
  • 発売日: 2005/02
  • メディア: 単行本
  • 購入: 4人 クリック: 54回
  • この商品を含むブログ (61件) を見る

プログラミングの心理学は、基本的にプログラミングという行動とそれをしている人の思考の関係を調べて語っています。

その中で、趣味でプログラムを書くことと仕事でプログラムを書くことの違いについて語っています。

組織的にプログラミングすることや、プログラマーのマネージャとして活動する際の思考についても触れてあったと思います。

マネージャーになる人のために、極端に簡単なプログラミング課題が用意される話とか印象的だったのを覚えています。