私が目にする最初の問題は、推定プロセスが少し広がっていることです。はい、開発者は自分たちがどれだけの仕事を期待できるかについて発言権を持つべきです。いいえ、それは、Webフォームにボタンを1つ追加するだけで、開発者が2週間のストーリーになることを意味しているわけではありません(ただし、ビジネスの見積もりプロセスに相当する多くのポイントがあります)。それが現在の状況である場合、プロジェクトマネージャーとしてのあなたは何らかの推測を行う必要があります。
次に、「開始(設計)から終了(実装および単体テスト)まで」と聞いて、最初に頭に浮かぶのは、「間違っている」ということです。単体テストは、開発者/開発チームとしての設計作業の一部であり、最初に実行する必要があります。基本的な要件を取り、「If ... When ... Then ...」タイプの文の単純な「チェックリスト」にそれらを抽出し、それらの文をプログラムがそれらを満たしていることを表明する一連の基本的なテストに変換しますアサーション、したがって要件。これは、テストのアサーションを満たす製品コードの行を記述する前に発生します。単体テストが最後になると、ソフトウェアを実装した後で、単体テストのいくつかの重要な側面が失われます。一般的に、開発者は「緑にプログラムする」ことはできません。
開発者が機能を「所有」している限り、それには賛否両論があります。まず、「自己組織化チーム」からのかなり一般的なシェイクアウトは、開発者がペアまたは3で離れて、彼らが最もよく知っていることに取り組む傾向があることです。このように各イテレーションで行われるすべての作業をチームがカバーできるように、開発者の専門知識の総合的なセットが豊富であると仮定すると、単純にこれを実現できます。開発者が反復から反復まで作業してきたコードベースの領域に集中して慣れているため、これはベロシティにとって良いことです。
ただし、1つの機能を一生所有する1人の開発者は、チームの「トラック数」を低くするため、危険な考え方です(非常に率直に言うと、「チームが機能しなくなる前に、トラックが衝突する可能性のある人数は、特定の人々が最悪の状況に陥り、その結果知識が失われるという最悪のシナリオ。ソフトウェアの「ファイルインポート」機能を割り当てて2年間所有している人が3週間休暇を取る場合、FMLA休暇が延長され、変更されます。仕事、または極端に言えば、本当にトラックに襲われて死ぬのですが、コードベースのその領域は何年にもわたって1人の専属の担当者であったため、その機能を知っている人は他にいません。このコードベースの特定の部分で、あなたは大幅な速度を失うことになります。また、コードベースの動作にほとんど慣れていない新しい人は、コードベース内で変更できることやできないことをまったく知らないままになる可能性があるため、欠陥のある別の問題に直面することになります。 。
代わりに、トラック番号を少なくとも2以上に保ち、より大きなチーム(12以上)で3または4に近い分業を育成することを検討する必要があります。 、何らかの理由で、他の人が飛び込むことができます。特に、ペアやDojoスタイルのプログラミングなどのいくつかのXPテクニック(1人の人が新しいアサーションに基づいて書き込むコードが満たさない要件については、次の男がそのテストに合格するようにコード化し、失敗して別の要件アサーションを追加して渡します)。これらの状況での定義により、あなたはコードを見て、それを開発し、それに慣れるようになる複数の目を持っています。
全体として、アジャイルのアイデアは「軽量」開発を促進することです。アジャイルマニフェストのように、チームメンバーとそのやり取り、そしてもちろん機能する機能的なコードに主な焦点を当てる必要がある場合、チームはプロセスとドキュメントの細部に行き詰まっているようです。アジャイルに固有のプロセスは目的を達成するための手段であり、アジャイルを追跡する方法は1つではありません。SCRUMのような主要なアジャイルフレームワークでさえ、会社、チーム、そして日々のニーズに基づいて順応性があります(このような変更を行う場合は、これらのプロセスによって提供される値の基本的な考え方を心に留めておいてください)。