• アジャイル開発へとパラダイムシフトする際の最も重要な側面の1つは、開発チーム内の役割の違いを理解することです。
• アジャイル開発におけるチームの特徴は機能横断(クロスファンクション)型のチーム体制です。チームがプロダクトのライフサイクル(設計、ビルド、テスト、デプロイ、実行)を通じて完全に自律的であるためには、チームとしてバランスのとれたスキルセットを備えることが必要です。
チームメンバーは仕事をこなすための深い開発スキルを持つと同時に、チームとしてパフォーマンスを最大化するためのスキルが必要です。
• アジャイル開発に必要な全てのスキル・知識を持つ人材を育てることは必須の条件ではありません。一人の個人だけでは、スキル領域ごとのレベルに凸凹がありますが、その凸凹をチームとして埋めていきます。一人の個人だけでは不足している知識・スキルを、チームとして補っていくのです。
• 従来型の開発では、要件定義、設計、開発からテストを経て運用へと、明確な役割分担のもとにプロセスが進みます。初期工程で仕様をきっちりと決めるため、誰が何をすべきかを明確にすることができます。一般に、SE(設計者)、プログラマー、テスターなどを専任の役割としておくということは珍しくありません。このような役割分担で開発を進めると、タスクの切れ目に、人のアサインや引継ぎなどのオーバーヘッドが生じます。
•アジャイル開発では、最終プロダクトをリリースするために必要となる全てのスキルが1つのチーム内に備わっているため、タスク間の引継ぎが最小限に抑えられ、プロセス全体のスループットが最適化されます。アジャイル開発では、スピードが重要であり、できるだけ早くユーザー機能を顧客に提供することが重要です。組織は、価値あるフィードバックループを活用でき、自分たちの進んでいる方向が正しいかどうかを判断できることにもつながります。
•アジャイル開発では、チーム員同士で教えあい、チーム一丸となってプロダクトを開発していきます。チームで仕事をすることにより、個人が得意とする分野だけでなく、より広範な分野の業務を実施できるようになり、個人の成長につなげることができます。このため、専門領域以外のスキルを埋めるために、チーム内の他の人材や他ステークホルダーと連携する能力も備わっていることが重要となります。
•あるタスクの高度な専門家が活動できない場合でも、プロダクトやサービスを継続的に提供するためには、各開発者が自分の能力に、さらに多くのスキルや知識を追加していくことが重要となります。アジャイルなチームにおいては、リソースは通常は複数のスキルを持ち、必要な場合には積極的にスキルを向上させようと努めます。