ある程度の年齢を迎えたプログラマが生き残るには

ある程度の年齢を迎えたプログラマが抱える悩みに、「若手のプログラマと比べて、どうやって価値を出していくか」という問題があります。これは言い換えれば「同じような生産性であれば、相対的に給料の低い若手のプログラマに置き換えられてしまうのではないか」という悩みです。


35才(2004年)でプログラマとしてオープンソースを始め、今年で42才になる俺が通りますよ。
35才までは、SIerの中でSEをやってたので、そんなにプログラムは書いたことがないです。


上記のエントリには、いろんな戦略が書いていますが、ぶっちゃけ戦略は一番重要なことではなく、一番重要なのは、常に自分の価値を高めるために努力し続けることです。
努力や挑戦をやめたら、自分の価値はどんどん陳腐化して下がっていくのは当たり前なのです。


自分がどんなことに挑戦してきたのかちょっと書いてみますね。


2004年1月、プログラマとして何か新しいことに挑戦したかった自分は、DI(Depencency Injection)とAOP(Aspect Oriented Programming)いう技術を選択し、オープンソースプロジェクトとしてSeasar2をスタートさせます。当時、DIやAOPは何が嬉しいのかあまり理解されていなかった頃です。でも直感的に良い気がしたんだよねー。特に理由はなく勘。そして、3月末にSeasar2をリリースすることになります。


DIやAOPは良いプログラミングスタイルをもたらすもので、生産性を向上させるものではないと当時思われていましたが、普及させるためには、生産性を向上させることも示さなければいけないと考え、インターフェースにAOPを仕掛け、SQLを自動生成するというS2Daoというデータベースフレームワークを思いつきます。
リリースは2004年、夏くらいかな。
この後のSeasar2の普及には、S2Daoが欠かせなかったと思います。S2Daoを使いたいために、Seasar2を(仕方なく)使うという人も多かったはずです。
インターフェースにAOPを仕掛けコードを自動生成するというスタイルを思いついたのは私が初めてだったはず。


データベースだけでなく、Webの部分も生産性を向上させなければいけないと考えた私は、HTMLテンプレートを使ったWebフレームワークであるS2JSFをリリースします。HTMLテンプレートを使ったフレームワークは、当時Tapestryなどいくつかありましたが、JSFという標準技術でHTMLテンプレートを採用したのは、私が初めてだったはず。その後、Faceletとか出てくるんだけどね。
リリースは2005年、頭くらいかな。


2005年、Railsが徐々に人気が出てきて、設定ファイルは悪みたいな流れが出てきます。この流れに沿って、設定ファイルなしでアノテーションで設定を行うSeasar2.3をリリースしました。
2005年、末くらいかな。
今では、クラスパスを捜査してクラスに設定されているアノテーションを読み取る手法は、非常にポピュラーですが、Javaでこのスタイルを導入したのは、Seasar2が初めてだったはず。


設定ファイルをなくすだけでは、生産性は余り向上しないと気づいた私は、Javaの生産性を飛躍的に向上させるために、スクリプト言語のようにソースコードを修正したら、その変更が即座に反映されるHOT reloading(当時はHOT deployと呼んでました)という技術を思いつきます。Javaでこのスタイルを導入したのは、Seasar2が初めてだったはず。
Seasar2.4のリリースは2006年末です。


当時、Webフレームワークの代表であるStrutsは時代遅れだと考えられていて、次々新しいフレームワークが発表されていましたが、いまいち普及していませんでした。この状況を見た私は、全く別のフレームワークを作るのではなく、Strutsをベースにbetter Strutsを作るのが世のニーズにあっているのではと考え、SAStrutsを作成します。
SAStrutsのリリースは2008年のはじめのほうです。
SAStrutsは、かなりの成功を収めました。今でも人気があります。


2009年4月、Google App Engine for Javaが発表になりました。これをみて、これまでの自分のテリトリーだったEnterprise Javaを捨て、Cloudに行こうと決心します。Slim3の開発が始まります。
Slim3のリリースは、2010年3月くらいです。


2010年、これからの時代は、ソーシャルアプリだと思っていましたが、携帯でFlash Liteを使ったソーシャルアプリは、2010年でピークを迎える気がしていて、どうやってビジネスをやっていこうか悩んでいました。
そこで発表されたのが、JobsのFlash外し(これは、後にまたひっくり返されるんですが)です。
よし、これからはHTML5でソーシャルアプリだと考え、技術調査 + 新規事業を計画し、金を出してくれる人の説得を始めることになります。


で、今に至る感じ。他にも紹介していない話はありますが、だいたいはこんな感じです。


ずっと、挑戦し続けているでしょ。挑戦したから必ずしも成功するとは限らないけど、挑戦しなければ、自分が陳腐化してだめになることは間違いないです。


これは、実はプログラマに限った話ではなくて、どんなことにでも言えることだと思います。常に自分の価値を高めるために挑戦し努力し続けることが重要だということです。


9/28のGoogle Developer Day 2010では、ソーシャルアプリを作るのにGoogle App Engineがどんなに向いているかの話をします。お楽しみに。