アジャイル開発についての愚考

最近、失敗している(現在進行形)アジャイル開発に携わって、私なりに思ったことを書いてみる。


現在携わっているアジャイル開発では、お客様の要求を書いたストーリー単位で仕事すすめています。そのこと自体は悪くは無いと思うのですが、アーキテクチャや、開発する上でのポリシー等をまるで決めないまま1イテレーションからひたすらお客様の要求を満たす機能を作りつづけているのは失敗なのではないかと思います。
アーキテクチャ等がまともになく開発期間が限られてしまっているため、開発時に発生するシステム的な問題がどうしても力技での解決になり、また共通部分をまとめたりする場合に変更が大きくなりすぎがちになってしまったりします。
私的には初期のイテレーションでは業務用件の開発をするのではなく、アーキテクチャの開発*1を行い、中盤以降のイテレーションでひたすら業務用件を潰していくというのが良いのではないかと思います。業務用件の機能を作る上でシステム的な問題がいくつか発生すると思いますが、それらは次のイテレーションで解決するなどを行なえばよいかと。
むしろ、なぜいま携わっているプロジェクトが、まったくアーキテクチャ無しの状態で業務用件の機能を開発させているのかが理解できないわけですが。はじめてのアジャイルプロジェクトだったので、そんなものかと思ってました。orz


失敗点は他にもありますが、とくに失敗だと思う点にスケジューリング*2があります。
イテレーション内で開発する予定のストーリー数が明らかに多すぎるのです。通常、アジャイルプロセスでは前イテレーションの開発実績から、次イテレーションの開発可能量を見積もるとおもうのですが、まるで前イテレーションの実績が考慮されていない状態です。XPの変形プロセスであるにもかかわらず、開発完了日が固定できまっており、末尾からスケジュールが決められているような感があります。
結果、1イテレーション内で何とか割り振られているストーリーを終わらせようとし、足りない時間を補うためにテストコードの品質がさがります。というか、テストをほとんど書かなくなります)。この時点で開発プロセスが破綻してしまっています。それでも時間が足りないため、次はコードの品質を落とします。そうした結果、システム的な問題に気づいていても無視したり、"TODO" とだけ書いて、あとは場当たり的なコードを書いて済ませたりすることになります。
そうして出来上がったものは、目も当てられないぐらい低品質な、なにも考慮されていない腐ったソフトウェアになっています。
これが、現在携わっているアジャイルプロジェクトの現状です・・・


#ほかにも突込みどころがいろいろと・・・DB設計が変とか。XP変形プロセスなのに、開発メンバのやる気を削ぐことばかり言うチームリーダとか(w

*1:ちょっと変な日本語ですね・・・ニュアンスだけつかんでください汗

*2:とよんでいいのかな?