ゆったりとした流れを創るということ
先日、チームのメンバーと昼ご飯を食べていて少し話しに出てきた内容を、このブログに関心を寄せて頂いた読者の方々に伝えたいと思い、なんとか記事にしてみたい。上手く伝わるかどうか心配ですが...
我々は、JAVAの基盤系技術に強く、J2EEの初期アーキテクチャから、様々な会社のフレームワークを見てきたし、最近で言えばオープンソース系ってところもです。この業界、もっと絞って言うなれば、Java開発のフレームワーク技術については、次々と目新しいものが登場してくる。少し前で言えば、DI(Dependency Injection)+AOP(Aspect Oriented Programming)だとか、JSF(Java Server Faces)だの、CoC(Convention Over Configuration:設定より規約)だとか。JPA(Java Persistent API)だとか、アノテーションでメタ情報とか。ちょっと分野が違いますが、Ruby on Railsとかね。
次々と登場してくる新しい話題と技術。我々専門家としては相応に消化して取り入れていく訳ですが、この急速な変化と言うか、昨日はこっちで明日はあっちみたいな思想の流れ、そして多次元に広がる流れに、真に付いて行けている開発技術者がどれだけいるのか、振り回されているだけではないのか、と言う疑念が生じてきます。現場でも、その技術を理解しているしていないとかの問題ではなく、思想としてポリシーとしてそれで良いのかって、首を傾げたくなるシーンも多く見受けられます。つまり、上手く消化できていなかったり、必要でないのに捨て切れていなかったり、見合っていないのに取り入れたり、その技術概念に取り付かれて広い視野で物事が見れなくなっていたり、ってのを感じることがあります。これは今の状況に限ったことではなく、永遠の論議であり教え事でもありますが。
別の表現を試みて見ましょう。いわゆる「state of the art」(最新の技術)を全てかき集めて、今のマーケット的に話題で流行の技術をベースに開発しようとしています。ひょっとしたら1つや2つぐらいは試してみたい新しい要素もおそらく取り入れていることでしょう。あるいは、ベンダーのマーケッターが、これからはこれですよって、耳元で囁いているかも知れません。さて、あなたは、いや、あなたのチームには、これらの目まぐるしく変わる最新の技術要素を吸収して身につけているエンジニアがどれだけいるでしょうか。そして、どのように取り組めば良いのでしょうか。昔、とあるお客さん曰く、「自分が10人とか20人いればそのような方式でやるだろうけど、そうじゃないので、こういう方式にしてある」と信念を持って話してたお客さんもいらっしゃりました。おそらく、最新の技術や話題の技術に重点ポイントがあるのではなく、業務を知っていたり、自社の要員とか力量であったりとか。あるいはまた、物事を難しくしないでシンプルにするってことでもあります。その分、他のことに気が回りだします。そして、それが一番生産性が高く発揮できたり品質が良かったりするわけですね。技術的には、最新のセクシーな感じではなく、オーソドックスなスタイルとでも言いましょうか。もちろん、レガシー技術を例えているわけではなく、どれもJavaベースの話ですよ。
日々、目新しく登場する技術や人を魅了する話題など、急速な変化と情報の流れの中、すべてを飲み込んで取り入れて消化するリソースもないと思うのです。古い技術のままの居場所にずっと留まっているのは死を意味する一方で、少しでも最新の技術を採用したいとか最新技術のオープンソースを組み合わせてという思想も理解出来る一方で、そんな両極端なものではなく、どちらかというと、技術的に「ゆったりとした流れを創る」というような設計思想というか、そういう方針で取り組まれてもよろしいんじゃないでしょうか。
生産性を上げるとか品質を上げるイコール、最新の技術を使うということではありませんし、ベースとなる設計思想やフレームワークの頻繁な乗り換えには疑問です。確かに新しい流行には楽しい要素があり技術者としてエキサイティングな面はあるのですが、ソフトウェアの生産性や品質を上げるためには、目まぐるしい急速な変化の中で、自社あるいはプロジェクトに見合ったゆったりとした流れを意図的に創ることも重要でしょう。これを標準化と言う言葉で表現することも出来ることでしょう。じっと動かないのではないですよ、ゆったりとした流れを創るのです。特に技術要素の乱立・乱用気味の昨今の流れの中、このような考え方も重要なのではないでしょうか。
