ポール・グレアム「めったにない質問」を翻訳しました。原題は Rarely-Asked Questions で、原文はココです。翻訳にあたり、id:ttamo様、id:meefla様、shiro様のアドバイスをいただいております。ありがとうございます!! 英語に強い皆さま、人力検索コメント欄でのアドバイスをよろしくお願いいたします。


めったにない質問
Rarely-Asked Questions

質問されたことは一度か二度しかないが、とても面白いと思った質問を紹介しよう。
These are questions that I've only been asked once or twice, but which seem especially interesting.


もっと多くの画家が、すごいプログラマにならないのはなぜでしょう?
Why don't more painters have hacking jobs?

たぶん絵を描くハッカーがごくわずかしかいないのと同じ理由だ。門外漢には、どちらもすごく難解で神秘的に見える。人は10代のころにはすごく難しい問題を学ぶことができる。というのも、どうせその年代の人にとっては万事が謎だからだ。おまけに無知だから、とんでもなく自信がある。だが10代のうちにプログラミングと芸術の両方を学ばなければ(そんな人は稀だ)、成長したら、まだ学んでいない方を怖がるようになるだろう。
Probably for the same reason that few hackers take up painting. They both seem from the outside like great abstruse mysteries. You can learn great abstruse mysteries as a teenager, because everything is a mystery at that point anyway. And you have the boundless self confidence that comes from ignorance. But unless you learn both as a teenager, which is rare, you'll be afraid of the other later.


もっと歴史を学びたいと思ったら、どんな本を読むべきでしょうか?
What should I read to learn more about history?

いろんな方法がある。単に座ってジョン・ロバーツの「図説 世界の歴史」を隅々まで読むのもいいが、おそらく飽きてしまうだろう。初めて読んだときには完全に理解できなくても、特定の話題について読んだほうがいいと思う。
The way to do it is piecemeal. You could just sit down and try reading Roberts's History of the World cover to cover, but you'd probably lose interest. I think it's a better plan to read books about specific topics, even if you don't understand everything the first time through.

私が最も面白いと思った本を示そう。
Here are the most exciting ones I can think of:

ケネス・クラーク「芸術と文明」
リン・ホワイト・Jr「中世の技術と社会変動」
Colin McEvedy「ペンギン社の古代中世史地図帳」
ピーター・ラスレット「われら失いし世界―近代イギリス社会史」
J. D. バーナル「人間の拡張:物理学史講義」
ベンジャミン・フランクリン「フランクリン自伝」
マーク・ジルアード「英国のカントリー・ハウス:貴族の生活と建築の歴史」
アンリ・ピレンヌ「ヨーロッパ世界の誕生―マホメットとシャルルマーニュ」
スティーヴン・ランシマン「コンスタンティノープル陥落す」
C・M・チポラ「大砲と帆船―ヨーロッパの世界制覇と技術革新」
モーゼス・ハダス「ローマ帝国」
C.W.C.Oman「中世における戦争術」
ジョルジュ・ヴァザーリ「美術家列伝」
E・W・ボーヴィル「ムーア人の金取引」
ジュリアス・シーザー「ガリア戦記」
トーマス・クーン「コペルニクス革命」


PerlやPythonにLispのマクロに相当するものを追加することはできないのですか?
Couldn't you add something equivalent to Lisp macros to languages like Perl or Python?

追加したら、それらはLispの方言になってしまう。真のマクロは、プログラムの解析木を処理しなければならない。構文規則のある言語でこれを可能にするには、(a)ソースコードから解析木への翻訳を公開し (b)プログラムがコンパイラに行く前に、解析木の上でプログラムを走らせる事をプログラマができるようにする必要がある。
Not without turning them into dialects of Lisp. Real macros need to operate on the parse tree of the program. To allow that in a language with syntax, you have to (a) make public the translation from source code to parse trees, and (b) give the programmer the opportunity to run programs on parse trees before they go on to the compiler.

だがそうするなら、解析木用の記法を開発しなければ難しい。そしてその記法を開発したら、OS XにおいてMac OSがUnixのスキンになったのと同様、その言語はLispのスキンになってしまう。
But it would be hard to do that without creating a notation for parse trees; and once you do, your language has become a skin on Lisp, in much the same way that in OS X, the Mac OS became a skin on Unix.


どうすれば髪のとんがった上司(訳注:マンガ「ディルバート」に出てくる、技術にうといバカな上司)にならずに済みますか?
How can I avoid turning into a pointy-haired boss?

髪のとんがった上司はプログラムを書かない管理職だ。だからそうならずに済むいちばん確かな方法は、プログラマのままでいることだ。プログラマを管理職になるよう勧めるのは古い社風の会社で、そんな会社では、管理職になるしか昇給や昇進ができない。だからバカな上司になりたくないなら、そのような会社は避け、ベンチャーに入るか起業しよう。
The pointy-haired boss is a manager who doesn't program. So the surest way to avoid becoming him is to stay a programmer. What tempts programmers to become managers are companies with old-fashioned corporate structure, where the only way to advance in salary and prestige is to go into management. So if you want to avoid becoming a PHB, avoid such companies, and work for (or start) startups.

私は自分のベンチャーの社長だったが、誰かを管理する必要などまったくなかった。他のハッカーは私の仲間で、彼らを管理しようとしたら、私は軽蔑されていただろう。私たちはツーカーの仲で働いていた。そしてハッカー以外の社員は、経験豊富なCOOの管理していたが、COOも私の仲間だった。
I never had to manage anyone in our startup, even though I was the president. The other hackers were my peers, and would have given me the raspberry if I'd tried to "manage" them. We operated by consensus. And the rest of the company reported to our experienced COO, who was also more of a peer.

起業家か初期の社員になれるのに、管理職になんてなる必要はないだろう?
Why be a manager when you could be a founder or early employee at a startup?


私はもうすぐ教師になります。どうすればいい教師になれますか?
I'm about to become a teacher. How can I be a good one?

私の学校時代で記憶に残っている最高の教師には、3つの共通点があった。
The best teachers I remember from school had three things in common:

(1) 要求水準が高かった。三歳児が両親を試すように、生徒はダメな成績や行儀の悪さにきちんと対処するかを試す。それらを叱れない教師は尊敬されないだろう。
(1) They had high standards. Like three year olds testing their parents, students will test teachers to see if they can get away with low-quality work or bad behavior. They won't respect the teachers who don't call them on it.

(2) 生徒のことが好きだった。生徒たちは教師が自分たちを気にかけているかどうかを、犬と同様、非常に正確に把握している。教師の多くは、それほど生徒が好きではないか、もしくは燃え尽きて生徒が嫌いになってしまったのだろう。いったん生徒が嫌いになってしまったら、良い教師になるのは難しい。私が通った学校で、生徒を嫌いだったにもかかわらず、なんとかまともな教師と呼べるような教師を、私は1人も思い出せない。
(2) They liked us. Like dogs, kids can tell very accurately whether or not someone wishes them well. I think a lot of our teachers either never liked kids much, or got burned out and started not to like them. It's hard to be a good teacher once that happens. I can't think of one teacher in all the schools I went to who managed to be good despite disliking students.


(3) 授業の内容に興味を持っていた。私がいた公立学校の教師の大部分は、実際のところ授業の内容に興味を持っていなかった。熱意も退屈も伝わってしまうものだ。
(3) They were interested in the subject. Most of the public school teachers I had weren't really interested in what they taught. Enthusiasm is contagious, and so is boredom.


2社のベンチャーから誘われています。どちらに行けばいいですか?
Two startups want to hire me. Which should I choose?

意志が強く、賢い起業家のいる会社は(優先順位はこの順で)成功する可能性が高い。自分が投資家だったら2社のどちらの株を買うかを考えよう。自分の時間を投資するんだから。
The one with the most determined and smartest founders (in that order) is the more likely to succeed. Pretend you're an investor—which you are, of your time—and ask yourself which of the two you'd buy stock in.


どうすれば真のLispハッカーになれますか?
How can I become really good at Lisp programming?

下の層を一種の言語として作り、それを用いて残りを組み立ててゆくような、十分大きなアプリケーションを書こう。埋め込み型言語は(今ではドメイン固有言語と呼ぶようだが)、Lispのハックの本質だ。
Write an application big enough that you can make the lower levels into a language layer. Embedded languages (or as they now seem to be called, DSLs) are the essence of Lisp hacking.


哲学書は何がオススメですか?
What philosophy books would you recommend?

何も推薦できない。哲学を学ぼうとしてわかったのは、面白い分野は他にあるってことだ。数学や歴史、航空工学を非常に深く理解したなら、身についた知識のうち最も抽象的な知識は、哲学を学べば身につくはずとされているものになる。哲学書そのものは、一般人にはあまり意味のない専門的な内容について書いているか、著者自身がロクに理解していない抽象的な言葉を漫然と書き連ねているか(例: ヘーゲル)のどちらかだ。
I can't think of any I'd recommend. What I learned from trying to study philosophy is that the place to look is in other fields. If you understand math or history or aeronautical engineering very well, the most abstract of the things you know are what philosophy is supposed to be teaching. Books on philosophy per se are either highly technical stuff that doesn't matter much, or vague concatenations of abstractions their own authors didn't fully understand (e.g. Hegel).

古代哲学の研究が興味深いときもあるが、有益なことを学ぶためというよりも、失敗例のひとつとしてだ。
It can be interesting to study ancient philosophy, but more as a kind of accident report than to teach you anything useful.


起業したいのですが、プログラムを書けません。勉強にはどれくらい必要ですか?
I want to start a startup, but I don't know how to program. How long will it take to learn?

賢ければ半年から1年でハックできるようになるだろう。いちばんいい方法は、見習いの身分でどこかのベンチャーに雇ってもらい、仕事のかたわらプログラムを学ぶことだろう。そして電話番からシステム管理者、ソフトの設計へと進もう。ベンチャーでは山ほど仕事があるから、仕事を大過なく進められるなら、履歴書上の資格については、それほどとやかく問われないだろう。
I would guess a smart person can learn to hack sufficiently well in 6 months to a year. The best way to do it would be to find some startup to hire you in an initially menial capacity, and start learning to program on the side. Then gradually work your way up from answering phones through system administration to actual software design. There is always so much to do in a startup that people won't be too picky about your paper qualifications, if you can solve problems for them without screwing up.