programmer-interview

ポール・グラハム 「中学1年生によるインタビュー」

「プログラマをしていて1番いいことは何ですか?最悪なことは?1番難しいことは?」中学生の質問に、ポール・グラハムは丁寧に答えていく。ここでは、Paul Grahamの「An Interview by a Seventh Grader」を訳し、グラハムが思うプログラマ像、プログラミング像を理解する。

(中学一年生が学校のプロジェクトで送ってきた質問への回答)

 

1 プログラマに必要なことは何?

プログラマはコンピュータに何をするか伝えます…英語のような人間の言葉ではなく、プログラミング言語と呼ばれる曖昧さのない特別な言葉を使います。プログラミング言語で書かれた命令はコードと呼ばれています。プログラマはプログラムが何をすべきかについての自分のアイデアを、効率が良く、信頼性があり、後で容易に変更できるような形でコードに変換する必要があります。最高のプログラマというのは、アイデアをコードへと変換するのがうまいだけでなく、良いアイデアを持っている人のことを言います。

 

2 プログラマをしていて1番いいことは? 最悪のことは? 1番難しいことは?

私にとって一番いいのは物を作るという部分です。プログラムは形のあるものではありませんが、いいプログラムを作っているときには、(プログラムの規模に応じて)陶器や家などを作っているのと同じ達成感があります。

私にとって最悪な部分は、外的な制約と折り合いを付けることです。プログラムを作るとき、通常は完全な自由があるわけではありません。そのプログラムには何が出来なければならないかを上司(あるいは顧客)が指定し、他のプログラムともうまく合わせる必要があります。やるように言われたことや、合わせなければならない相手のプログラムが、めちゃくちゃだったり馬鹿げていることだってよくあります。そのため自分の好きなように作ることができないのです。

プログラミングをする上で一番難しいことは、その人がどれくらい優れているかによって違います。へたなプログラマには、へたな料理人と同じように、プログラミングの仕組み自体が難しいものとなります。一方優れたプログラマの場合には、優れた料理人と同じように、やろうと思ったことは何でもできるので、何を作るか決めるというのが一番頭を悩ませる部分になります。

 

3 プログラマがもらえる給料の範囲はどれくらい?

とても幅があります。プログラマの中には自分で会社を始める人もいますが、その会社が成功すれば、たくさんのお金が手に入ります。一番給料の低いプログラマは年収3万5千ドルくらいでしょう。一番儲けるプログラマは、Googleの創業者のラリー・ペイジやセルゲイ・ブリンのように、何十億ドルも手にします。

 

4 プログラマの典型的な1日はどんなもの?

すごくまちまちなので、これという答えはありません。政府や大企業のような官僚的組織で働くプログラマの場合、一日のほとんどをミーティングやメールの対応に費やし、実際にコードを書く時間がほとんどないということもあります。一方でスタートアップ企業や研究プロジェクトで働いているプログラマの場合、一日の時間の多くをプログラミングに使っています。プログラミングをしているときには作業を中断させられるのはとても具合が悪いので、プログラミングに多くの時間を当てている人は、夜遅くとか朝早い時間など、人に邪魔されない時間にやることがよくあります。

 

5 若いプログラマへのアドバイスは?

プログラミングは自分でやることによって覚えるものです。だから受け身にならないようにしてください。授業でプログラムの書き方を教わるまで待つことはありません。プログラミングを学ぶ一番の方法は、自分のプロジェクトを始めることです。(このことは実際プログラミングだけでなく、他の多くの分野にも当てはまります)

 

6 プログラマの仕事は簡単に見つけられるの?

優れたプログラマなら、プログラミングの仕事を見つけるのはいつだって簡単です。経済状況の悪いときであっても、優れたプログラマは足らないものだからです。

 

7 あなたが一番わくわくしたプロジェクトは何?

それはたぶん大学の最後の年に書いた英語の文章を理解するプログラムだと思います。今日の基準からすればそうたいしたものではありませんが、当時みんなが授業で書いていたプログラムに比べたらずっと気が利いていました。

 

8 若いプログラマにとって、この仕事のために必要なスキルは何?

必要なことは多くの部分、どの年代のプログラマだろうと同じスキルです(単純なものを作るスキル)。若いプログラマが犯しがちな間違いを1つあげるとしたら、手が込みすぎたものを作るきらいがあるということです。抑えることを知らずに知恵の限りを尽くしてすごく複雑なものを作ってしまいます。本当に早熟なプログラマなら、そのようなことをすべきではないと学んでいるものです。

 

9 プログラミングが人類の生活を改善したのは、どういうところ?

いまやコンピュータは広く行き渡っており、生活の中でプログラミングの影響を受けていない面というのは実質的にありません

 

10 プログラミングは今後どのような方向に進む?

テクノロジーの変化を予測するのはいつでも難しいものですが、プログラミングに関しては、すべてを自分で作るというところから、他の人が作ったプログラムを繋ぎ合わせるというものに変わってきているように見えます。だから部品として使えるプログラムにどんなものがあるかよく知っていることがより重要になり、基礎的な「配管工事」を全部自分でやれることの重要性は下がっていくでしょう。

 

11 プログラミングがなかったら、私たちの生活はずっとひどくなる? それはなぜでどれくらい変わるの?

この質問に答える1つの方法は、コンピュータが広く普及する以前、たとえば1950年頃に、物事がどんな具合だったかを見てみることでしょう。今できることで、当時にはできなかったことはたくさんあります。たとえば携帯電話のような、ごくわかりやすいものもあります。一方、もっとわかりにくいものもあります。今日の飛行機は当時よりずっと効率的になっていますが、それは設計のための計算を手で行うのではなく、コンピュータでやっているからです。それに1950年には作れなかった薬というのもあります。薬の発見にもコンピュータが必要だからです。

 

最後に

「プログラミングを学ぶ一番の方法は、自分のプロジェクトを始めることです」

好奇心を大切に、自分が興味を持つことにたくさんの時間を費やそう。黙って座って教えられるのを待つんじゃなく、自分から踏み出して学ぶんだ。自分の人生に責任を持つことを決心したそのときに、君は大人になるんだから(What You’ll Wish You’d Known(知っておきたかったこと)より)。

和訳してくださった青木 靖氏に感謝する(2010年6月)。

ハッカーと画家 コンピュータ時代の創造者たち


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>