【57】「もうすぐ」よりも「今」を大切に
私のお気に入りの言葉に、「大げさな表現は控え目な表現よりも何百万倍もわるい」があります。この言葉のプロジェクトマネジメント版は、「『今』というのは『もうすぐ』よりも何百万倍もよく、『後で』よりも、何億倍もよい」となるでしょう。
ソフトウェア開発業界にいる人なら、「バイパーウェア」という言葉を聞いたことがあるはずです。バイパーウェアとは、延々と語られてはいるけれども、実際には一度も実現されたことのないソフトウェアのことです。私たちはソフトウェアの開発計画を立案できます。そして、そのソフトウェアが実現する機能について議論できます。しかし、さわって、動かして、やりとりできる現物のソフトウェアの方が、要件を完全に記述したワードのドキュメントよりも何百万倍もすぐれています。
これはソフトウェアのコードを「今」すぐに書くことを意味しています。あなたが作ったプロトタイプは、今すぐにユーザビリティに関するフィードバックを与えてくれます。パフォーマンスを心配しているのですか? 動くソフトウェアなしに、どうやってパフォーマンスを最適化するのでしょうか?
アジャイルソフトウェア開発はすばやいイテレーションに注力することで、「もうすぐ」よりも「今」を大切にしています。たいていの場合、イテレーションはわずか 1 ~ 2 週間です。つまり、できるだけすばやくコードを書いてユーザーに届けるのです。もしユーザーが気に入れば、あなたの勝利です。それ以上に重要なことは、もしユーザーが気に入らなくても、早く失敗できるということです。
早く成功することは遅く成功するよりも百倍よいことにすぎませんが、早く失敗することは遅く失敗するよりも百万倍もよいことなのです。遅く失敗するよりも早く失敗した方が、ソフトウェアを見直して、再調整し、書き直すための時間が与えられます。出荷の 1 週間前に問題が見つかると、もう出荷停止にせざるを得ないでしょう。しかし、初期の段階で失敗したとしても、実際にソフトウェアが動き始める頃には、もうだれもそのことを覚えていないのです。
たとえ新機能を追加しても、使っているプログラミング言語やフレームワークのせいですぐには公開できないのであれば、あなたが使っているツールには問題があります。コードをコンパイルするのに数秒、数分といったオーダーではなく数時間もかかるのであれば、早期に頻繁にビルドすることはできないでしょう。ソフトウェア開発にこうした不備な点があると、あなたは競争上明らかに不利になります。あなたが毎日使っている有名な Web サイトの多くは、30 分足らずで新機能を公開できるのです。
アジャイル開発者は、ソフトウェアをすばやく作ることで得た品質のおかげで、業界をリードしています。彼らは自分たちのコードを絶えずテストしています。ソフトウェア開発ライフサイクルの最後になってから、ユニットテストやインテグレーションテストを書いているのでしょうか? いいえ、そんなことはありません。彼らは「今」テストを書いているのです。テストファーストやテスト駆動開発というのは、ソフトウェア開発のトップ企業の「慣習」です。テストは重要です。今すぐやるくらいに重要なのです。
ソフトウェアプロジェクトの成功に計画は必要不可欠ではない、というわけではありません。最新のソフトウェアプラクティスやユーザーの期待に基づいて、計画を立案しましょう。ソフトウェアが簡単に、自由に、即座にできるようになったこの時代に、手書きしたコードを細心の注意を払ってパンチカードに転記して、それを靴箱に入れてシステム管理者のもとに運んでいた時代の方法論はもはや通用しません。私たちは今の時代にいるのです。それに合わせてプロセスもうまく調整しなくてはなりません。