Ruby on Railsの作者より:高まった生産性を仕事を余計にこなすためではなく自分の将来に向けて使おう

IT ConversationsRuby on Railsの作者デービッド・ハンソンが2008年5月にRailsConfでおこなった講演が配信されている。そして、以下でも聞ける。
Download
RoRの思想についての言及が冒頭にあるが、大部分は開発者の身の処し方についての講演である。その部分の概要は以下の通りである。



RoRは他のフレームワークや開発手法に比べて生産性について依然として優位性があり、RoRを使って開発していると「余剰開発力」を享受できる。しかし、その状態は永遠には続かない。遅かれ早かれ以下のどれかが起こるから。

幸い、どれもすぐには起こりそうになく、RoRでの開発はまだしばらく生産性の点で有利である。その優位性によって生ずる余剰開発力をいかに活用すべきだろうか。もっとも簡単で、よくおこなわれているのは、開発に振り向けることである。余剰によって、より多くの機能を開発することができる。しかし、それは増えた収入を浪費するようなものだ。石油枯渇後に備えた投資をしない産油国のようなものだ。ぎりぎりの量の仕事をこなし続けていると周りの状況にうとくなってしまう。燃え尽きてしまうかも知れない。将来への備えをしないと、RoRの優位性が失われたときに、並の開発者に成り下がってしまう。
自分への投資を怠ってはいけない。それが、自分の優位性を保つ唯一の方法だ。開発者として、人間として成長していれば、RoRが陳腐化しても次のものに対応できる。平均の10倍以上の生産性を上げる開発者がいる。しかし、それは生まれついてのものではない。そうなるために学ばなければならい。そのために私が心がけていることは次のことである。

  • 仕事とは離れた活動をして、仕事では使われない脳の部分を使うようにするのがいい。37signalsの同僚には金属細工、バンジョー、飛行機の操縦を趣味でやっている人がいる。ソフトウェア開発では使わない脳の部分を鍛えることはソフトウェア開発にもいい影響を及ぼす。ある筋肉のトレーニングは他の筋肉も鍛えることになるのと同じだ。
  • もっと長時間寝るべきだ。睡眠を短時間しか取らずに働き続けるスーパーマンをめざす人が多いが、それは持続不可能だ。短時間の睡眠では最高の生産性は発揮できない。最高の状態で短時間働くほうが、悪い状態で長時間働くよりもいい。
  • 日々ネットで伝えられることを追うのに費やす時間を減らす。そうやって知ったことで1週間後も覚えていることがどれだけあるだろうか。その代わりに価値が持続する読書をしよう。たとえば:
    • Gerald WeinbergのThe Secret of Consulting
    • Chad FowlerのMy Job Went to India
    • Ken Beckの本、最近のものではImplementation Patterns
    • Clayton ChristensenのThe Innovator's Dilemma
  • ルネサンス人をめざす。レオナルド・ダビンチがすごいのは、多くの分野に長けていたことだ。プログラム開発ばかりではなく、他の分野の知識も持とう。たとえばビジネスやデザイン。それらの知識はプログラム開発者としての価値を大いに高めてくれる。なぜなら、それらを知ることで、何が重要かの判断ができるようになるからだ。平均の10倍の生産性を上げる開発者は10倍の量のコードを書くわけではない。コーディング量は皆似たようなものだ。コードの価値が平均の10倍なのだ。何が重要かが分かり、そのことに取り組むからそうできる。
  • 重要なことに取り組むこと関連して、私はいかに少ないコーディング量で済ますかを心がけている。1日に500行書いているなら300行に制限してみるといい。コーディング量を減らすことで、重要なことが浮かび上がってくる。Basecampを開発していたときは、使う時間を1週間に10時間に制限した。それが最も重要なことだった。1週間に10時間しか使えないとなると、重要なことにしぼらざるを得ない。これは、余剰開発力を開発に振り向けないことでもある。
  • 同じことをずっとし続けるのではなく、ときどきは一から新たに始めるべきだ。すでにあるものに全く新たな機能を加えるのでもいいし、20%プロジェクトでもいい。RoRの開発が進展するのは、私が新たなプロジェクトに取り組み始めたときだ。新たなことを一から始めることで非常に多くのことが学べる。
  • やっていることを公開して共有しよう。人前で話すこと、ブログを書くこと、オープンソースにすることは、他の人のためになるよりも、自分のためになる面のほうが大きい。RoRを公開することを通じて私は非常に多くを学ぶことができた。自分のやっていることの価値を人に納得させること、それについて議論することで、自分の考えがより明確になり、自分が何に情熱を感じるかを知ることになる。それによって、自分が何に時間を使うべきかが明確なる。

Alistair CockburnがSoftware Development as a Cooperative Gameで次のように言っている「The purpose of playing this game well is to be able to get the best position on the next game.(このゲームをうまく戦う目的は、次のゲームで最善の位置に付けることだ)」。私たちの多くはこれから先何百ものプロジェクトに取り組むことになる。将来のゲームに向けての準備をすることは当然だ。
37signalsでは最近週4日制をはじめたのだが、それに対する反響に驚いている。それでは仕事がこなせないのではと心配する声が多い。20%労働時間が減っただけだ。平均の1.5倍あるいは2倍あるいは10倍の生産性を上げているなら、20%会社で席に座っている時間が減ってもどうということはない。生産性はむしろ上がっている。よりフォーカスするようになった。プログラム開発においては、使った時間と生み出す価値の相関は非常に低いのだ。
余剰開発力は永遠には続かない。それを酒や毛皮のコートに浪費するのではなく、よりよい開発者となるよう自分への投資に向けて欲しい。そうすれば、次のフレームワークだけでなく、さらにそれに続くいくつものフレームワークにも対応できる。