ポール・グレアム「めったにない質問」を翻訳しました。原題は 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?

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:

Colin McEvedy「ペンギン社の古代中世史地図帳」
J. D. バーナル「人間の拡張:物理学史講義」

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.

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?

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.

Two startups want to hire me. Which should I choose?

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.

How can I become really good at Lisp programming?

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?

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.