アジャイル開発とは?メリットや導入ポイント、失敗事例を完全解説

アジャイル開発とは?メリットや導入ポイント、失敗事例を完全解説

チームによるシステムの共同構築やSFAなどの社内管理ツールの構築を実現する際、
なくてはならない開発技法に“アジャイル開発”と呼ばれるものがあります。

セールスフォースの導入を検討しているなら、アジャイル開発について理解することは非常に大切なことです。今回は、アジャイル開発の全般的な知識について解説していきます。



目次

アジャイル開発の基礎知識

システム構築やソフトウェア開発業務を担当している方にとって、アジャイル開発は、非常になじみのあるものかもしれません。しかし、下記のような方は、アジャイル開発など、聞いたことがないと思います。

・IT分野の仕事にたずさわった経験がない方・・・。
・IT分野の仕事をしていても、普段からシステム周りの業務を一切担当しない方・・・。
・社内管理を昔ながらの方法で実践している方・・・。

IT分野の仕事に従事していても、「アジャイル開発って、なんですか?」と疑問に思われる方はたくさんいます。ましてや、IT分野の業務に従事していないのなら、知らないのも無理はありません。

しかし、この機会に、アジャイル開発というものが、どういったものなのかご理解いただきたいです。アジャイル開発による仕事の流れが理解できれば、自社のシステム開発を企業に依頼する際、現段階でどの程度まで仕事が進んでいるのかが感覚的に把握できるようになるからです。これによって、どんな流れで理想とするシステムが完成するのか全体像が見えてきます。

少し前置きが長くなりましたが、まずは、アジャイル開発の意味から確認していきましょう。

アジャイル開発とは?

インターネットで“アジャイル開発とは”と検索エンジンに入力して調べてみても、システムエンジニアなどのIT従事者向けに書かれているため、よくわからないですよね。そのため、ここでは、アジャイル開発というものを、IT業務に従事した経験のない方向けに、非常にわかりやすく解説していきます。

まず、アジャイル開発のアジャイルの英語の意味から確認していきましょう。アジャイルを日本語に訳すと“すばやい”や、“あたまの回転のはやい”、“機敏”といった意味があります。そのため、アジャイル開発は、スピーディで柔軟性のある開発であることを指しています。

そのため、アジャイル開発という用語(概念)は、システムやソフトウェア開発に従事するものの間で、仕事に対する基本的な概念や取り組むうえでの心構えとしてなくてはならないものとなっています。

従来型のソフトウェア開発の問題を解決するアジャイル開発についての詳細はこちら

アジャイル開発の歴史をさかのぼる

アジャイル開発って、そもそもどんな人たちが言い出したことなのでしょうか?突然、アジャイル開発による概念が提唱されるわけがありません。実は、米国ユタ州に集結した17名の技術者やプログラマーが開発手法の重要な部分を統合するべきなのかどうか議論したことが、アジャイル開発が誕生したきっかけとなっています。

17名の技術者やプログラマーの議論内容がまとめられたものは、のちに、アジャイルソフトウェア開発宣言と呼ばれ、ソフトウェア開発とそれに基づく12の原則が定義されたことで、現在の開発技法の指針となりました。

12の原則が定義されなければ、システ開発者は、大幅な修正作業に追われ、顧客が理想とするようなシステム構築にかなりの時間がかかっていたでしょう。

アジャイル開発の特徴とは?

システム開発などのプロジェクトを進めることになりました。現在では、当たり前のようにアジャイル開発による開発技法が採用されていますが、それには明確な理由があります。そこで、アジャイル開発の特徴について確認していきます。

まず、システムやソフトウェアの開発計画を立てるには、開発期間から考えていきます。どんな仕事でも納期や完了までに与えられた期限があるでしょう。システム開発でも同じです。開発期間が明確に決まっているため、その期間内で開発を終えるには、最短距離で計画を立てなければいけません。

しかし、どれだけ細かく計画を立てたとしても、計画の変更がどこかのタイミングで生じます。当初想定していなかった問題が発生している以上、対応しないわけにはいきません。アジャイル開発では、何度も顧客と打ち合わせを行います。打ち合わせのたびに、細かい要望を聞き出し、テストを行うことで開発期間を短縮していきます。

そのため、アジャイル開発では、少しずつ顧客の要望を聞き出し実装するため大幅な修正に追われません。これこそが、アジャイル開発の最大の特徴であり、大幅な修正対応に追われることなく最短距離でシステム開発が行われる理由です。顧客を巻き込んだシステム開発は、社内の意見をそのまま反映させることにつながります。

アジャイル開発のメリット・デメリット

アジャイル開発は、システム開発において欠かせない開発技法であることがわかりました。実際に、自社専用のSFAを構築する場合、アジャイル開発を採用することで、具体的にどんなメリットやデメリットがあるのでしょうか?ここでは、アジャイル開発のメリット・デメリットについて解説していきます。

【メリット1】開発工数が短縮される

多くのシステムエンジニアやソフトウェアの開発者がアジャイル開発を採用するのは、開発工数が短縮されるという最大のメリットがあるからです。たとえば、事前に双方で打ち合わせを行い、驚異的なスピードでシステムエンジニアがSFAを開発したとします。

もちろん、納期という点や作業のスピードという点を評価すれば、100点満点であることは間違いありません。しかし、柔軟性という観点から考えたとき、0点だといえないでしょうか?おそらく、事前打ち合わせだけで開発されたSFAは、あとで機能性を追加したくても修正できません。

事前打ち合わせでは、上手くコミュニケーションがとれておらず、確実に反映させるべき機能を導入し忘れるということはよくあることです。アジャイル開発なら、小さく目標を立てて少しずつ設計していくため、どんな修正にも素早く対応できます。その結果、開発工数が短縮され、コストの軽減につながります。

【メリット2】使い勝手の良いものが完成する

ほとんど打ち合わせを行われない場合、開発者の勝手な判断でシステムが組まれがちです。アジャイル開発では、進捗があるたびに、事前に打ち合わせた設計や計画について確認しあうため、必然的にユーザーにとって使い勝手の良いものが完成します。

「今まで、社内システムの構築を外注化したことがあるけれど、上手くいかなかった・・・。」という経験があるのなら、おそらく開発途中のフィードバックが上手くいっていないのではないかと思います。

弊社が設計するSFAの満足度が高いのは、アジャイル開発によって、少しでも開発を進めるたびに、常に顧客に対してどんな状況なのか、既存のシステムに組み込みたいことはないのかを報告するからです。その結果、常に顧客のフィードバックが開発システムに組み込まれ、満足度の高いものが自然と完成します。

【メリット3】認識のズレをなくせる

アジャイル開発は、従来の開発技法よりも、開発者と顧客との間で認識のズレをなくしやすいです。アジャイル開発でSFAなどの開発を進める以上、徹底的なヒアリングが実施されるため、

「こんなふうに伝えたつもりですが・・・。」
「これは、以前伝えたと思うのですが・・・。」

といったことが起きづらいです。普段の業務について、いろいろなことを聞かれると非常に面倒だと感じるかもしれませんが、すべては顧客と開発者の認識のズレをなくし、良いシステムを作り上げるためですので、ぜひ協力してください。

【デメリット1】当初の計画からズレやすい

「こんなシステムを設計しましょう!」と明確な目標や計画、指針を打ち立てたとしても、アジャイル開発を進めて行く以上、作業を進めるたびに当初の計画からズレていきます。当初の計画からズレるというのは、デメリットのようにも思えます。

しかし、システム開発において当初の計画通り進むということはほとんどありません。何度が打ち合わせをすることで新しい事実が発覚することはよくあることです。新しく見つかった事実をSFAなどのシステムに組み込めば、必然的に当初の計画から異なる方向に進んでしまいます。

そのため、これをアジャイル開発のデメリットと考えずに、よりよい方向に進むために、当初の計画が変化していると考えてみてください。

【デメリット2】打ち合わせ回数が多い

アジャイル開発で進めるには、開発者と顧客が何度も打ち合わせをしなければいけません。可能な限り、顧客の負担にならないように配慮はしますが、それでも他の開発技法よりも打ち合わせ回数は多いです。

顧客の中には、「1回の打ち合わせで、優れたシステムを作ってほしい!」と考えられる方もいます。ハッキリと断言できることは、優れた社内システムを構築するには、それなりに打ち合わせなどの時間やヒアリングの手間が発生するということです。

打ち合わせ回数が多いというのは、デメリットのようにも感じますが、それだけ顧客にとってフィードバックの機会があるということです。その分、修正指示が出しやすいということですので、アジャイル開発の打ち合わせ時には、素直な意見を聞かせてください。

アジャイル開発導入時のポイント

アジャイル開発では、納期までに何度も打ち合わせを行い、顧客からのフィードバックを受けながら、システムエンジニアがSFAなどのソフトウェアに、具体的な要望を反映させていきます。アジャイル開発は、開発までに時間がかかるものの、顧客の要望を反映しやすい仕組みであることから、優れた開発技法であると言われていますが、完璧ではありません。

アジャイル開発の特徴を理解しないまま導入した結果、顧客とシステムエンジニアとの考えに差がうまれ失敗に終わってしまうこともあります。今回は、アジャイル開発を導入するにあたり、どうすれば成功するのか開発導入時の具体的なポイントについて解説していきます。

全体のスケジュールを明確に定める

アジャイル開発は、どうしても当初の計画を何度も見直すため、納期を明確に立てづらいです。しかし、納期を明確に立てられないからといって、具体的な設計期間を設けなくて良いというわけではありません。

納期までに完成させるには、最低でもどんな機能を実装しておく必要があるのか、各種機能を実装するために、どの程度の期間が必要なのか、具体的なスケジュールを把握しておくことが開発導入時の大切なポイントとなります。

顧客にアジャイル開発を理解してもらう

アジャイル開発の最大の目的は、顧客とシステムエンジニアとの間で密接な信頼関係を築くことです。その信頼関係を築くには、アジャイル開発がどのようなものなのか顧客に具体的に理解してもらわなければいけません。

そのためには、システムエンジニアから具体的なアジャイル開発の流れを顧客向けに説明するか、顧客自身で勉強する期間を設けることが必要になるでしょう。アジャイル開発は、顧客やシステムエンジニアにとって非常に良い手法ですが、双方に明確な理解がない状況では、

「アジャイル開発って、なんですか?怪しいですね。」
「要望通りのものを実装するのに、時間がかかりすぎではありませんか?」
「フィードバックを求めすぎでは?もっと自分たちで考えていただきたい・・・。」

といったことが起きてしまいます。こうなってしまうと、信頼関係を築くどころか、トラブルが連続するようになるため、事前にしっかりと勉強してもらうことが大切な導入ポイントとなるでしょう。

メンバーの不足に迅速に対応できる

アジャイル開発では、顧客の要望に迅速に対応する必要があるため、そのプロジェクトに参加するメンバーには、高いスキルが要求されます。また、さまざまなトラブルに対して柔軟に対処する必要があるため、どうしても負担が大きくなってしまいます。

そうなると、どうしても顧客やシステムエンジニアの属人化が起きてしまいます。アジャイル開発を理解した担当者の数が1人しかいなければ、なにかが起きたときに対処できません。そして、システムエンジニアも、顧客のフィードバックを受け取りながら開発を継続できなくなります。

万が一、家族が危篤でプロジェクトを継続できない状況や病気に備えて、プロジェクトの参加メンバーに不足が存在しないか、プロジェクト継続できない状況に陥ることがないか見直すことが開発時の大切な導入ポイントとなります。

参加メンバーに良いシステムを作る意識があるか

アジャイル開発は、顧客側で良いシステムを作りたいという意識がなければ、絶対に成功することがありません。なぜなら、普段の業務フローを確実にシステムに反映する際、顧客自身のやる気やアウトプットの仕方次第で、作業計画やシステムの組み方が大きく変わるからです。

とりあえず、すべて業務として委託しておけば完成するだろうという考え方や、上司に頼まれたから仕方なく対応しているという考え方では、アジャイル開発で進めること自体に苦痛を感じるでしょう。

逆に、良いシステムを作りたいという意識があれば、自分自身がアウトプットしたことが、次々と反映されていくため、最短スピードで要望通りのものができあがるでしょう。参加メンバーに良いシステムを作る意識があるかを見直すことも導入時の大切なポイントとなります。

見積もりを明確にしておく

アジャイル開発では、当初想定しなかった業務が発生することがあります。それが、顧客によるフィードバックやシステムエンジニアによる積極的な提案によっておきたものなら、良い動きといえるでしょう。

しかし、どんな要望にも無料で対応できるというわけではありません。事前に打ち合わせた予算内でできることもあれば、対応できないこともあります。この点を明確に決めずに、アジャイル開発でプロジェクトを進めると、間違いなくトラブルが起きてしまいます。

どこまで予算内で対応するのか、どの範囲の追加実装なら有料となってしまうのか、トラブルが生じる前に見直しておくことが、大切な導入ポイントとなります。

アジャイル開発以外の開発手法とは?

世の中には、アジャイル開発以外にもさまざまな開発手法が存在します。ここでは、独自のシステムを開発する際、アジャイル開発以外の開発手法を採用すると、どのようにプロジェクトを進めることになるのか、他の開発手法を紹介します。

プロトタイプ開発とは?

プロジェクトを少しずつ進めては相談するアジャイル開発とは異なり、プロトタイプ開発では、初期段階で一定の試作品を作成します。ちなみに、テレビなどでも「プロトタイプを~。」といった会話がありますが、これは試作品を指す用語です。

あくまでも完成系ではなく、のちに顧客の評価によって、システムの仕様を変更していきます。プロトタイプ開発では、システムエンジニアによる試作品の作成と顧客の評価を繰り返していくことで、双方が納得のいく場所を目指していきます。

プロトタイプ開発の特徴

プロトタイプ開発は、顧客自身がそれほどアウトプットしなくても、システムエンジニアが試作品を開発するため、評価しやすいという特徴があります。試作品を作成することで、完成したものを強くイメージすることにつながり、大きな失敗を防げます。

そして、試作品があれば、システムエンジニアが形にしようとしているものが明確になり、予算的な提案がしやすくなります。一方で、予算の提案があっても、試作品の具体的な形を見ている顧客は、納得して予算の増額を受け入れられます。

しかし、試作品を作成する以上、中途半端なものは作れません。そうなれば、システムエンジニアにとって、非常に大きな負担となってしまいます。また、大規模システムをプロトタイプ開発で進めると、あまりにも確認作業が増えてしまい作業効率が悪くなってしまいます。

ウォーターフォール開発とは?

各工程で定められたタスクが完了するまで、次の工程に進まない開発手法をウォーターフォール開発といいます。水が上部から下部にかけて流れるように、一度進むと戻らないことからウォーターフォール開発と名付けられました。

そのため、各工程で定められた明確な成果物が完成するまでは、次のタスクには、一切着手しません。これにより、各工程の品質を一定上に保てるため、システムの完成度が高くなります。

ウォーターフォール開発の特徴

ウォーターフォールでは、明確な要件定義やゴールを決めてシステム開発を行うため、全体的なスケジュール設計がしやすいという特徴があります。なにをすべきかが明確なので、作業時に迷いなく、システム開発に従事できます。

しかしながら、あらかじめ要件を大きく決めてしまうため、途中の段階で変更があると、システムエンジニアに大きな負担を強いることになります。また、顧客の要望に応じた機能を反映しづらいという問題を抱えています。

そのため、コミュニケーションを重ねていく中で、優れたアイデアが出たとしても、大きく方向転換をしたり、システムの仕様を変更したりすることはできないため、柔軟性において大きく欠けているといえます。

スパイラル開発とは?

アジャイル開発と非常に類似した開発手法に、スパイラル開発というものがあります。スパイラル開発とは、その名前の通り、要件定義や設計、コーディング、テスト、試作品の作成、評価などを1サイクルと考え、螺旋状に繰り返していく開発手法のことです。

あなたは、システムエンジニアから、「良いSFAシステムを構築したいので、完成系について具体的なイメージを教えてください。」といわれたとき、「自社のSFAシステムを構築するなら、○○な課題を解決できる□□なシステムを構築してください。」と明確に答えられるでしょうか。

多くの人が「突然そんなこと言われても困りますよ・・・。」と、回答するでしょう。その思考に基づいて、一度、1サイクルを回してフィードバックすることで、完成を目指していくのがスパイラル開発です。

スパイラル開発の特徴

スパイラル開発では、1サイクル回すたびにフィードバックが得られるため、顧客の要望が反映しやすいという特徴があります。この点については、アジャイル開発でも同様のことが言えるのではないでしょうか。顧客からのフォードバックをもとにして、従業員が使いやすいシステムを構築するため、完成後も問題点が少なく、利便性が高くなります。

一方で、スパイラル開発では、顧客からフィードバックを受けるたびに、開発し直す必要があるため、想像以上に開発コストが上昇しやすいというデメリットを抱えています。また、当初決めていたスケジュールよりも開発期間が長期化してしまうため、納期までに間に合わないこともあります。

このように、スパイラル開発は、アジャイル開発と同じもののように捉えられがちですが、フィードバックが多い点は共通していても、プロジェクトの進め方に違いがあります。やはり、さまざまな開発手法と比較しても、アジャイル開発は、総合的に優れていることをご理解いただけると思います。

アジャイル開発に分類される開発手法とは?

さまざまな開発手法と比較したとき、アジャイル開発は、非常に優れた開発手法であることがわかりました。ただし、アジャイル開発の中には、さまざまな開発手法が存在するため、それぞれどんな手法があるのか解説していきます。

スクラム開発とは?

アジャイル開発の中でも代表的な開発手法として、スクラム開発というものがあります。プロジェクトを進める際、コミュニケーションを重視し、一丸となってソフトウェアの開発を進めることから、スクラム開発と名付けられるようになりました。

スクラム開発では、優先順位の高い機能から順番に開発を進め、着実にプロジェクトを成功に導きます。あらゆる作業を短く区切りながら、作業を進めて行くため、非常にタイムマネジメントがしやすいです。

スクラム開発の特徴

スクラム開発では、プロジェクトに参加するメンバーひとりひとりが、進捗状況に問題が発生していないかを精査するため、相互にコミュニケーションがとれていなければ、優れた機能を持つ成果物を完成させることができません。
開発期間をプロジェクトメンバーごとに短く区切り、成果物を完成させるには、どのように進めるべきなのかメンバー自身が自発的に考える必要があるため、他の開発手法よりも視野が広がりやすいという特徴があります。

エクストリーム・プログラミング開発とは?

多くの開発手法では、事前計画を重視するものが多いですが、事前に立てた計画よりも途中で見つかったアイデアや仕様変更を重要視し、柔軟に対応していく開発手法をエクストリーム・プログラミング開発といいます。

エクストリーム・プログラミング(Extreme Programming)開発は、XPと省略されて呼ばれています。ちなみに、エクストリーム・プログラミングによる開発手法でソフトウェアの開発を進める場合、下記の4つのことを意識して成果物の完成を目指していきます。

・コミュニケーション
・シンプル
・フィードバック
・勇気

SFAなどのソフトウェア開発において、このような価値観を持つことは非常に大切なことです。たとえば、勇気は、あらゆる仕様変更やクライアントの意向に全力で向き合う勇気を意味しています。エクストリーム・プログラミング開発は、システムエンジニアを中心とした開発手法として大切にされています。

エクストリーム・プログラミング開発の特徴

エクストリーム・プログラミング開発では、上記のような4つの価値観が大切にされていますが、それ以外にも5つの基本原則が事前に決められています。その5つの基本原則とは、下記の通りです。

・素早いフィードバック
・単純さの採用
・インクリメンタルな変更
・変化を取り込む
・質の高い作業

プロジェクトを進めている最中は、上記のような基本原則を重視しているため、今必要なことだけに全力で取り組みます。

たとえば、新しいソフトウェアを開発する場合、
「こんな新機能があれば、便利では?」
「このような機能が必要になるかも…。」
といったことを思うことがあるかもしれません。

しかし、基本原則にもとづいて、新機能の着手してしまうと、“単純さの採用”による原則に反してしまうことになります。実際に、深く検討されることなく実装された機能の多くは、無駄なコストになっており、予算を圧迫します。

しかしながら、“必要最低限しか仕事をしない!”という考え方では、柔軟性が大きく失われてしまうため、予算と相談しながら上手くバランスをとって開発を進めていきます。

ユーザー機能駆動開発とは?

実際に、動作が確認できるソフトウェアを適切な間隔で繰り返し提供していく開発手法をユーザー機能駆動開発といいます。ユーザー機能駆動開発(Feature Driven Development)は、アジャイル開発手法のひとつとして、FDDと呼ばれています。

ユーザー機能駆動開発の特徴

少し難しい話となりますが、概要だけでも理解しておいてください。ユーザー機能駆動開発は、ソフトウェア工学に基づいたベストプラクティスを中心として形成されています。ちなみに、ベストプラクティスは、良い方法や技法、フォーマットの存在を意味しています。つまり、「ベストプラクティスがある!」ということは、なにかのソフトウェア開発をする際に、1番ベストな方法があるということです。具体的には、考え方であり、世界標準の概念にも適用されています。

アジャイル開発をユーザー機能駆動開発で進めるときは、ユーザー側の視点でビジネスモデルを徹底的に“見える化”していきます。そのため、ユーザー機能駆動開発では、事前にビジネスモデルのモデリング作業を実施しなければいけません。

このように、アジャイル開発には、さまざまな手法が存在しており、一言で言い表せるものではありません。しかし、アジャイル開発の中でも代表的な開発手法を見てもわかるように、柔軟性が高いことは間違いありません。

アジャイル開発の失敗事例について

顧客の要望を聞き出し、最短距離でソフトウェア開発ができるため、アジャイル開発を導入するメリットは大きいと思われがちですが、決して良い側面ばかりではありません。もちろん、アジャイル開発の導入の仕方次第では、失敗してしまうこともあります。
ここでは、アジャイル開発で生じがちな失敗事例について調査してみました。

コミュニケーションの欠如によって失敗に終わる

アジャイル開発が最高のパフォーマンスを発揮できるのは、顧客とシステムエンジニアが良好な関係を築けているからです。万が一、同じ目標に向かって進むことが困難な状況に陥った場合、すべてが失敗に終わってしまいます。

顧客「1回でいいものを作ってください。なんで、聞き入れてくれないのですか?」
システムエンジニア「アジャイル開発とは、何度も修正しながら進める開発でして…。」

このような関係性では、双方に不信感がつのってしまい、当初目標としていたものを作り上げることは難しいでしょう。アジャイル開発では、1週間~2週間ごとに、積極的な意見交換が行われるため、どちらかが消極的にならず、常に積極的な姿勢が求められます。

納期を意識した反復行為が行われない

アジャイル開発は、顧客のニーズを反映しやすい開発技法であるため、どんなことでも実現できると思われがちです。この思い込みがアジャイル開発で失敗を引き起こします。顧客とシステムエンジニアの双方が積極的にコミュニケーションを交わせば、さまざまな発見があります。

当初、予定していなかった新機能を搭載したいとった要望も数多く出てくるでしょう。積極的な意見交換が行われることは、非常に良いことです。しかし、どんなプロジェクトにも納期があることを把握しておく必要があります。

新機能が追加されれば、システムエンジニアには、当初予定していた機能に加えて、新たにタスクが追加されます。プロジェクトの一定の変化に対応できるように、タスク管理を事前に行いますが、あまりにも新機能を追加してしまうと、最悪の場合、納期に間に合わなくなることを理解しておく必要があります。

大幅なコストアップに対応できない

新機能が追加されれば、タスクが追加され納期に間に合わなくなるリスクがあると説明しました。それ以外にも、コストアップにより、プロジェクトが破綻してしまうことがあります。

当初の設計要件が非常にシンプルなものでも、打ち合わせを重ねていくうちに、非常に複雑になってしまうことがあります。要件が複雑になれば、それを実現するために、開発当初よりも作業工数が増加してしまい、その結果、大幅な予算の確保が求められるようになります。

顧客の要望を実現しやすいアジャイル開発ですが、コストを無視した打ち合わせは、無駄となってしまうため注意しなければいけません。

スクラムマスターの実力不足による問題

アジャイル開発では、スクラムマスターが中心となって、顧客とシステムエンジニアに存在する溝を埋めていきます。スクラムマスターは、プロジェクトマネージャーとして、積極的な行動が求められます。

スクラムマスターは、主に下記のような存在をとりまとめていくことになります。

・利害関係者
・プロダクトオーナー
・企業
・開発チーム

プロジェクトによって、スクラムマスターがとりまとめる関係者に多少の違いがありますが、常に全体への説明や指示出しが求められます。スクラムマスターは、企業ごとにカスタマイズされたSFAを構築するうえで、欠かせない存在です。

スクラムマスターは、開発に関する専門的な知識や取引する顧客のビジネス内容、利害関係まで、すべて把握したうえでプロジェクトを進める必要があります。主に、スクラムマスターは、SFAを開発するシステムエンジニア側のメンバーから選定されます。

良いシステムを作りたければ、スクラムマネージャーが楽になるように仕事をしましょう。そうすれば、ヒアリングを重ねる必要がなくなり、最短距離で良いシステムを開発できます。

顧客の過信により、アイデアがまったく出てこない

IT業界で働くシステムエンジニアは、知的な側面が大きく、“言わなくても、自分たちの思い通りのものを作ってくれるだろう・・・。”と、思われがちです。そのような顧客の過信は、アジャイル開発が失敗に終わる原因を作りだしてしまいます。

ハッキリと申し上げれば、顧客でわからないもの(言語化・視覚化されないもの)は、開発側のシステムエンジニアもわかりません。アジャイル開発でプロジェクトを進める以上は、顧客側からのアウトプットが非常に重要な意味を持つため、普段の業務でどんなことをしているのか、どんな問題が発生しているのか明確化していきましょう。

このとき大切なのは、自分たちのしていることを当たり前のことと思わないことです。当たり前のことだと思い始めると、アウトプットを怠る傾向があるため、まったく異業種の人に、1日のスケジュールを説明するように、すべての仕事内容を言語化、視覚化していきましょう。

アジャイル開発を成功に導くために

アジャイル開発では、プロジェクト参画者の取り組み方によって、得られる結果は、大きく異なります。どうすれば、アジャイル開発を成功に導けるのか、そのポイントについて解説します。

プロジェクトメンバーの役割を確認し、理解し合う

アジャイル開発が始まったとき、顧客やシステムエンジニアを含めた参加メンバーが明確な役割を意識して、プロジェクトに参画しなければ、コミュニケーション不足によるトラブルが発生します。

たとえば顧客は、お金を払うため、“お客さま意識”を持ちがちです。

「システムエンジニアが、すべて解決してくれるだろう。」
「依頼さえすれば、優れたシステムが完成するだろう。」

そんな考え方では、積極的なコミュニケーションが交わされることがなくなり、お互いに不満を持つようになります。そうならないようにするためには、お互いが期待していることを伝えて、どんな行動を求め、プロジェクトの参画者としてどのような役割を果たすべきなのか理解しておく必要があります。

役割が明確になっていれば、お互いにどのような行動をとることで、相手が仕事をしやすくなるのか意思疎通ができるため、スムーズな動きが可能となります。

積極的な質問を促す

アジャイル開発では、積極的に質問をしていかなければいけません。「質問することは、いけないことである・・・。」などという気を遣う必要はありません。逆に、積極的に質問や回答がやり取りされなければ、優れたSFAシステムを作り上げることはできません。

その際、上司の方が部下に対して、絶対にやってはいけないことがあります。それは、「そんな質問をする必要はない。」と、質問内容を却下することです。そもそも、答えのないものを顧客とシステムエンジニアの二人三脚で作っていくため、部下だからといって、その質問が参考にならないと断言できません。

逆に、新入社員や勤続年数が数年しか経過していない部下だからこそ、気づけることがたくさんあります。上司として、アジャイル開発で指揮をとってくなら、プロジェクトに参画するメンバーが積極的に意見しやすいような環境を作り上げていきましょう。

間違えることを、明るく捉える

社会生活をしていると、“間違えること=悪”という意味合いで捉えがちです。しかし、アジャイル開発では、間違えることを明るく捉えていただきたいです。なぜなら、定期的に間違えたことを議論して、良いSFAシステムを作っていくからです。

失敗したことを、積極的に話してくれるような環境作りができた会社は、アジャイル開発で成功しています。ちなみに、アジャイル開発で失敗したことを周囲に伝えず隠すことで、あとで膨大な修正が発生し、コストが予定よりも大きくなってしまった企業が存在します。

そうなると、納期を遅らせるような事態となってしまうため、間違いに気づいたときは、すぐにプロジェクトの参画者に報告してください。

進捗状況を振り返る

アジャイル開発では、プロジェクトの進捗状況を定期的に振り返り、どんな点が上手くいき、なにが失敗へとつながってしまったのか、お互いに話し合うことで成功を目指していきます。

あくまでも、振り返るのは、業務内容であって、“誰が提案した”といったことは、一切関係ありません。業務のすべてには、責任がともないますが、
「○○の提案をしたのは、山田さんで、おかげで良いシステムを作り上げることに貢献してくれた。でも、鈴木さんの意見は、間違いだった。」などと打ち合わせで言ってしまったら、間違ったことを伝えた人は、おそらく2度と発言しなくなるでしょう。

アジャイル開発における振り返りとは、人の行動を指摘し、不平不満を伝えることではないため、打ち合わせの本質を理解して、お互いのコミュニケーションの場として、有効な時間の使い方をしてください。

納期までの進捗状況を話し合う

開発手法として柔軟性があるアジャイル開発ですが、納期までの進捗状況について明確な話し合いが行われていないと間に合わない可能性が出てきます。
本来、間に合う予定で進めているにもかかわらず、納期までに顧客の会社にカスタマイズされたSFAシステムが完成しなかったということは、アジャイル開発が失敗したことを意味します。

そういった場合、ソフトウェアを開発するシステムエンジニアに大きな問題がありますが、顧客との打ち合わせ内容が固まっておらず、当初予定していたように進められなかったということも考えられるため、顧客とシステムエンジニアを含めて進捗状況を報告し合う場が必要です。

そして、進捗状況の報告方法には、正解はないため、上手な人を参考にしたり、双方でどういった報告方法が良いのか打ち合わせるなどして、積極的に意見交換をしてください。

詳しくはこちら「アジャイル開発を成功に導くためのマインドセット」

アジャイル開発で重要なプロダクトオーナーの役割

優れたプロダクトオーナーが在籍するプロジェクトは、顧客とシステムエンジニアの連絡が上手く取れているため、SFAなどの開発が成功しやすいです。逆に、プロダクトオーナーが在籍していない場合は、双方のコミュニケーションが上手くいかず、失敗に終わることが多いです。

他にも、1つのプロジェクトに対して、複数のプロダクトオーナーが在籍している場合は、コミュニケーションによる混乱が起きがちです。そのため、アジャイル開発におけるプロジェクトの成功率は、1人のプロダクトオーナーのスキルにかかっているといっても過言ではありません。ここでは、プロダクトオーナーとは、どのような存在なのか、その具体的な役割について確認していきます。

アジャイル開発に参画する人の役割についての詳細はこちら!

双方的に開かれたオープンコミュニティを作る

アジャイル開発は、顧客とシステムエンジニアによる良好なコミュニケーションがなければ、上手くいきません。そこで、プロダクトオーナーが間に入り、双方の連絡役としてプロジェクトを進めていきます。その結果、双方的に開かれたオープンコミュニティができます。

たとえば、SFAで新機能を追加したいといった要望を出す場合、プロダクトオーナーに連絡を入れると、顧客の考えがシステムエンジニアにつながります。もし、実現不可能な状況なら、プロダクトオーナーがその事実を伝えてくれます。

だれのどんな意見でも、プロジェクトメンバー全員に隅々にまで行きとどくのは、プロダクトオーナーによる働きが大きいといえます。

全体を俯瞰し、明確な決断を下す

アジャイル開発のプロダクトオーナーは、顧客やシステムエンジニアの意見に対して明確な決断を下します。なぜなら、顧客とシステムエンジニアの意見をすべて受け入れ、プロジェククトを進めることはできないからです。

あらゆる物事を受け入れることは、納期の延期につながります。また、顧客やシステムエンジニアに不信感を抱かせてしまうかもしれません。ある程度の柔軟性をもってアジャイル開発を進めますが、どこまで意見として反映させるかは、プロダクトオーナーの決断にかかっています。

逆に、自社の意見を反映させたいなら、プロダクトオーナーに自ら相談しましょう。「言わなくても、わかるだろ…。」といった態度では、反映されるわけがありません。プロダクトオーナーがすべての指揮をとっているため、事前に相談することが絶対的なルールとなります。

課題とゴールを常に意識させる

プロダクトオーナーは、プロジェクトに参画するメンバーに対して、課題とゴールを常に意識させる必要があります。なぜなら、アジャイル開発において、顧客やシステムエンジニアに課題を意識させなければ、なにを解決すべきなのか、次回の打ち合わせまでに、どんなアイデアを出すべきなのか、明確にならないからです。

また、打ち合わせを重ねるごとに、新たな機能が追加されることもありますので、はじめに設定していたゴールを変更する必要性が出てきます。常に、ゴールを明示することで、顧客やシステムエンジニアは、プロジェクトが完成に近づいていることを実感し、未完了となっているタスクを再確認することにつながります。

アジャイル開発で、プロダクトオーナーが現状の課題やゴールを明確化すれば、プロジェクトに参画するメンバーのリーダーシップを握りやすくなり、チーム内の統制をはかりやすくなります。

トラブルの拡大を未然に防ぐ

アジャイル開発では、さまざまなトラブルに対して柔軟に対応できる開発技法ですが、プロダクトオーナーは、常にトラブルの拡大を未然に防ぐために、全体的な視野でプロジェクトを監視しています。

たとえば、顧客がプロダクトオーナーに意見した場合、システムエンジニアの視点は、欠落しています。一方で、システムエンジニアがプロダクトオーナーへ意見するときは、顧客のビジネス的な背景が欠落しています。

そういった状況下でコミュニケーションを交わしながら仕事を進めると、間違いなくトラブルが発生します。顧客やシステムエンジニアの思い込みでプロジェクトが進行し、被害が拡大してしまう前に、そのトラブルの所在にプロダクトオーナーが気づき、素早く阻止することが仕事として求められます。

プロジェクトに参画するメンバーのやる気を引き出す

アジャイル開発では、さまざまな人たちが1つのプロジェクトに参画しています。そのため、技量ややる気、視野の広さ、経験など、人によってまったく違います。プロダクトオーナーは、メンバーのやる気を引き出し、パフォーマンスを向上させるため、ポジティブな言葉を常に投げかけます。

それにより、プロジェクト開始当初よりも良質なアウトプットが出やすくなるため、SFAなどのシステムを構築しても完成度の高いものができやすくなります。

このように、プロダクトオーナーは、常に全体の指揮をとる仕事をしており、顧客とシステムエンジニアの連絡役として非常に重要な役割を持っているため、なんでも相談するようにしてください。そうすれば、プロダクトオーナーは、仕事を効率的に進めやすくなります。

アジャイル開発のまとめ

アジャイル開発による開発技法について、全体像を説明させていただきましたが、いかがだったでしょうか。社内で使用するシステムである以上、システム会社に仕事を委託さえしておけばよいという考え方では、自社とマッチングするSFAを構築することは難しいでしょう。
ぜひ、アジャイル開発の特徴を理解して、顧客とシステムエンジニアでより良い関係を築いてください。

SFAの教科書@二階堂
株式会社ベンチャーネットにてコンサルティング問い合わせ窓口を担当している二階堂です。皆様のセールスフォースの導入などのコンサルティングをさせて頂いてます。導入された後の悩みなども受け付けておりますので是非無料ご活用下さい。

*
*
* (公開されません)