アジャイルチームの主任開発者の役割は何ですか?


42

リード開発者以外のアジャイル開発チームでは、一般的に

  • 標準を設定します(コーディングなど)
  • チームの新技術を研究する
  • チームの技術的な方向性を設定します
  • 問題について最終決定権を持っています
  • システムのアーキテクチャを設計します

ただし、アジャイルチームの動作は異なります。

  • アジャイルチームは、前もってではなく、新しいデザインに依存します
  • アジャイルチームは、1人が設計を指示するのではなく、一緒に設計します
  • アジャイルチームは、プロジェクトを提供するのに最適な独自の技術的方向を決定します

これにより、アジャイルチームの主任開発者はどこに残りますか?アジャイルチームにリード開発者を置くことは可能ですか?アジャイルチームはリードに異なる責任を要求しますか?


Mattsの最後のコメントに答えて、システムの多くのコンポーネントに影響を与える重要なアーキテクチャ上の決定を行う開発者をリード開発者にすべきだと付け加えます。また、彼はこの責任を負い、物事がうまくいかない場合は心を変えるべきです。
user2236631 14

回答:


46

アジャイルでは何もリード開発者が機能する方法を変更しません。システムアーキテクチャの決定、および開発モデルがどのようなものであるかに関係なく、技術的な方向性についてチームの他のメンバーを関与させる必要があります。

命令で決定を下すことは、開発チームが実行するためのひどい方法です。アジャイルは、チームの他の部分からの買収をより明確なプロセスにするだけであり、主任開発者はとにかくそれを行うべきでした。

スクラム方法論に開発者の役割が設定されていないからといって、経験豊富なプログラマーの意見が最も尊重されているわけではありません。アジャイルは、誰もが自分のことを思い切って行って、それをすべて一緒にしようとするのではなく、設定する必要がある統一されたビジョンと方向がまだあります。


「命令で決定を下すことは、開発チームが実行するためのひどい方法です」という意味に説明を追加できますか?私はあなたの投稿の残りに同意しますが、私は特定の方法で言及された声明にのみ同意し、他の方法では同意しません。たとえば、データベース層でSOAを使用することはどのように決定されますか?それは布告ではなかったでしょうか、誰かが最終決定権を持っている必要はないでしょうか?私はチームのリーダーであり、まさにこの状況に出くわしたので、お願いします。ビジネスニーズに基づいてSOAを使用しないように呼びかけました。すべての開発者がすべての点について議論/議論するのに十分な時間はありません。
ブライアン14年

@Brianがアーキテクチャを決定するのは、おそらく特定のメンバーに割り当てられたスプリントのストーリーですが、それ以外は他のストーリーと同じです。他のストーリーと同様に、ピアレビューを行う必要があります。時間の議論はでたらめです、もしあなたがたまたまXを見逃したか、チームの他の全員があなたに馴染みのないZを試してみることに決めたなら、結果として開発により多くの時間を費やすでしょう、デザインについての議論の丸一日は比較的重要ではありません。「X、Y、ZでAを選んだ」と言う簡単な会議/レビュー。おそらく1時間かかり、共同作業になります。
リャサル14年

30

アジャイルチームでは、誰もがエゴを脇に置くことになっています。

アジャイルチームのメンバーの1人が他のメンバーよりも多くの経験を持っている場合、経験豊富なメンバーがほとんどのコードレビューに関与し、チームの決定を下すときにその経験に遅れる場合がよくあります。

したがって、「リード」開発者は「リード」し続けますが、彼らの経験の自然な結果としてであり、タイトルの義務的な機能としてではありません。

それは、人々がエゴを脇に置くことができる理想的な世界です。幸運を!


同意しません。開発者が独力で決定を下すのはあまりにも頻繁に見ましたが、リードが存在せず、開発者がそのような状況に慣れていなかったというだけで悪い結果をもたらしました。猫を放牧します
andrew.fox

20

Ryathalの答えに加えて:

チームから完全に調和して調和して流れるかのように、新しいデザインとチームの方向性について話します。人々のグループ、プログラマのグループは特に対立しています。チームのリーダーとして、アジャイルチームでのあなたの仕事は、ウォーターフォールよりもレフェリーや触媒のようなものです。たとえば、どのデザインを使用するかについてチームが対立する場合は、人々が平等な発言権を持ち、メリットをめぐる議論に固執するようにします。そして、最終的には、パスが明確でない場合にチームが提案するソリューションの調停者になります。

これはリードの最も重要な責任の1つですが、多くの人々をチームにするためには他にも多くのことが必要です。優れたコーディングの範囲内でサンプルを設定する必要があり、多くの場合それを強制します(直接またはそれを行うためのカルチャーを作成することにより)。スタンドアップで1日に1回は削減されないため、チームメンバー全員間のコミュニケーションを促進する必要があります。

あなたが見落としている他の重要なことは会議です。チームがビジネスマンや他の技術チームなどと交流する必要があるすべての会議にチーム全体を参加させることは非現実的です。チームのリーダーとして、あなたはチームの代表者です。会議に行って、彼らが机にとどまり、仕事を終わらせることができるようにします。あなたは、人々が直接立ち寄って邪魔されないように連絡先です。そして、あなたは外の世界からの情報(他のチームが取り組んでいるもの、アジャイルチームが次のスプリントのように見えるもの、そのオープンリクエストのステータスなど)を取得し、それらを要約して伝えます。

要するに、あなたはそれらがスムーズに実行できるようにする潤滑油です。


1
これは、「タイムボックス化された」会議で特に重要です。つまり、会議または特定のディスカッションがX分以上続くことはありません。時間の終わりに、誰かが決定を下し、プロセスを動かし続けます。これは、システムアーキテクチャおよび関連するディスカッションのリード開発者になる可能性があります。
クリス14

1
よく置きます。リード開発者は、チームの経験と理解を改善するように調整する必要があります。長期計画は、「リード」だけでなく、仲間のチームのメンバーになることです。
デビッド「はげた生inger」14

あなたが説明したのはスクラムマスターです。
DBedrenko

6

非アジャイルの説明は、アジャイルの説明を無効にしません。

アジャイルチームは、前もってではなく、新しいデザインに依存します。

リード開発者のあなたの定義については、デザインは前もって持っていなければならないとは言いません。彼は方向を設定するかもしれません、そして彼はまだ最初のデザインをレイアウトするかもしれません。そのデザインは間違いなく出現しています。

アジャイルチームは、1人が設計を指示するのではなく、一緒に設計します

リード開発者のあなたの定義については、彼がデザインを決定することを言っているものはありません。彼は最終決定権を持っているかもしれませんが、彼の多数派のチームメイトの考えを完全に無視するのは貧しいリードだけです。逆に、貧しいチームだけがリード開発者の考えを完全に無視します。

アジャイルチームは、プロジェクトを提供するのに最適な独自の技術的方向を決定します

繰り返しますが、これはリードが最初にこの方向を設定しないという意味ではありません。リードはこのアジャイルチームの一部です。非アジャイル環境であっても、チームが故意に実行不可能になった場合、またはこの方向を無効にするための新しい情報が提示された場合、貧弱なリードのみがその方向にチームを行進し続けます。


6

この質問には、他にもいくつか質問があります。仲間のソフトウェアエンジニアのチームに何をすべきかを伝える資格があると思いますか?それはあなたの経験ですか?上司から渡された面白いタイトルですか?それはあなたの自我ですか?会社での在職期間は?あなたの「パナッシュ」ですか?あなたの「スタイル?」あなたの「リーダーシップスキル?」

アジャイルチームは、「おめでとう、あなたは私たちの超天才だ-あなたは超秘密の二重天才の仕事を行うことができる唯一の人だ」と言うバッジや帽子を互いに配りません。むしろ、焦点は手作業です。実際に経験が豊富な場合は、その経験により、設計がどの程度うまく完成に向けて作業を進めるかを示す必要があります。自己選択の割り当て(カード)は、最も専門的な分野を反映する必要があります。一方、大学のすぐ近くにいる子供の方がより良いアイデアを持ち、40年以上のベテランが登場するよりもコンテキストに合っている場合で、いったいなぜ私たちはより貧弱なデザインで行くのでしょうか?私たちの職場はセラピーのオフィスではありません。彼らは私たちが素晴らしいものを作る場所です。

それは別の質問を招きます:「より良い」とはどういうことかを誰が決めることができますか?答え:利害関係者のチーム。つまり、開発者、要件担当者、テスト担当者、ビジネス担当者など、問題のビルダーとユーザーです。優れたアイデアがあれば、なぜそれが優れているのかを示すことができます。それができない場合、チームがあなたのアイデアが優れていると信じる理由はありません。アジャイルは実力主義を奨励します。

それでは、「開発チームのリーダー」はどうなりますか?アジャイルで?何もありません-彼らはその名前にぴったり合っています-実際にチームの他の人々よりも優れたソフトウェアを生産することができます。そうでなければ、それらを「リード」と呼ぶ理由はありません-それはほんの小さなバッジまたは面白い帽子であり、それは無意味です。多くの人がこれを脅かしています。彼らは、バッジや面白い帽子を「働いている」ように感じます。優れた開発者は、おかしな帽子では働きません。彼らは優れたソフトウェアを構築するために働いており、彼らが鳴くまでそれを行うことを計画しています-彼らの目標は、毎日ソフトウェアの構築をより良くすることです。そうでない場合は、プロジェクト管理を検討することをお勧めします。あなたはおそらく幸せになるでしょう。


「THE WORK AT HAND」の+1。私はあなたが今提供しなければならないものに最適なソリューションに焦点を合わせることに同意します。誰がアイデアを思いついたのかということではありません。
Kwebble 14

あなたによると、開発チームのリーダーがSCRUMチームで行うことは、「チームの他の人よりも優れたソフトウェアを生産する」ことである場合、彼らはすべて、責任を持たない開発者です。それはあなたの答えが示唆するポイントですか?それ以外の場合、これはデベロッパーがSCRUMチームにどのように適合するかという質問には本当に答えません。
DBedrenko

はい、そうです。彼らは優れたエンジニアであるため、エンジニア(技術的には「チームメンバー」)としての役割を担っています。どのような他の彼らは可能でしょうか?
カルフール

3

私のアジャイルの経験では、開発チーム全体はあなたの例が示唆するよりも少ない責任を負い、リード開発者とアーキテクトはトップレベルのデザインの選択を調整しますが、アジャイルチーム全体に下位レベルのデザインを引き継ぎます。

したがって、リード開発者は、システムアーキテクチャと技術の選択に責任を負います。これは非常に重要です。アジャイルは新しいデザインとリファクタリングを促進しますが、これはコードオブジェクトのレベルで行われるべきです。システム全体としては、より高いレベルの事前設計と剛性が必要です。さもないと、プロジェクトが調整されない混乱に陥る危険があります。

このプロジェクトでは、主任開発者が技術の選択を義務付け、システムコンポーネントが相互に作用する方法を設計しました。アジャイル計画会議は、彼のより高いレベルの任務の範囲内でこれらのコンポーネントを設計する方法に焦点を合わせました。幸いなことに、これにより、面倒な計画会議の範囲が制限されます。

彼は最後の手段としても機能しました。個々のプログラマーが修正できない問題に遭遇した場合、彼らは先頭に立ち、物事を修正する最終的な責任は彼にありました。


これは私の経験と似ていますが、必要以上に「バッジ」と「帽子」があると思います。優れた開発者が設計について考える方法と、建築家が設計について考える方法との間にほとんど違いはありません。
カルフール14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.