アジャイル開発を一日だけやって思った事
7月からアジャイル開発でシステム開発を行う事になりました。アジャイル開発は知識的には理解しているつもりではいて、部分的な手法についてはウォータフォール開発でも取り入れたりしていたのですが、完全に頭からシッポまでアジャイル開発というのは今回初めてです。
アジャイル開発手法は数々ありますが、今回はソニックガーデンさんが実施している独自のやり方を参考にさせていただこうと思っています。そしてタイミングよく実際の運用手順の連載が始まっているというw。とても助かります。
スマホ&Heroku連携!事例に学ぶ無駄のないチーム開発の極意 | Think IT
http://thinkit.co.jp/book/2012/06/07/3569
まだアジャイル開発を始めて1日しかたっていませんが感じた事を思うまま書いてみたいと思います。
考え方の違い
ウォーターフォール開発は 品質>スピード という考えのもの開発を行っていきますが、アジャイル開発では スピード>品質 という考え方で開発を行っていきます。この考え方の違いがとても大きく、それぞれのタイミングで今までと違う判断が必要になってきます。たとえばシステムの品質を高める作業を行う場合、スピードを落とさないものであれば積極的に取り入れていきますが、当然スピードを阻害するような安易な品質向上は実施しないということになります。
開発者の重要性
スピードが最優先という考え方によって出来るだけ無駄なコストを払わないようにするということを突き詰めると最終的には「開発者の開発スピード≒プロジェクトのスピード」ということになっていきます。アジャイルではオンサイト顧客(またはそれにほぼ近いもの)の考え方によりリアルタイムにシステムの出来具合を顧客が確認するため、開発者がどれくらいのスピードで開発するのかということを顧客は肌で体感することになります。アジャイルは早くて安いというイメージがありますがそうではなく開発者のタレント化が進み高くてもいいので良い開発者に早く作ってほしいという方向にニーズは進んでいくのではないかと感じます。
マネージメントしない(できない)
今までのマネージメントというのはスケジュールと品質をいかに保つかという点に労力を割いてきました。しかし、開発者にできることだけをやるアジャイルではそもそもスケジュールという考え方は希薄というか無いに等しいためそもそもスケジュールをマネージメントする必要がありません。品質についてもアジャイルでは品質よりもスピードが重視されるためマネージメントするほどの品質管理は不要です。では品質よりも重要なスピードをどうやってマネージメントしていくのかというところに行き着くのですが時間は早くする事も遅くする事も出来ませんし、開発スピードを唯一コントロールできるのはマネージャではなく開発者なのでマネージメントしたくてもできないという問題が発生します。マネージャは開発者の開発が止まらないように技術的な問題をいかにスムーズに解決に導くか等、今よりもテクニカルな作業が重要になってくると思います。マネージャ職の人は大きな舵取りが必要になってくるのではないかと感じます。
今後アジャイル開発の導入が今後進んでいくとSI会社全体のシステム自体を大きく変えて行かなければ対応できないのではないかという感触をまじまじと感じる事ができました。まだ1日でこれほどの気付きを得る事ができてとても貴重な経験になっています。これから先どのようになって行くのかとてもわくわくしています。