世界の凄腕エンジニア、科学者が講演や本で語ったプログラミングに関する言葉を集めた、「凄腕エンジニアのお言葉集」は不思議にココロを打つのでまとめた。
たった一言でもその言葉を発するまでに作ってきたすごい製品や打ち出したすごい理論の上にある、と思うとなにかずっしりとその言葉の重みを感じる。
Rich HickeyはClojure作った人、そうそうシンプルがいいんですよ。分かってはいるんだけど、なんかいつの間にか複雑なコードになってしまってるのが悩み。
小利口な奴になるな。自分を賢くみせようとして複雑なコードを書かないこと。シンプル、明確、再利用可能なコードを書くこと。シンプルに明確に普遍的に考えること。
Don't be clever. Don't try to write complicated code on purpose to show how smart you are. Write simple, clear, reusable code. Think Simplicity, Clarity, Generality.
- Brian Kernighan
他人が書いた「賢くみせようとして書かれたコード」で悩むことありますね。
明らかにバグが無いコードの方が明らかなバグが無いコードより遥かにいい。
Code with obviously no bugs is immensely better than code with no obvious bugs.
この英語読んで1秒ぐらい考えたけど、当たり前だろ!
顧客は何が欲しいかなんて実は知らない。あなたの上司も知らない。彼らの本当のニーズを引き出すのはあなたの仕事。
Clients don't really know what they want, and that includes your manager. It's your job to elicit their true needs.
オレの仕事かよ。。。そうだな、オレの仕事だ。
「完璧」なんてない。あなたはいつだってより良くなれる。完璧は改善の敵。
There's no such thing as perfect. You can always be better. "The perfect is the enemy of the good"
- Voltaire
ヴォルテールはフランスの哲学者。哲学者じゃなくても、エンジニアなら完璧なんて永遠に来ないことを知っている。
スケーラビリティをデザインしなければ、あなたのコードはスケールしない。セキュリティをデザインしなければ、あなたのコードにセキュリティはない。
If you don't design for scalability, your code won't scale. If you don't design for security, your code won't be secure. Same applies for all.
その通りなんだけどねー。
あなたとあなたの書いたコードは別の物。あなたの書いたコードを批判しても、あなた自身を批判したことにはならない。
You are not your code. Criticism of your code isn't a criticism of you.
こんなセリフがコードレビューで発射されたら、この後に怒涛の批判が続くと覚悟すべし。
コンピュータ革命はまだ始まってもいない
The Computer Revolution Hasn't Happened Yet.
-by Alan Kay
天才は見てる世界が違うな。
未来を予想する一番の方法はそれを作ってしまうこと
The best way to predict the future is to invent it.
- Alan Kay
もうひとつアラン・ケイから。この人、こんな言葉と共にパーソナルコンピュータなるものを普及させた、とかカッコよすぎ。
リファクタリング、テスト、ドキュメント化をするための許可なんて求めるな。それら全てはプログラミングの一部。自分の仕事をするための許可なんて求めるな。
Don't ask permission to refactor, test, document etc. It's all part of "programming". Don't ask permission to do your job.
そうよ。黙ってやれよ。
いつも「自分はどんな問題を解決しようとしているのか?」と問い続けること。
Always ask "what problem am I trying to solve"?
夢中でコード書いた後に変な仕様に気付いて「はて?これは一体なんのために書いていたのでしょうか?」ってなることたまにある。
家族との時間を過ごしているなら、心もそこに居るべし。気になっている解決すべき問題のことは忘れて、そこに居るべし。会議の時は、参加しろ。会話に集中して、気なってる解決すべき問題があるのか知らんが、そのテメーのコードのことばっかり考えてんじゃねーよ!(最後の方は意訳)
If you are spending time with your family, be there - forget that tough problem you've been wrestling with. When you're in a meeting, participate - focus on the conversation and forget about the work that's piled up.
- Shunryu Suzuki
Shunryu Suzukiはアメリカで禅を広めた人。スティーブ・ジョブズが推薦する本の中にShunryu SuzukiのZen Mind, Beginner's Mindがあった。ジョブズ氏は禅に傾倒してたな。
早過ぎる最適化が悪の元凶。確固たる理由が見つかるまでは総当りアルゴリズムでいいから始めよ。
"Premature optimization is the root of all evil" Start with a brute force algorithm until you find a reason to change.
- Donald Knuth
Donald Knuthはアルゴリズム解析の分野を開拓した科学者。
謙虚でいること。全ての人はそのキャリアにおいて異なるレベルの学ぶ過程にある。その人達を助けてあげよう。またあなたが困った時には教えを請おう。そしてコミュニティにお返しをしよう。
Be humble. Everyone is at different points of learning in their career. Help others on their path. Ask for help when you need it. Give back to the community.
-Leon Gersing
いいこと言うわ。スタックオーバーフローをもっと使うようにしよ。
思うんだけど、みんなに「ウェブサービスってなに?」って聞くと十人十色の答えが返ってくるよね。
I think everybody has a different answer for what Web services are.
-James Arthur Gosling
Javaの神様、ジェームズ・ゴスリン。この人まーまーぶっとんだ発言が多くて面白い。その中でこの発言はまとも。
メモリの中の磁気コアを入れ替えるのが最初はめちゃくちゃ難しかったのを覚えている。最後にはコスト面でもパフォーマンス面でも成功を収めることができた。でも最初の時点ではそんな方法がまったく分からなかったんだ。
I remember the difficulty we had in the beginning replacing magnetic cores in memories and eventually we had both cost and performance advantages. But it wasn't at all clear in the beginning.
- Gordon Moore
ご存知、インテル設立者のゴードン・ムーア。この人が言うからステキに感じるのであって、これをボケなエンジニアが言うと「最初からちゃんと考えとけよ」とか返されそう。
UNIX は基本的にシンプルなオペレーティングシステムだ。しかし天才的にそのシンプルさを理解できなければ、この意味は分からないだろう。
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity.
-Dennis Ritchie
Dennis RitchieはC言語とUNIXを作った人。
野心はワールド・ワイド・ウェブにおけるスパイダー(蜘蛛)の役割を果たす。
Ambition is to be the spider in the World Wide Web.
-John McCarthy
John McCarthyは人工知能の第一人者。おっさんなかなかうまいこと言うね。
インターネットはヒエラルキー無しにみんなのアイデアが共有できる。
The Internet enables us to share the ideas we have without having to create another hierarchy.
- Anita Borg
最終的には死ぬなら火星が良いな。着陸の衝撃ではない形でね。
I've said I want to die on Mars, just not on impact.
- Elon Musk
おもしろい!
以上。世界の凄腕エンジニア達からのプログラミングに関するお言葉集でした。
エンジニアの皆様へ
「ほとんどのエンジニアには解けるが、下位10%のダメなエンジニアにだけ解けないパズル?」なるものをシリーズ化して8パズル作成した。もしご興味あれば解いてみてください。
http://tango-ruby.hatenablog.com/entry/2015/11/30/122814