web-dev-qa-db-ja.com

政府プロジェクトにおけるアジャイルアプローチへの挑戦

以前のアジャイルディスカッション ここ は、ソフトウェア開発でのアジャイル方法論の実装の成功に対する重要なを指定する良い答えがありました。ポイントのほとんどは、典型的な組織と管理の課題でしたが、1つのポイントは私を心配させ、クライアントがプロセス全体に関与しなければならないということです。

クライアントはあなたが現実的に制御できない唯一のものです、おそらくあなたのビジネスモデルはあなたに政府の契約された仕事にあなたを連動させます例えば非常に厳格な契約は会社に以下を義務付けます:

  • 要求どおりにX機能を提供する

  • 機能のリクエストは壁を越えて投げられます。私たちがそれを聞きたくない私たちを気にしないでください。

  • お客様の心には機能の優先順位という概念はありません。それらはすべて重要であるか、または私たちはそれらを要求しなかったでしょう。

  • プロジェクトの費用は、超過分や期限に関係なく、Y額以上です。

  • すべての作業を完全に納品するための、絶対的で、厳格で、最終的な、交渉不可能な期限。

これまでにそのようなクライアントと一緒に仕事をしたことはありませんが、プロジェクトの資金はあまりに多すぎて渡すことができません。この作業が必要です。

私はここに来て[〜#〜] hard [〜#〜]を使ってプロセスを変更し、アジャイル開発に移行しましたが、ここではわかりませんこのプロジェクトが新しいプロセスに適合する場所を調整する方法。私はこれまで、開発チームを主導し、この道を歩むことを信頼してくれた、オープンマインドなハンズオフ管理の贅沢はありませんでした。アジャイルな方法。経営陣がこの道を先導してくれると信頼してくれたようで、今の状況ではウォーターフォールが非常に明確に求められているので、彼らを失望させたように思います。今バックトラックすると彼らの信頼を失うかもしれないと思います。

ここ のような他の答えは、この種のクライアントではアジャイルは不可能だと言いますが、同意しますか?似たような状況にあり、うまく機能した人はいますか?アジャイルを成功させるためにどのような戦略を実行しましたか?

24
maple_shaft

アジャイルであることとアジャイルであることには違いがあるということを最初に理解すると思います。アジャイル技術と特性のゆっくりとした展開-部門横断的なチーム、適応計画、進化的/増分的配信、タイムボックス反復、さらに Lean からの概念の導入は、Extremeプログラミング、スクラム、または結晶。

あなたは顧客の関与について明確に述べています。はい、アジャイル手法の多くは顧客の関与を必要としますが、アジャイルである必要はありません。すべての政府/防衛関連のプログラムで、私は常に顧客との接点であるプログラムまたはプロジェクトマネージャーを抱えていました。この人が「お客様の声」になります。電話会議やメール、電話での説明により速度が低下する可能性がありますが、チームの顧客代表である1人(または副PMがいる場合はグループ)にすることができます。確かに、それはまったく同じではありません。しかし、柔軟であり、変化に対応することについて俊敏ではないですか?

また、いくつかの重要な概念についても説明します。事前定義された要件、「壁を越えて」機能リクエストを行うこと、「すべてが重要」であるために優先順位が付けられていないこと、固定費や固定スケジュールのプロジェクトなどです。これらはそれぞれ異なる方法で対処できます。

すべての要件を前もって持っていると思われる場合は、そうでない可能性があります。要件は変わります。 「終了し、サインオフした」仕様があるからといって、それが堅固であるという意味ではありません。必要なドキュメントが何であれ、契約で指定された方法で快適に感じる方法をキャプチャし、要件、設計、およびアーキテクチャを提供します。さらに、これらが生きたドキュメントであるかどうかを確認してください(今日私が作業中に見た設計ドキュメントはリビジョンGとラベル付けされています。つまり、8回目の更新です)。特定のイテレーションでどれだけTBDとして残すことができるか、そして今どれだけ確定する必要があるかについて質問します。

ドキュメントを機敏に処理します。 「チームが望むもの」と「顧客が望むもの」との間で努力を重複させないでください。たとえば、顧客が従来のソフトウェア要件仕様を望んでおり、チームがユーザーストーリーを使用したい場合は、従来のSRSに適応し、ユーザーストーリーではなくアクションアイテムとローリングアクションアイテムリストを使用して、時間を費やさないようにします。 「システムは...」と「できるから」の両方を定式化する必要があります。ただし、プロジェクト間の違いに適応するためには、チームの規律が必要です。リフレクションで問題をキャプチャします。

開発に着手したら、5回または6回の反復を実行し、顧客を施設に招待して、実装のサブセットを確認します。すすぎ、このプロセスを繰り返します。一部の方法論で要求される一定の関与ではありませんが、視認性が高いという利点があります。お客様が「いいえ」と答えた場合、少なくとも試しました。彼らが「はい」と言った場合、アジャイルであることを彼らに啓発することができます。私が行っていた1つのプロジェクトで、顧客は数か月ごと(通常は3〜5か月)にサイトを訪問しました。彼らは私たちがQAテストを行うのを見守り、エンジニアとの懸念について話し合い、プログラム/プロジェクトオフィスとのビジネスについて話し合います。全員が同じページにたどり着く機会でした。

テストとメンテナンスは、他のアジャイルプロジェクトと同じように行われます。適切な方法でテスト手順を作成して欠陥を文書化し、契約上の義務ごとにメトリックを追跡し、テスト結果を文書化します。 TDDをフォローしたい場合は、ぜひお試しください。継続的インテグレーションは別の良いアイデアです。プロジェクトステータスのミーティング中に、プロジェクトマネージャーはこの情報を使用して、「N個の要件を実装し、M個のテストを実施し、X個のテストに合格しました」と言い、プロジェクトの健全性とステータスを金銭のある人に更新します。

お金と言えば、固定費や固定スケジュールの問題があります。

固定されたスケジュールを扱うことはかなり簡単です。要件を前提として、完了できる反復の数を知っています。各イテレーションのワークロードは、実装、テスト、統合する機能の点でほぼ固定されています。難しいかもしれませんが、機能を分割して事前に反復に割り当てることは不可能ではありません。これは、顧客を招待することについての私のポイントに戻ります。1年あり、2週間の繰り返しを使用している場合、おそらく顧客を四半期ごとに招待し(そして四半期ごとに招待し)、前の作業の結果を示します。要件の優先順位付け、将来の計画、およびスケジューリングの方法を彼らに見てもらいます。

固定予算の扱いも同様です。プロジェクトに費やした時間、リソースに費やしたコスト、したがって、イテレーションごとに誰もが何時間作業できるかがわかります。誰もがこれを注意深く追跡することを保証するだけの問題です。あなたの会社が残業のコストを食うことができるなら、それのために行きます。それ以外の場合は、全員が適切な時間勤務し、優れた時間管理スキルとタイムボクシングを使用して全員の生産性を維持するようにします。より生産的な時間は、コストを抑えるために必要なものです。会議やオーバーヘッドのコストなしに、より付加価値の高いドキュメントとソフトウェアを提供します。

結局のところ、それは必ずしもアジャイルであることではなく、アジャイルを優れたものにし、アジャイルであることを適用することです。要件の変化に対応できる、顧客が望んでいない場合でも頻繁にソフトウェアを提供できる、付加価値のあるドキュメントのみを作成できる(契約で作成する義務があるものと一緒に)など。

9
Thomas Owens

はい、アジャイルはそのようなプロジェクトには適切ではありません。それは、おそらく高価なコンサルタント、委員会会議、および政治的妥協による長年の分析の結果として、要件がすでに完了して固定されているように聞こえるためです。ウォーターフォールは、顧客が非常に規律があり、書面で彼らが望んでいるものを正確に伝えることができる場合は正常に機能します。それらは間違っているかもしれませんが、少なくともあなたはそれを書面で持っています、そしてあなたがそれを届ければあなたは給料を受け取るでしょう。 (もちろん、これは顧客満足度を示すものではありません。実際には、顧客が実際に必要としないものを提供する可能性があります。)

アジャイルは、あなたが持っていない問題を解決するために作成されました:要件の不確実性によるリスク。

顧客が変更要求を要求する可能性があるのは事実ですが、次の2つの方法のいずれかを使用します。

  1. プロジェクトのさまざまな段階でX個の新機能を吸収でき、シャツを失うことなく出てくることができるほどお金が良かった
  2. 最初に、顧客がタイトな価格で交渉しているため、新しい機能のリクエストごとに、承認されなければならない価格の変更注文と、それに付随する購入注文(または修正)が生成されることを顧客に明らかにします。元の注文書)を実装するため。変更管理は、機能またはスケジュールへの影響を詳しく説明します。期限を移動できないと彼らが言った場合、プロジェクトの進行に伴って変更注文は指数関数的に高くなります。

関係は、状況#1の下では非常に親しみを感じますが、実際には、価格を押し付けない購入部門を見つけることはほとんどないため、ほとんどの場合、状況#2にあります。それは関係が対立していることを意味しますが、ビジネスで生き残るためには、地位を維持しながら関係をうまく管理する必要があります。これは、プロジェクトマネージャーの仕事の大部分です。

状況#1のように思えますが、これは良いことです。政府の契約は、お金を気にしない唯一の場所だと思います。結局のところ、彼らはtheirお金を使っていないからですyourお金。

11
Scott Whitlock

...政府が請け負った仕事で、非常に厳格な契約が会社に次のことを義務付けている場合:

最初。それは厳しいです。しかし、それは柔軟性がないわけではありません。細部に注意を払い、変更命令の長くて長いストリングを必要とするだけです。

政府機関は実際にはゆっくりと非効率的な方法で機敏です。常に正式で詳細な変更要求を作成(および交渉)する必要があります。

要求どおりにX機能を提供する

変更管理によって変更されるまで。

機能のリクエストは壁を越えて投げられます。私たちがそれを聞きたくない私たちを気にしないでください。

コミュニケーションのチャネルは変更管理です。予算とスケジュールへの影響。

顧客の心には機能の優先順位という概念はありません。それらはすべて重要であるか、私たちがそれらを要求しなかったでしょう。

これを回避するのは困難です。 「要件分析」に多額の費用を費やしている非政府系企業でさえ、優先度とトレードオフ情報に邪魔されずに、大きくて平らで、熱くなっている要件の山が不完全であることを知られたくない。彼らはall要件を満たすためにかなりのお金を払った。どうすればもっと詳しい情報が必要ですか?

これは難しい問題です。

プロジェクトの費用は、超過分や期限に関係なく、Y額以上です。

変更管理を除きます。 Yと期限を変更します。

すべての作業を完全に納品するための、絶対的で、厳格で、最終的な、交渉不可能な期限。

「交渉不可」は一般的に真実ではありません。それは交渉可能です。交渉するのは面倒です。

政府機関との交渉の重要な部分は、コストとスケジュールの変更について「弁護士レベルの証拠」が必要であるという事実です。ナイスパワーポイントスライドを含むいくつかの注意深い技術プレゼンテーションは、「証拠」ではありません。あなたのケースを作るためにたくさんのドキュメントが必要です。

政府関係者は、これを可能な限り安価で効果的なものにするために、自分たちの力ですべてを尽くしたという弾みのない証拠を提供する必要があります。彼らはすべての決定が公の報道機関で再現され、後から精査されることを知っています。

ソフトウェア開発の複雑さ、および政府の仕事の事後の「月曜日の朝のクォーターバック」の側面により、契約に変更を加えることは消極的です圧倒的な証拠なし。

それは適切なアジャイルアプローチを難​​しくします。

「個人とプロセスとツールの相互作用」は難しい。あなたは個人と一緒に働いているのではありませんが、その仕事をしている政府の代表者はプロセスによって制約されています。

10
S.Lott

このようなプロジェクトでは、スコープ、リソース、および時間にあなたの手を縛っています。管理しなければならない唯一のことは品質です。そう...

そうでない場合のようなアジャイルアプローチからほとんどのメリットを得ることはできませんが、品質リスクを軽減するために最善を尽くし、クライアントに問題を後でではなく早く通知することができます。

できるだけアジャイルにしてください:

  1. 要件を確認し、技術的なリスクに最も優先順位を付けます。優先順位付けされた要件をバックログとして設定します。
  2. スプリントのバックログを処理します。スプリントの機能を設計、テスト、コーディングします。クライアントとのやり取りがないため、要件ドキュメントはこのアクティビティのクライアントを表す必要があります。
  3. クライアントを各スプリントレビューに招待します-彼らはノーと言うことができますが、彼らはイエスと言うかもしれません。そして、あなたは後からというより早くフィードバックを得るでしょう。

締め切りに間に合うように実行を開始すると、何が行われたかを示すことができます。おそらくその時点で、クライアントはすべてを取得するわけではないことを知っているので、何を望んでいるかを伝えるのに十分な優先順位を付けます。また、最もリスクの高い作業を行う必要があります。つまり、締め切り時刻のタスクは、余計な時間をかけて作業するのが最も簡単です。

7
Matthew Flynn

このタイプのクライアントは標準ではないと思います。あなたは以前に同様のプロジェクトを要求したグループを扱っているので、彼らは彼らが何を望んでいるかを正確に知っています。あなたは彼らの仕様が変わることを決して言及しません。

要求どおりにX機能を提供する

提案されているように漠然とX機能を提供し、すぐに変更する準備ができていれば幸いです。

機能のリクエストは壁を越えて投げられます。私たちがそれを聞きたくない私たちを気にしないでください。

あなたが彼らが何を望んでいるかを知っているなら、行ってそれを構築してください。

顧客の心には機能の優先順位という概念はありません。それらはすべて重要であるか、私たちがそれらを要求しなかったでしょう。

これで負けることはできません。必要に応じて作成してください。

プロジェクトの費用は、超過分や期限に関係なく、Y額以上です。すべての作業を完全に納品するための、絶対的で、厳格で、最終的な、交渉不可能な期限。

政府のプロジェクトを構築したことがない場合、これは難しいことです。履歴がある場合は、配信できるかどうかを判断できる場合があります。これは、彼らが十分に支払いをしない(彼らが10ドルのハンマーに50ドルを支払うことで悪名高い)ことや、不当な期待を持っていることを意味するものではありません。これらの仕様では、チームの誰かが顧客として行動し、仕様と比較して作業を承認する必要があります。 欠陥を見つけて要件を変更するように頼んだとしても、おそらくそうしないでしょう。

3
JeffO

悲しいことに、あなたが説明したのは、ソフトウェアプロジェクトへの取り組み方についての典型的な顧客の見解です。これは、顧客が不合理であると言っているのではありません。結局のところ、これは他の何か(たとえば、家など)の構築を実行する方法ではありませんか?とはいえ、私が実際に知っている以上のものは提供していません。あなたが求めているのは...アジャイルプラクティスの適用はこの状況で実現可能ですか?

私は、あなたが説明する状況に多くの点で類似しているプロジェクトを終了したという利点があります。

  1. 修正された(石で、地獄または最高水位で)期限。
  2. 機能要件文書(「聖書」)。当然のことながら不十分です。
  3. 従来の役割:プロジェクトマネージャー、ビジネスアナリスト。
  4. 関与が弱いビジネスユーザー(「製品スポンサーなし」と言えるでしょうか)。

...そしてもちろん、先を見据えた開発チームは、上記にもかかわらず、アジャイルな方法で作業しようとしています:

  1. 2週間の繰り返し。
  2. スタンドアップ;
  3. 回顧展;
  4. ペアプログラミング;
  5. TDD;
  6. 継続的インテグレーション。

これのうち、ビジネスにとってリモートで意味のあるものはありますか?いいえ。期限まで2か月間、それまで注意深く観察された反復と計画会議は頭のない鶏炎の狂乱の中で放棄されました。

他の人が上で提供した答えは、多少なりとも妥協です。私の意見では、アジャイル(「アジャイル」でも「アジャイル」でも)は、妥協すると危険な方法で「実行」されます。私の考えでは:

妥協やアジャイルはありません。

アジャイルの精神は、追跡に切り込み、無駄を取り除き、残酷に残酷に自分に正直であることです。大規模なプロジェクトでのソフトウェアの見積もりが最高のギャンブルであることは、今では十分に文書化され、否定できない事実です。これの見込み客を教育することは、ソフトウェアの専門家としての私たちの義務ではありませんか?クライアントが私たちが専門家であることを受け入れたくない場合、立ち去ることは私たちの専門的な義務ではありませんか?

2
Eric Smith

私が今いる場所で仕事を始めたとき、私はあなたが何度も尋ねた同じ質問をするのに気づきました。政府が契約している滝については、言うべきことがある。皮肉なことに、アジャイルはgovernmentの顧客(現実には滝のように機能する)の流行語になりました。そのため、基本的に柔軟性のない顧客にアジャイルプロセスを実装するためにさらに努力する必要があります。

「スクラムフォール」、「アジャイルフォール」、または「混乱」と説明されているシステムがありますが、この(ガンガントゥアン)プロジェクトが長年にわたって前進しているため、多くの点で徐々にアジャイルプロセスを採用することができました。私たちが行った方法の1つは、基本的に、お客様とは対照的に、システムのUSERSとのコミュニケーションのチャネルを見つけることです。私たちの顧客は、業務上私たちのソフトウェアに触れたり、それを理解したくない任命された役人が率いる息苦しい部門です。私たちのユーザーは、重要なタスクを達成しようとする現場の正規の政府職員です。私たちにとって、私たちと同じくらい俊敏であることができるようにする通信フィードバックループを確立するための鍵は、UAT(ユーザー受け入れテスト)の必要性でした。

私たちのプロジェクトの初期の段階で、広大な政府機関の顧客のさまざまなオフィスからの実際のユーザーの代表的なグループがここに集まり、彼らが一連の作業を実行するときに、彼らと数週間のフェイスタイムをとることが決定されましたソフトウェアをテストするためのテストスクリプト。非常に非公式なこととして、要件チームは今回、実際のエンドユーザーからフィードバックを得る貴重な方法に変えました。一方、政府内のUATテストチームは、官僚機構を介して、変更命令を含む彼らの側の正式な要件プロセスにますます影響力を持つように働きました。最終的には、私のようなBAは、スクラムチームに組み込まれた代理の製品所有者として機能し、非常に機敏に機能することを可能にする実際の顧客との貴重な面談を得ることができます。

明らかに、多くの問題があり、まだreallyアジャイルではありませんが、政府の契約で実際にその方法論を使用している主要なアジャイルプロジェクトの例として取り上げられるほど十分にアジャイルですセクタ。

要約すると、組織内でアジャイルエバンジェリストとしての経験を利用して、顧客に浸透します。彼らと一緒に学習プロセスを経て、彼らの側の主要な人々との信頼に基づいてパートナーシップを確立し、彼らが必然的に持っている正式な骨化した要求プロセスの周りで働きます。あなたは実際にあなたが開発しているものを使用しなければならない地上の人たちから感謝されます!

1
JBiggs

要件が適切に記述されていると想定し、要件が意味することを意味すると考えます。アジャイルプロセスの前後は、彼らが要求したものに加えて、彼らが意味したことを確実に得るのに役立ちます。

0
Sign