FacebookのエンジニアEvan Priestley氏が「どうやってプログラミングを学んだか」

Evan Priestley 氏がどうやってプログラミングを学んだかを教えてください | Knoh (ノウ)

共感する部分、参考になる部分が沢山あったので、
いくつかまとめて抜粋。*1

一番ためになる教訓は、一番苦労して得るものだ

  • マスターするには気の遠くなるくらいの時間を費やさなければならない

ソフトウェアの開発に最初から最後まで関わるという経験はとても貴重だったんじゃないだろうか。 なぜなら、プロジェクト開始時のダメなデザインのしっぺ返しを、後で自分でモロに受けるからだ。

一番重要で一番やっかいなスキルはシステムを設計するための判断力

  • どうやってシステムをデザインするかは、その後に多大な影響を与える

ぼくのプログラマーとしての成長に一番寄与したのは、「判断力をつける」ということじゃないだろうか

この「判断力」は、プログラマーにとって非常に重要なのだが、そう簡単に教えられるものでもない。 ぼくが知る限り、判断力をつける一番の方法は、自分で設計したシステムを長い間メンテすることだと思う。

「質 v.s. スピード」ではなく「質 = スピード」

  • 「質v.s.スピード」という概念は根本的に間違っている
  • 素早く開発をしなくては環境、あるいは自分の環境の理解の変化にソフトウェアがついてこれず、ソフトウェアが解決すべき問題が解決できなくなり、必然的に質が落ちてしまう
  • 質の高いソフトウェアを書かなくては、なにかある度にインフラが崩壊し、素早く開発をすることができなくなってしまう

片方を犠牲にした場合、知らぬうちにもう一つも犠牲にしているということをお忘れなく。

広く浅く覚えよう/広く浅く全体を見よう

  • 複雑なシステムを理解するには、全体のしっかりとしたモデルを頭の中に持つことがカギとなる。おおまかな全体図をまず把握して、そこから部分的につめていくことが大事だ
  • 浅く広くシステム全体を理解した方が、知識がお互いに補完しあって、大域的な理解や、新しい分野へのとっかかりにつながる

閑話休題

フェイスブックでは、ぼくは「一番 PHP を嫌っていないエンジニア」と自称していた。 ぼくのことを「PHP バカ」と呼ぶ同僚もいた。

どのプログラミング言語を使うかってのは、多くの人が考えるほど重要ではないと思う。 ぼくの経験上、一番PHPをバカにし、言語の重要性をうそぶく連中は、大体自分たちが提唱する言語でもロクな仕事ができないことが多い。

*1:タイトルと記事内容が逸れている気がしますが...