Subscribed unsubscribe Subscribe Subscribe

ジャバ・ザ・ハットリの日記

日本→シンガポール→ベルリンへと家族と共に流れ着き、ベルリンのスタートアップで働くソフトウェアエンジニアの日記

世界の凄腕エンジニア達からのプログラミングに関するお言葉集は不思議にココロを打つのでした

プログラミング リファクタリング 英語

世界の凄腕エンジニア、科学者が講演や本で語ったプログラミングに関する言葉を集めた、「凄腕エンジニアのお言葉集」は不思議にココロを打つのでまとめた。

たった一言でもその言葉を発するまでに作ってきた製品や打ち出した理論の上にある、と思うとなにか言葉の重みが違うような。
 
 

シンプルな方がいいんだよ
Simpler is usually better
- Rich Hickey
f:id:tango_ruby:20160403201128j:plain

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
f:id:tango_ruby:20160403201232j:plain

他人が書いた「賢くみせようとして書かれたコード」で悩むことありますね。
 
 

明らかにバグが無いコードの方が明らかなバグが無いコードより遥かにいい。
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
f:id:tango_ruby:20160403201418j:plain

ヴォルテールはフランスの哲学者。哲学者じゃなくても、エンジニアなら完璧なんて永遠に来ないことを知っている。
 
 

スケーラビリティをデザインしなければ、あなたのコードはスケールしない。セキュリティをデザインしなければ、あなたのコードにセキュリティはない。
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.
- Alan Kay
f:id:tango_ruby:20160403201515j:plain

天才は見てる世界が違うな。
 
 

未来を予想する一番の方法はそれを作ってしまうこと
The best way to predict the future is to invent it.
- Alan Kay
f:id:tango_ruby:20160403201515j:plain

もうひとつアラン・ケイから。この人、こんな言葉と共にパーソナルコンピュータなるものを普及させた、とかカッコよすぎ。
 
 

リファクタリング、テスト、ドキュメント化をするための許可なんて求めるな。それら全てはプログラミングの一部。自分の仕事をするための許可なんて求めるな。
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
f:id:tango_ruby:20160403201701j:plain

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
f:id:tango_ruby:20160403201734j:plain

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
f:id:tango_ruby:20160403201815j:plain

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
f:id:tango_ruby:20160403201842j:plain

ご存知、インテル設立者のゴードン・ムーア。この人が言うからステキに感じるのであって、これをボケなエンジニアが言うと「最初からちゃんと考えとけよ」とか返されそう。
 
 

UNIX は基本的にシンプルなオペレーティングシステムだ。しかし天才的にそのシンプルさを理解できなければ、この意味は分からないだろう。
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity.
-Dennis Ritchie
f:id:tango_ruby:20160403201907j:plain

Dennis RitchieはC言語とUNIXを作った人。
 
 

野心はワールド・ワイド・ウェブにおけるスパイダー(蜘蛛)の役割を果たす。
Ambition is to be the spider in the World Wide Web.
-John McCarthy
f:id:tango_ruby:20160403202038j:plain

John McCarthyは人工知能の第一人者。おっさんなかなかうまいこと言うね。
 
 

インターネットはヒエラルキー無しにみんなのアイデアが共有できる。
The Internet enables us to share the ideas we have without having to create another hierarchy.
- Anita Borg
f:id:tango_ruby:20160403202126j:plain

  
 

最終的には死ぬなら火星が良いな。着陸の衝撃ではない形でね。
I've said I want to die on Mars, just not on impact.
- Elon Musk
f:id:tango_ruby:20160421184838j:plain

おもしろい!
 
 
以上。世界の凄腕エンジニア達からのプログラミングに関するお言葉集でした。
 
 
tango-ruby.hatenablog.com

tango-ruby.hatenablog.com

tango-ruby.hatenablog.com