昨日、ちょっと技術系サイトを拝見しておりましたら、複数のアプリケーションについて共通化をしたら、モチベーションは下がるし、効率は下がるし、全然ダメだったよ的な記事を拝読しました。具体的に、どれくらい効率が下がったかとか、モチベーション低下がどのような状況から主張されているのか非公開のようですから、なんともいえないのですが、それでも共通化は、目指した方がいいと思うんですよね。
その文章を拝読するに、アプリケーション毎の細かな仕様が異なっていたそうですが、異なるチームが作っていた類似アプリケーションの場合、一般的に細かな仕様は違っているはずで、むしろバシッ!と一緒のほうが違和感があります。そこで、共通化する部分のみの仕様を決めていかなければならないのだろうと考えます。
体制的にも、共通化するチームは、アプリケーションのチームからリーダーもしくはエース級のメンバから構成させる必要があると思います。共通化するチームは、いきなり大きな成果を出すのではなく、ミニマイズされたフレームワークを開発提供し、最初は、空気のような、水のような、可もなく不可もなくのような小さなライブラリを提供することから始めた方がいいと考えます。その小さなライブラリについて、十分過ぎる程のドキュメントや、サンプルコード、そしてサポートをして、アプリケーション開発チームの皆様から信頼感を得つつ、時間をかけて成長させていくステップが必要です。
アプリケーション開発チームは、リクエストを多数だしたりするわけなのですが、個別の機能を共通化するチームが受けてしまうと、いびつなフレームワークになってしまう可能性があり、結果として利用頻度は下がる傾向になると思います。
なにはなくとも、共通化を始めたら、ちょっとやそっとではやめない、そんな気合が重要だと思います。
だいたい、偉い人の気まぐれ、いえ、一存でやめることになっちゃうのですけどね、、、
(ここでいう偉い人とは、非エンジニアとか、おっさんとか、そういうくくりはなくて、単純に偉い人です。年齢が若くてエンジニアですごい人でも、気まぐれは気まぐれです。)
ということで、共通化なのか、フレームワークなのか、ライブラリなのか、よくわかりませんが、効率を上げるチャレンジだけは、続けてほしいなと思いました。