前回(「アジャイル開発って何がいいの?」)はアジャイル開発について、ウォーターフォール型開発と比較しながらその概要を解説しました。今回はさらにもう一歩踏み込み、アジャイル開発の導入を阻んでいるさまざまな要因を分析し、それらの障害を乗り越えて導入へと向かうための方法を考えてみたいと思います。説明の都合上、若干前回と重複する部分もありますが、ご了承いただければと思います。
アジャイル開発への懐疑的な意見にどう答える?
アジャイル開発はもちろんソフトウェア開発における万能の開発手法ではありません。しかしながら、社会の動きが激しい現代において、要求の変化に柔軟に対応できるアジャイル開発は、顧客側にも開発側にも大きなメリットがある、魅力ある選択肢のひとつのはずです。
にもかかわらず、国内でのアジャイル開発案件があまり増えないのはなぜなのでしょうか。その理由を探るため、まずはアジャイル開発に対する懐疑的な意見をいくつか見ていきましょう。
意見その1「アジャイル開発は、大規模な案件には向かないんでしょ?」
アジャイル開発に対して最もよく指摘されることのひとつです。「アジャイル開発は10人以下の小規模なチームには適用しやすいが、20人以上のチームで行う開発案件には向かない」というものです。実際、アジャイル開発は10人前後のチームを1つの単位にして行ったほうが、チーム内外とのコミュニケーション、コラボレーションも含め、進行しやすい面はあります。
加えて、アジャイル開発のアプローチは中小企業のほうが受け入れやすいという傾向は否めません。大企業の場合、ウォーターフォール型を前提とするソフトウェア開発のプロセスが社内標準として規定されていることが多く、それとは整合しないアジャイル開発は社内規定に引っ掛かってしまうのです。これは、組織としての課題です。
それならば、「10人程度で構成されたチームを複数立ち上げ、作業を分散させて開発を進めていけば、大規模案件のアジャイル開発も可能になるのでは?」と考えたくなります。しかし、この場合は複数のアジャイル開発のチームをマネジメントする方法が確立されていない点や、複数の開発チームで並行して開発できる機能単位への分割手法が整備されていない点などで、抵抗感を抱く企業は多く存在します。
海外では既に、大規模で複雑な案件をアジャイル開発で行った成功事例が数多く紹介されているのですが、日本では「アジャイル開発は大規模開発に向かない」という思い込みがまだ根強いように思われます。海外での知見を参考にした、大規模案件へのアジャイル開発適用の課題を解決するための取り組みが望まれます。
意見その2「アジャイル開発は、1人のエンジニアに幅広い知識が求められるから、負担が大きいよね?」
前回も説明しましたが、アジャイル開発では1人のエンジニアにさまざまな役割が課せられます。設計も、コーディングも、テストもこなせる人材-つまりソフトウェアを「考えて」「作って」「テストする」人材が求められるのです。
しかし、このようなマルチなスキルをもった優秀な人材はどの会社にも、そう多くいるものではありません。1つの案件に、優秀なエンジニアを何人も張り付かせるほど余裕がある企業はほとんど存在しないと言ってもいいでしょう。
また、コミュニケーションやコラボレーションが苦手なエンジニアにとって、アジャイル開発は相当な負担を伴うとも、よく言われます。特にペアプログラミング(2人1組の共同作業で開発を行う手法。相互に相手の作業をレビューすることで品質が高まる)のような作業が苦手なエンジニアは少なくないようです。