流行の技術に、乗りますか

いわゆる「最新の技術」は目指さない

この業界、次々と新しい技術が登場する。トレンドのようなものも登場しては消えていく。そういったものを一生懸命キャッチアップし、やっと身についた頃に別の技術トレンドが台頭してくる。そんなことが繰り返されている。雑誌などを見ていると、少しでも油断した隙に世の中から取り残されてしまうんじゃないか、という恐怖すら感じることがある。
そんな中で、そういった技術トレンドをリードする人たちがスゴイ人たちとして尊敬を集める。そして、彼らは事実スゴイ人たちだと思う。
でも、みんながそういった人や技術を目指すのは間違っている、と思うのだ。僕は彼らを技術者として尊敬するし、その上で彼らとは違うところを目指したい。

何を競争力とする?

大雑把に言って競争力とは次の2つ。

  • 他社には作れないものを作る
  • 他社よりも安く作る

僕はやっぱり前者を目指したい。少なくとも、誰にでも作れるような開発業務でコスト競争に追われたくはないのだ。
でも世の中に氾濫しているのは後者の情報だ。次々と登場する技術トレンド、巨大企業が布教を進めるフレームワークや開発環境、注目を集めるオープンソース活動、これらはほとんど後者の技術に属すると思う。こういった知識はちょっと雑誌を購入すれば簡単に手に入れることができる。
では他社に作れないものを作るにはどうすれば良いか。当たり前だが、そんな方法はどこにも書いてない。それは自分で探し出す必要があるし、僕はなんとかしれそれを探し出したいと思う。そして、もしそんな「宝」を手に入れても、それをオープンに公表することはしないだろう。

有名なフレームワークを使う意味

MicrosoftやSunといった大企業が、開発環境やフレームワークを非常に安価に、あるいはフリーで提供している。また、オープンソースで有名なフレームワークやライブラリもある。こういったフレームワークの使い方は色んな雑誌でも取り上げられ、情報には事欠かない。
何故か。
当たり前だが、それだけ使う人が多いからだ。巨大企業がフリーで配っても、見返りが見込めるだけの市場があるからだ。
あえて断言してしまおう。そういった技術を必死でキャッチアップし続けても、競争力にはつながらない、と。巨大企業が提供した時点で、あるいは雑誌に取り上げられた時点で、それは陳腐な技術なのだ。つまり極論すれば「誰が作っても同じ」なのだ。あとは「如何に効率的かつ的確に仕上げるか」という勝負になる。「ウチにしかできない技術」ではなくなっている。
つまりその辺で流布している「技術」は「負けないための技術」であって「勝つための技術」じゃないのだ。

プログラマの本懐は?

勝負のポイントとして「如何に効率的かつ的確に仕上げるか」を選択したとしよう。これは僕の個人的な価値観だけど、これはプログラマの本懐とは違う。技術よりもマネジメントや人間系に勝負の軸足が移っている。如何にメンバーをまとめるか、如何にタイムマネジメントをこなすか、如何に的確に顧客からヒアリングするか、というところに重心がある。
もちろんこれらはすごく重要だ。この分野で活躍している方々の努力に水を差すつもりは毛頭ない。
でも僕はこれだけじゃお腹がすいてしまう。それよりは、アルゴリズムの工夫でパフォーマンスを上げたりとか、クラス設計の工夫で今までにない柔軟性を実現したりとか、斬新な機能を実装したりとか、そういうことを追い求めたいのだ。これこそがプログラマの本懐だ、と思うのだけど如何だろうか。

勝つための技術

こういったプログラマの本懐を求めることが、勝つための技術につながると僕は信じる。
もちろん有名なフレームワークは僕も使う。車輪の再発明をして無駄なコストをかけるつもりはない。利用できるものは利用したほうが良いに決まっている。ただし、有名なフレームワークを使った時点で、そこでは差別化できないということを心に留める必要がある。つまり、別途に「強み」を用意しておかないと単なるコスト競争に巻き込まれてしまうだろう、ということだ。
勝つためには、自社だけのフレームワーク、自社だけのライブラリを開発しなくてはならない。他社にないフレームワークやライブラリこそが、競争力の源泉になるはずだ、と強く信じる。

フレームワークの維持することの難しさ

しかしながら、フレームワークの自社開発には難しい問題が付きまとう。それはフレームワークを維持することであり、フレームワークを新旧交代させることである。
むやみに機能追加を繰り返せば、次第にフレームワークにガタが出てきてしまう。これを防ぐために機能追加は慎重に行わなくてはならない。しかし、どんなに慎重にやってもいつか新旧交代の時期はやってくるのだ。その末期たるや悲惨である。スパゲッティを極めた複雑なコードに埋もれて、顧客の無理難題に必死で応えることになる。そしてこう叫ぶのだ。
「あーっ、もう一から全部作り直してしまいたいっ!」
しかし、何年もかけて膨れ上がったフレームワークを一から作り直すにはかなりのコストがかかるし、経営状況によってはなかなかそういう経営判断が難しいこともあるだろう。こういった状況下ではプログラマはかなりのフラストレーションを溜め込むことになってしまう。

それでも勝つための技術を

実をいえば、僕は一度そういうフラストレーションから逃げ出してしまった。だから、本当はこんなことをエラそうにかける立場ではない。
だけど今あらためて、安易な技術に逃げたくはない、と思う。だからもう一度「勝つための技術」で勝負しようと思う。そして、日本全国の「表に出てこない勝つための技術」でかんばっている人たちにもエールを送りたい。

・・・ある友人と飲んで、そんなことを思った。