スクラムとペアプログラミング


10

私は現在スクラムを使用しているチームに所属しており、チームのクロスファンクショナルスキルを向上させ、「2つのヘッドは1つよりも優れている」という哲学で欠陥を減らすのに役立つペアプログラミングを追加することを検討しています。

私たちのチームでは、各チームメンバーは通常、スプリントの計画中にフルワークロードにサインアップします(「フル」は週40時間未満の数であり、会議やコラボレーションなどが可能です)。各タスク。これはスクラムチームではかなり一般的だと思いますが、必ずしも本ではそうではありません。

特に、チームメンバーが作業するための独自のタスクを持っているためにチームメンバーがペアリングをためらうような状況は避けたいと思います。これは、ペアリングのための時間を確保せずにチームが単に自己組織化する場合に発生する可能性が高いと思います。

これを踏まえて、ペアリングの時間を適切に割り当てていることを確認するために、ペアリングシナリオでの労力/時間/ストーリーポイントを説明する最良の方法は何ですか?

考慮されるいくつかのオプションは次のとおりです。

  1. 2人が各タスクにサインアップできるようにし、(おおよそ)推定時間数を2倍にする
  2. 「キーボードを操作する」チームメンバーだけが各タスクにサインアップします。これは、その人の推定時間に基づいて推定されます。ペアリングをサポートするチームの誰もが、ペアリングをサポートする時間を確保するために、スプリントのより少ないタスクにサインアップします。

回答:


4

スクラム内でペアプログラミングが採用されているときに私が見た最も一般的なオプションは、開発の見積もりを2倍にすることです。

つまり、タスクが1人で3時間かかると推定される場合、割り当てられる時間はペアで6時間になります。

よりきれいに感じる場合は、ポイントを時間に置き換えてください;)


Odedに感謝します。この回答は、私の具体的な質問に最も簡潔に回答したものです。ただし、根本的な原因の特定に貢献してくれたDXMには、プロセスよりも関係者が多いことに感謝します。私は複数の答えを受け入れることができればいいのにと思います。
Cliff

15

他の人はすでに良い答えを提供してくれたと思いますが、私が追加するのは、あなたのチームがスクラムに移行したばかりで、私たちが始めたときと非常によく似た立場にいるためです。

まず、アジャイル、より具体的にはスクラムの紹介はあまりスムーズではありませんでした。基本的に管理職が降りてきて言った、今日からあなたはスクラムを行うべきであり、これはあなたがすべて従うプロセスです。People over Processにとってはこれで終わりです。

私たちが最初に行ったプロセス(盲目的に、私が付け加えるかもしれません)は、あなたが説明した方法と非常によく似ています。人々はタスクを割り当てられ、全員が予約され、私たちは全員私たちのデスクに戻ってプラグインします。それから私達は退屈なスタンドアップミーティングを毎日持っています。

理解するための鍵は、アジャイルとスクラムが含まれているのは、実際には人に関するものであることです。チームがイテレーション計画に入るとき、あなたのスクラムマスター(おそらくマネージャーである)に時間、ストーリー、タスクを割り当てさせないでください。それは完全にチーム次第です。多くの人にとって、これは非常に難しい概念だと思います。何年も前に彼らは仕事に来て、彼らには単に仕事を割り当てる上司(マネージャー、テクニカルリード...)がいたからです。彼らはスクラムに飛び込みますが、誰もが(スクラムマスター自身を含む)同じモードで操作を続けます。

ある日、あなたはこれにうんざりするでしょう。それで、あなたは本やブログを読み始め、スタック交換でこのような質問をし続けるでしょう。あなたが得ることの実現は、開発者とあなたのチームメイトとしてのあなたがストーリーへのコミットとタスクの割り当ての背後にある原動力であるべきであるということです。ペアプログラミングのメリットがあると感じたら、必ずエンジニアごとに2つのタスクを作成し、両方に時間を割り当ててください。スクラムマスターがすべきことは、前回のイテレーションでAS A TEAMとして提供した完成したストーリーに対して速度を測定することだけです。

私のがらくたを悩ませているもう1つのことは、容量が常に合計時間の75%であると人々に言われていることです。そのため、彼らはそれをコミットし、反復の全期間中、彼らは不満を述べています。a)できないあなたを助けるかb)彼らはあまりにも多くの時間が割り当てられているため、彼らは正しいことをすることができません。コミットに何時間かかるかは知らされるべきではなく、スクラムマスターがこのようなものを引っ張ろうとしているのなら、彼らは確かに押し戻すべきです!誰もが自分が何に満足しているのかを正確に約束すべきです。たとえば、私はチームリーダーであり、計画外のランダムな設計に関するディスカッションをしたり、誰かをコードで支援したり、奇妙なことをトラブルシューティングしたりすることがよくあるため、私の能力は50%を超えることはありません。

私たちのチームは、今述べたようなことをしないことを学ぶのに4つのリリースサイクルを要しました。たとえ私たちが確実に改善したとしても、専門家に尋ねれば、私たちは半分も機敏ではありません。だからまだやることをたくさん学ぶ。

更新1:クリフのコメントへの応答 さてあなたはあなたの耳を提供したので、ここにそれは...

そうです、文化の転換が重要ですが、この転換は幹部レベルで起こる必要はありません。あなた自身のグループマネージャーはあなたのチーム内の文化を変え、彼が対処しなければならない企業のBSからあなたを分離することができます。あなたが説明しているのは、2007年から2010年までの正確な私たちです。私たちのチーム(および他のチームも)はリリースごとにリリースをフロップしました。経営陣の「アジャイルになるためのプロセス」を使用したリリースの1つでは、通常は1人で行う作業を9人の人々にプロデュースし、2倍の時間を費やしました。余暇が多すぎて、履歴書も更新しました。

次に、上司と話し合って、これらすべてのことを人に対してアジャイルであるということを説明しました。製品について気にかけてもらいたい場合は、製品の取り組みと提供方法に影響を与える決定を下しましょう。彼はそれを実験的にすることに決めたと思います、彼は私たちのすべての変更を加えました...まあ、ほとんど私自身ですが、私はチームの他のメンバーと頻繁に話し合うので、容量は50%です:) ...提案しました。彼が私たちが求めているすべての変更を加えても失敗する場合、彼は勝利した「私はあなたにそう言った」と戻ってくるだろうと考えた可能性があります。

したがって、過去12か月で、私たちはあまりにも多くの「愚かな」ことを排除しました。私たちはスタンドアップミーティングを実際に意味のあるものにしています。これは、孤立してではなく、一緒に作業するためです。製品の特定の部分の所有権は(少なくとも現時点では)まだありますが、お互いのコードに頻繁にアクセスすることもあります。チームのメンバーが他のコードを学ぶだけでなく、より優れたコーディングおよび設計技術も学ぶように、私たちは常にコードレビューを行っています。モノリシックで巨大な「アジャイル」チームを3つの異なるチームに分割したため、計画やその他のミーティングははるかに短くなり、人々は周りに座って気にしないことについて耳を傾けることがないため、実際に気になります。私' 5人のうち4人(チームの1つ)が夜11時にオンラインになる夜を見たことがあります。実際に一生懸命に仕事をしなければならない、または40時間以上仕事をするように圧力をかけられたという人は実際には誰もいません。半年前まで気にならなかった人々は、突然、彼らがしている仕事に従事し、興奮しています。そして、私たちのマネージャーがすることは、「あなたたちは何が正しいかを決定し、あなたがする必要があることをします、そして私はできる限りチームから企業のBSを守ります」と言うだけでした。

それは実験として始まった(私の疑い、彼は私に言わなかった)が、今、私たちのグループは、部門の他の開発グループと比較して激突しており、私たちに来て参加しようとしている他の開発者もいます。

この変化が起こって以来、私たちにとって最大のハードルは(そして今日でもまだ問題です)、通常の企業環境のエンジニアは、ケージ内の実験用マウスのようなものでした。あなたのマネージャーが本当に「機敏」に行くことを決定し、ケージを削除したとしても、誰もが長い間そのケージの中にいて、彼らが彼らが自由であることにさえ気づいていません。したがって、すべての自由があっても、彼らはまだ制約されているかのように行動し続けます。グループの境界の外に出て、より良い方法を模索しているチーム(自分など)を少なくとも数人持つことが役立つと思います。次に、そのグループに戻って少しかき混ぜます。

あなたの場合、チームに降りてきて作業方法を伝えるために別の外力を探しているのであれば、おそらくペアプログラミングは解決策ではありません。代わりに、ルールを破棄し、管理なしで彼らと一緒に座って、彼らに何をしたいのか尋ねますか?彼らを幸せにするものは何ですか?生産的?最大の問題を特定し、解決策がどうあるべきかをチームに尋ねます。


全くもって同じ意見です。問題の一部は、アジャイルの哲学が開発文化に十分に根付いていないことであり、私たちはこれをプロセスで修正しようとしています。理想的には、文化の変化によって修正する必要があります。タスクのサインアップがなければ、チームメンバーはタスクに対して「私の仕事ではない」という態度をとった(1つには、チームが実際には機能横断的ではないため、ペアリングを実装しようとしている理由の1つです)、または気が散りやすいです。その結果、チーム間のワークロードが不均衡になりました。これらの問題をより少ないプロセスで解決する方法についての提案は、すべて耳にしたものです。
クリフ

更新していただきありがとうございます。管理は実際に非常に協力的で、チームが自由に「方法」を定義できるようにすることで引き継がれています。しかし、核心的な問題の1つは、チームには機能横断的な考え方が欠けていることだと思います。たとえば、チームは個々のスキルセットに基づいて、un / accountabilityの架空の壁を作成しました。一方では、チームメンバーは自分に定義された機能領域にある機能の部分に対して非常に力を与えられ、所有権を握っていますが、一方で、機能領域にない機能の部分には責任を感じません( "私の仕事ではない」)。
クリフ

のような音はすでにポジティブな方向にいくつかのステップを踏んだ。では、改善すべき主要な領域を特定したところで、これをチームに提示し、解決策を提案するよう依頼しましたか?はいの場合、ペアのプログラミングで戻ってきましたか?はいの場合は、必ず、一緒に働きたい人を同じストーリーに割り当て、複数のタスクを作成し、各人の隣にコーディング時間を置いてください。「いいえ」の場合、なぜ彼らが機能的な境界を越えることをためらっているのかを尋ねましたか?結局、彼らが交差せずに彼らがより効果的であると思うならば、おそらく本当の解決策はどこか別の場所にあります。
DXM

「自分の仕事ではない」とは「気にしない」という意味で、それが最大の問題です。アジャイルは、気にかけて責任を持つことができる開発者向けです。チームは製品に対して責任があります。「私には一部の責任がある」=チームメンバーは製品全体を気にする必要はありません。なぜ機能領域があるのですか?あなたの製品がとても大きいからですか?
Ladislav Mrnka、2011

@LadislavMrnka:チームには単に気にしない人もいるかもしれませんが、それでいいと思います。それらの人々は、主要な決定、製品の方向性、アーキテクチャ、および設計がすぐに過ぎ去るので、バグやがらくたの仕事のためのラバになります。しかし、技術サポートに対処するために誰かがまだ必要です:)。私たちのほとんどは私たちが何をすべきかを気にかけていると思います。そして、チーム全体が「私の仕事ではない」態度を持っている場合、根本的な原因は、特定して排除する必要がある他の外部要因であると思います。そうしないと、チームに「あなたが気にかけなければならない」ことを任せることは不可能です。
DXM 2011

2

スクラムでは、タスクを個人に割り当てることは義務付けられていません。完了するタスクの責任は、全体としてチームにあります。チームがペアプログラミングを実行する場合、各ペアがタスクを選択するのであれば、間違いなくそうする必要があります。

スクラムガイドから:

開発チームは通常、システムの設計と、製品バックログを有効な製品増分に変換するために必要な作業を開始することから始めます。作業のサイズはさまざまで、作業量も推定されます。ただし、開発チームが次のスプリントで何ができると信じるかを予測するために、スプリント計画会議中に十分な作業が計画されます。開発チームによってスプリントの最初の日に計画された作業は、この会議の終わりまでに1日以下の単位に分解されます。開発チームは、スプリント計画会議中およびスプリント全体で必要に応じて、スプリントバックログ作業を行うために自己組織化します。


1
面白い。2009年3月のスクラムガイドがあります。以前は、「チームは、スプリント計画会議中またはスプリント中のジャストインタイムのいずれかで、スプリントバックログで作業を割り当て、引き受けるために自己組織化していました。」
クリフ

私たちの解釈では、各バックログ項目の推定タスクの初期セットを常に作成し、スプリント計画中にそれらを個々のチームメンバーに割り当てます。いくつかの利点は、計画中にチームメンバー間のワークロードのバランスを効果的にとるのに役立ち、各タスクに割り当てられた所有者があると、何も欠落していないことを確認しやすくなります。また、メトリックのキャプチャにも役立ちます。
クリフ

@クリフ-それがあなたがそれをしたい方法であるなら、それは結構です。私が言っているのは、スクラムはあなたがそうする必要があるとは言っていないということです。アイテムをペアで割り当てる場合(通常はバスによる保険としてこれを行います)、それも問題なく、ペアに基づいてメトリックを簡単に計算できます。
マシューフリン

0

会議の計画にタスクを割り当てることは、まさにその時の決定とチームに力を与えることに反対するものです。また、スプリントの初日以来、すべての開発者は自分がすべきことを正確に調整しているため、スプリントの俊敏性に反します。また、すべてのタスクを非常に正確に推定する必要があることも意味します。

Imhoの推定タスクは冗長です。一連のストーリーにコミットし、ミーティング2を計画するのは、これらのストーリーをタスクに分割し、それらのタスクのカードを作成する(またはそれらをシステムに入力する)のに十分な時間です。各タスクを見積もるのに十分な時間がありません。これらの見積りは、実際の開発に時間を費やすべきではありません。

どうして?見積もりはごみです。どのようにしてゴミになるのでしょうか?より多くの見積もりを行うことはより多くのビジネス価値をもたらさないので、それはごみであり、必要最小限に減らす必要があります。最小は、あなたがコミットメントをするのに役立つストーリーの見積もり/サイジングです。いったんコミットメントを行ったら、他の見積もりは必要ありません。あなたはあなたがコミットした何かを提供するための固定された日付があることを知っています。コミットされたストーリーを提供できるかどうかを決めることができます。タスクの見積もりは、そのデリバリーには役立ちません。

進行状況の実際の測定値は完了したストーリー(ストーリーポイント)の数のみであり、スプリントバーンダウンチャートに表示できるため、タスクの見積もりをスキップしても、スプリントの進行状況の可視性には影響しません。

明確にするために。コミットメントとは、=私たちがやります。それをやろうとするつもりはありません。はい、あなたはあなたがコミットしたものを提供することに失敗するかもしれませんが、あなたのコミットメントはあなたの現在の知識であなたが選ばれた物語を提供するというあなたの信念に基づいているべきです。この信念を持っている場合は、別の見積もりは必要ありません。

私は常に、スクラムを使用して、開発者が最後のタスクを完了したときに新しいタスクを選択する方法をとっていました。開発者は通常、スタンドアップ会議でどちらを選択するかを言います。一般的に、彼がどのタスクを選択すべきかについてのルールはありません。チームの自己組織化とチームメンバー間の話し合い(スタンドアップミーティング以外)に依存します。それは、想像上の計画に影響を与えずに、いくつかの変更や問題に対応できる最新の可能な時点まで決定を延期することです。誰かがそれを完了するためにいくつかの問題を抱えている場合、タスク自体が所有者を変更することさえできます-あるいは、そのようなタスクはペアで開発することができます。

ペアプログラミングはこれにどのように関与できますか?簡単に。チームはコミットメントを行い、チームは製品の有効な増分を提供するために必要なすべての開発手法のためのスペースを作る方法でそれを作る必要があります。タスクまたはタスク開発とタスクテストを見積もりますか?後者のアプローチは完全に間違っています。テストは開発の一部であり、同様に、コードレビューまたはペアリングは必要に応じて開発の一部です。

ペアプログラミングを行うと、バグが少なくなり、コードの品質が向上し、タスクがより速く完了します。これは2倍の速さではないため、オーバーヘッドは残りますが、偶発的なペアリングによって発生するコミットメントへの実際の影響は非常に小さいはずです。これは、メンタリングや教育の場合ではありません。メンターや指導が必要な開発者がいる場合は、製品のコードベースや技術を学ぶスプリントの能力をまったく計画すべきではありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.