October 29, 2011
要求仕様があって、それを実現するシステムを作るのがシステム開発の考え方。
しかし、そこには2つの方向性を目指す人達がいて、一つは、要求された最低限の動作をもっともシンプルな形をスピーディーに実現する「動けば良い派」と、メンテナンス性やプラットフォームを意識したフレームワーク(構造)化をしたいと思って、世界観を作る「ロマン派」というのが存在するような気がする。
SI的なWebサービス開発では恐らく、データベースの正規化設計のあたりであったり、スドアドプロシージャ、OOのインターフェース設計、クラス設計のあたりにロマンが宿るんではないだろうか。
LLならライブラリやフレームワーク、アノテーションのあたりに世界が作られていることであろう。
どっちが良いとか悪いとか言うわけではない。どっちも一長一短になる。
「動けば良い派」は、シンプルに作るので再利用性やクラスなどでのまとまり感がなかったりするが、シンプルなのでわかりやすいコードになってるし、「ロマン派」は素敵な世界が作れれば、再利用性が高かったりするが、設計が暴走すると過剰品質を作り込み、独りよがりになることもある。
かつてのJavaあたりのフレームワークは、結構行き過ぎのものがあって、あまりガチガチにするのはやめましょう、というより戻しの歴史があったと思う。特にXMLバブルの頃にメタデータを使って各々の世界を作りすぎちゃった結果、言語仕様から離れた世界を作ってしまい、何が呼び出されてるのかわからなかったり、Eclipseでソースコードを辿れないような、Javaのエコシステムから外れてしまったという「やりすぎちゃった感」というのが、後のLLの隆盛にも繋がっているような気がしている。
「動けば良い」的な振る舞いと、「ロマン派」の、どっちが良いのかというと結論としては、「両方できるのが望ましい」という中庸なイメージが妥当。それぞれ大事。
「動けば良い」派で、できる人というのは目の前の解決すべき問題を素早く理解して、最適な行動ができる人に他ならないわけで、「ロマン派」で、できる人というのは、現在求められるスピードを犠牲することなく、如何に高みを目指せるかにかかっているのと、かつ、チームの足並みを乱さず引っ張って行ける技術と人間面でのリーダーシップが求められる。
と、ここまで書いて気がついている人もいるかもしれないが、女性は前者、男性に後者のタイプが多い気がしている。男性について言うと、子供を産めない生き物としての性質が、ものつくりにロマンを求めたくなるんじゃないか、という仮説があるのは他人の受け売り。男が、いつまでもおこちゃまねと思われるのは、永遠に種を植え付けるためだけの生き物だから、という話なのかもしれない。
あとロマンはロマンでも、プラットフォーム思考を持った世界観の構築が、圧倒的にアメリカ人の方が優れているのは、多分、コミュニケーションスキル、関心のレベルなんじゃないかと思ったりする。昔、DECやらHPなどにいた知り合いに聞いたのが、必ずチームにどうしようもなくできない奴が一人いるので、非言語的なコミュニケーションスキルが必要になる、的な話は聞いたことがある。最悪のケースだとJavaのインターフェースで縛るという方法でしょうかね。実際は知りませんが、良いように捉えると、そこら辺が、ロマン派が自己満足的になっちゃいけないという理由をイメージしています。