「よいアイデア」を避けよ
著者: グレッグ・ナイバーグよいアイデアは、プロジェクトを破壊します。即死という場合もありますが、ゆっくり死に至る方が多いようです。マイルストーンに到達できず、バグの数が次第に増えていって緩慢な死を迎えるのです。
ここで言う「よいアイデア」とは、魅力的で、頭を使う必要がなくて、問題などなさそうで、間違っても痛い目に遭うようなことなどなさそうなアイデアのことです。こういったアイデアは、プロジェクトが半分くらいまで進み、すべてがうまくいっているようなときに、チームの誰かの頭に浮かび、ます。よいペースで作業をこなし、最初のテストもまずまずで、納期に間に合うのは確実、すべてが順調という時です。
誰かが「よいアイデア」を持ってきて、あなたはそれを受け入れます。すると突然、あなたは、最新バージョンのHibernateの新しい機能を使うためにプロジェクトを手直ししています。でなければ、デベロッパーがユーザーにAjaxがいかによいツールかを見せてしまったのでいくつかのウェブページにAjaxを組み込んでいたり、RDBMSのXML機能を利用するためにデータベース設計に手を入れたりしています。プロジェクトマネージャーには、この「よいアイデア」を実装するためにかかる時間はほんの数週間だと言っていますが、最初の予想よりもコードに与える影響が大きいことが後になるとわかり、日程が少しずつ遅れていきます。おまけに、最初の「よいアイデア」を取り入れたために、どこからともなくよいアイデアがうようよと現れて、ノーと言いにくくなってしまいます(蟻の穴から堤も崩れるといつことわざの通りです)。
「よいアイデア」のどこがやっかいかというと、それらが「よい」ところです。「悪 い」アイデアなら、出てきた途端ににはねつけることができます。ビジネスのニーズを満たすために必要とは言えないものをアプリケーションに組み込もうとしてスコープを広げ、複雑度を増し、余分な労力を費やす結果になるのも、それが「よい」からなのです。
このような思いをしないために、注意すべきやり取りの例を挙げておきましょう。
- 「もし…なら、すごくいいと思わない?」このように、「すごくいい」という言葉が含まれている文は危険信号です。
- 「ねえ、yyyフレームワークのバージョンxxxがリリースされたんだってさ。アップグレードしなきゃ!」
- 「zzzを使うなら、xxxをリファクタリングしなければいけないと思うんだよね…」
- 「xxxは本当に強力なんだよ。きっと…で使えると思うんだけどなあ」
- 「ねえ、<あなたの名前>、設計についてずっと考えていたんだけどさ、いいアイデアがあるんだよ!」あなたの名前>
最後の例は、ちょっと意地悪すぎたかもしれません。しかし、あなたのプロジェクトを殺す「よいアイデア」には、くれぐれも注意しましょう。