システム開発のチーム構成を解説!役割や体制図、チームワークの高め方まで
こんにちは。Wakka Inc.ラボマネージャーの中垣です。
システム開発のプロジェクトチームを編成する際には、開発を成功させるために必要な役割を果たすメンバーを万全に揃えたいものです。しかし実際には、
「今いるメンバーで何とかやってもらうしかないので、任せてしまっている」
「開発を成功させるために必要な役割が、メンバーに割り当たっているかきちんと確認できていない」
のようなケースも多いのではないでしょうか。本記事では、チームを編成するときに特に意識すべき
- システム開発チームに必要な役割
- チームを編成するときのメンバー構成
- チームワークの質を高める方法
について解説します。ぜひ貴社のチーム開発の成功にお役立てください。
開発リソース不足が課題の場合はラボ型開発がおすすめ。
最適なプロジェクト体制で優秀な人材を低コストで確保できます。ラボ型開発に興味がある方は「【保存版】成長企業が導入するWakkaのラボ型開発」に詳しいサービス内容を掲載しているのでご覧ください。
優秀な開発チームの特徴
優秀な開発チームにはいくつかの共通点があります。
適切なチーム運営を目指すには、優秀な開発チームの特徴を知り、参考にすることから始めてみましょう。
本章では、優秀な開発チームの特徴を解説します。
適材適所の人員配置
顧客に満足してもらえるシステムを開発するには、変化し続ける状況や課題に合わせた柔軟な思考と対応が欠かせません。
特定のスキルに偏ったチームではなく、バランスの取れた適材適所の人員配置に考慮しましょう。
プロジェクトをスムーズかつ適切に進行するためにも、メンバーの持つスキルを把握し、適切に割り振るよう心がけてください。
円滑なコミュニケーション
意見交換や情報共有がしやすい環境を整えることには、下記のメリットがあります。
- チーム内の相互理解が深まる
- 気軽に相談しやすい状況が生まれる
- 連携力が高まる
コミュニケーションが円滑になることで、結果的には開発がスムーズに進み、プロジェクトの成功率向上にも期待できます。
明確な目標設定
ゴールを明確にすることで、メンバーが迷走せず、プロジェクトを効率的に進行できます。
チームリーダーを中心に明確な目標を設定した上で、メンバー全員で共有する体制を構築しましょう。
目標を明確にすることは、個々のメンバーが持つ役割への理解を深める効果も期待できます。
個々が手掛ける業務のほか、サポートが必要なときには同じ目的に向かう仲間として協力し合えるようになります。
優秀な開発チームを構成する上で、明確な目標設定は重要な要素です。
メンバー全員が主体的
システム開発の現場において、指示待ちが必要となる場面がありますが、すべての状況で指示待ちが適しているとは限りません。
ときには主体的に行動し、サポートや提案などの行動が求められる場合もあります。
そのため、メンバー全員が主体的に動く意識を持つことが大切です。
PDCAサイクルを確立
PDCAサイクルとは、計画(Plan)・実行(Do)・評価(Check)・改善(Action)のサイクルを繰り返し、業務改善や効率的な目標達成を促進するフレームワークです。
PDCAサイクルの繰り返しによってチーム全体の動きが改善され、円滑なプロジェクト推進が実現します。
PDCAサイクルは、システム開発のほか、さまざまな場面で活用されています。
実際に活用した経験を持つ人がいる場合は、実際のプロジェクトへの落とし込み方を参考にするのも有効です。
チーム構成の種類
システム開発のチームを編成するときにまず意識しておきたいのは、チーム構成の種類です。チーム構成の種類は「どのようなメンバーを中心に構成したいか?」によって変わります。
大きくは次の3種類に分けられるでしょう。
- 縦割りチーム
- 横割りチーム
- 混合チーム
それぞれのチーム構成について特徴を見ていきましょう。
縦割りチーム
縦割りチームは、開発するシステム全体のユースケース*ごとに担当者を割り当て、担当者がそれぞれユースケースの開発プロセス全体を進めます。
各担当者がそれぞれ開発プロセス全体を担当するため、幅広いスキルを持ったジェネラリストと言われる技術者で構成されるチームです。
アジャイル開発手法を取り入れたチーム開発を実施する場合は、縦割りチームとの相性が良いでしょう。ただし、ジェネラリストは幅広い技術に対応できる分、専門的なスキルが不足する場合があります。
専門スキルが必要な細部の技術的な問題については、専門スキルの高い外部ベンダーの支援を受けるなどの対策が必要なケースもあるでしょう。
※ユースケース……システム開発において、ユーザーのニーズや利用目的を明確に定義したもの
横割りチーム
縦割りチームがジェネラリストで構成されるのに対し、横割りチームは主にスペシャリストで構成されます。チームメンバーがそれぞれ専門的な知識と技術スキルを持ち、開発プロセスの中で専門分野を担当します。
システム開発の中でも特に大規模なチームを編成するときは、横割りチームとしてメンバーが構成されることが多いでしょう。例えば
- プロジェクトを統括するプロジェクトマネージャー
- 設計を担当するUXデザイナー・UIデザイナー
- プログラミングを担当するプログラマー
などです。横割りチームでは各担当者が持つ専門知識と技術スキルを発揮するため、システム開発において質の高い成果が期待できます。
ただし、各担当者が自分の専門分野だけに注力していると、システム全体としてうまく機能しなくなる恐れがあります。場合によっては、チーム全体を見渡しながら各担当者とうまく連携するメンバーが必要になるかもしれません。
混合チーム
混合チームは縦割りチームと横割りチームそれぞれのメリットを活かせるチーム編成で、ジェネラリストとスペシャリストの両方で構成されます。
ジェネラリストとスペシャリストをチームの中に適切なバランスで配置し、縦割りチームと横割りチームそれぞれのデメリットを補うことができます。
開発チームにおける主な役割
プロダクトオーナー
プロダクトオーナーはアジャイル開発において、開発の方向性を定め、開発する製品・サービスの価値を最大化する責任を持ちます。
また、ユーザーのニーズを把握し、提示された要件をもとにプロダクトバックログを作成して、要件の優先順位を管理するのもプロダクトオーナーの仕事です。
開発チームのメンバーに作業指示は出しませんが、開発全体の情報を管理しなければなりません。プロダクトオーナーには、開発チーム全体の状況把握と、状況に応じた適切な対応が求められます。
ビジネスアナリスト
ユーザーの業務を分析・可視化し、課題を発見するとともに、課題解決のための対策を立て、ユーザーのビジネス目標達成を支援するのがビジネスアナリストの役割です。
国内でビジネスアナリストの名称はあまり浸透していませんが、システム開発では主にシステム企画、業務要件定義といった最上流の工程を担当します。
ビジネスアナリストは、ユーザー部門から要件に関するヒアリングを実施したり、部門間の調整をしたり、決まった要件を開発チームに伝えたりと、関係者間でコミュニケーションの中心的な働きをする重要な役割を担います。
プロジェクトマネージャー
プロジェクトマネージャー(以下、PM)は、開発プロジェクトをスムーズに推進するための全体統括責任者です。
アジャイル開発でPMが設置されることはあまりなく、主にウォーターフォール型開発で比較的大きいプロジェクトに設置されることが多い役割でしょう。
PMはプロジェクト計画を作成し、プロジェクトに割り当てられた予算からリソースとスケジュールを調整します。プロジェクト推進中はプロジェクト計画をもとに
- スケジュール
- 品質
- コスト
を中心にプロジェクト全体を管理し、プロジェクトの成功を目指します。
ユーザー企業が発注先の開発ベンダーと協力してプロジェクトを進めるとき、開発ベンダーも含めた全体のPMはユーザー企業が担うのが原則です。
プロジェクトリーダー
プロジェクトリーダー(以下、PL)は、システム開発の現場で実際に開発を担当するチームの責任者です。
設計や開発の実作業にも関わりながら、チームの進捗状況を管理します。複数のチームで構成される大規模な開発プロジェクトの場合は、各チームにPLが配置され、チームリーダー(TL)と呼ばれます。
UXデザイナー・UIデザイナー
UXデザイナーのUXとは、User Experience(ユーザー体験)の略です。
UXデザイナーは、製品やサービスのデザイン、Webサイトやアプリケーションの画面をユーザー視点で設計し、より質の高いユーザー体験を提供します。
UIデザイナーのUIは、User Interface(ユーザーインターフェイス)の略称です。
ユーザーとサービスの接点、特にWeb開発においてはWebサイトのデザインやフォントなどの見た目に関わる部分を指します。
UXデザイナーと似ていますが、UIデザイナーはWebサイトやアプリケーション画面に配置するアイコンやボタン、メニューなどを、ユーザーが快適に利用できるように設計します。
ユーザー体験に関わる全体を設計するUXデザイナーに対して、画面操作の使い勝手が良くなるように設計するのがUIデザイナーです。
プログラマー
設計されたシステム機能を、設計書をもとにプログラミングして実際の製品を構築するのがプログラマーです。
大規模なシステム開発では、プログラマーが作成したプログラムをテスターがテストするケースもありますが、プログラム単体のテストはプログラマーが担当するプロジェクトが多いのではないでしょうか。
より上位の結合テスト、システムテストになるとUXデザイナーやUIデザイナー、ビジネスアナリストなどもテストに関わってきます。
チームメンバーの構成方法
システム開発を成功させるためには優れたチームを編成するのが欠かせませんが、自社だけでは必要な技術者が不足していることも多いのではないでしょうか。
不足している技術者は外部に委託して調達することになるでしょう。
では、外部の開発ベンダーに委託する場合、チームメンバーをどのように構成すべきでしょうか。このパートでは外部の開発ベンダーに委託するときのポイントを解説します。
お役立ち資料の無料DL
【資料DL】10分で分かる!ラボ型開発ガイドブック
この資料ではラボ型開発を初めて検討する方に向けて、『ラボ型開発の概要』、『他サービスとの契約形態の違い』、『ラボ型開発に向くプロジェクト』などをわかりやすく解説しています。
こんな方におすすめ
・開発リソース不足に悩んでいる方
・エンジニアの採用に苦労している方
・ラボ型開発について知りたい方
必要な技術者を準委任契約で調達する
基本的に自社メンバーでチームを編成し、不足している技術者のみ開発ベンダーから調達する場合に選択するのが準委任契約です。
例えば、自社にプログラマーが不足しているため、プログラマーだけを開発ベンダーに委託して調達するケースがあるでしょう。
また、プロジェクトマネジメントのサポートを専門にしている会社もあるので、プロジェクトマネージャーの調達も可能です。
開発ベンダーから技術者を調達するときに気をつけたいのは、調達した技術者に担当してもらう役割です。
まず、ビジネスアナリストが担当する範囲には可能な限り、自社メンバーを入れるべきでしょう。準委任契約の技術者に最終責任を負わせることはできません。
もし、スキルの適合するメンバーが自社にいない場合でも、最終責任は自社メンバーが負う体制にして、開発ベンダーの技術者はあくまでサポートとして入ってもらいましょう。
プロジェクトマネージャーを調達する場合も同様です。
プロジェクトマネジメントの業務を丸投げするのではなく、スケジュールや納期、コストに変動が発生する場合の調整や最終決定は、自社メンバーが担う体制にすべきでしょう。
開発ベンダーから技術者を調達してチームを編成する場合でも、責任ある判断が必要なところは自社メンバーが担う体制にするのがポイントです。
システム開発を請負契約で発注する
フルスクラッチ開発などで大規模なシステムを開発する場合、開発業務を丸ごと開発ベンダーに発注するケースがあります。
丸ごと発注すると言っても、プロジェクトの最初から最後まですべては発注できないので、自社でもチームを編成しなければならないでしょう。
例えば、要件定義の終了後、設計から結合テストまでの範囲を請負契約で発注するケースでは、次のような業務を担当するメンバーを自社で割り当てることになります。
- 要件を定義して開発ベンダー向けに提案依頼書を提示する
- 開発ベンダーから提示された課題の検討や、質問の回答など、開発ベンダーの業務をサポートする
- 開発ベンダーが作成する成果物をレビューする
- 開発ベンダーから納品された成果物を受け入れ、検収する
他にもシステムの本番移行に関する業務、本番移行後の障害対応や運用サポートに関する業務など、自社で担当しなければいけない業務は多岐に渡ります。
開発ベンダーに一任するだけではなく、自社で対応すべき業務を遂行するためのチーム編成が必要です。
体制図と役割分担表をもとに必要な役割を決める
提案依頼を受けた開発ベンダーは、提案資料の中に体制図や役割分担表を含めて提示してくることが多いと思います。
もし、提示された提案資料に体制図と役割分担表が含まれていない場合、可能であれば提示を依頼しましょう。
体制図とは、開発ベンダーがプロジェクトを遂行するにあたり、チーム内に設置する役割と、指揮命令の関係を図示したものです。下の図は体制図のイメージです。
役割分担表は、プロジェクトで実施する工程と必要なタスクを、受注側と発注側のどちらが主導的に責任を持って実施するかを一覧表にまとめたものです。役割分担表のイメージも図示しておきます。
上記は、開発ベンダーから提示された役割分担表を想定した図表です。つまり、図内の貴社は発注側のユーザー企業を、弊社は開発ベンダー企業を指しています。
体制図と役割分担表の内容について事前に合意できれば、お互いの責任範囲と動き方が明確になります。
役割が明確になれば、必要なときにアクションを取るべき相手がひと目で分かるため、プロジェクトのコミュニケーションがスムーズになるでしょう。
さらに、役割分担表で自社が責任を持つタスクを明確にすることによって、編成すべきチーム構成やチームメンバーの役割を決めやすくなるのです。
チームワークの質を高めるための工夫
優れたチームを編成するためには、優秀な技術者を揃えることが必要ですが、それだけではありません。プロジェクトの遂行において高いチームワークを発揮できてはじめて、優れたチームになっていくのです。
このパートでは、編成したチームがより高いチームワークを発揮するためにやっておきたいことをご紹介します。
プロジェクト目標を定めて全員で共有する
プロジェクトを成功に導くためには、プロジェクト目標をメンバー全員に共有しておくことが大切です。プロジェクト目標とは主に、開発したシステムを利用してユーザーが達成したいビジネス目標を指します。
しかし、ユーザーが達成したいビジネス目標を、個々のチームメンバーは知らないまま作業をしているプロジェクトも多いのではないでしょうか。
プロジェクトの規模が大きくなると、開発工程によって途中からメンバーが入れ替わることが多くなります。
メンバーの入れ替わりが頻繁だと、プロジェクト目標の周知を徹底するのが難しい場合もあるでしょう。
しかし、チームメンバーがプロジェクト目標を知って意識しながら作業するのと、知らずに作業するのとでは成果が大きく違ってくることもあります。
決してムダにはならないので、チームワークの質を高めるために、目標をしっかりと共有しておくことをおすすめします。
各メンバーに期待する役割と成果を明確にする
プロジェクトの活動を通じて、メンバーそれぞれが成長するのは大切なことです。技術者は、勉強や研修の受講だけでスキルアップするのではありません。
日常的に取り組んでいる現場の仕事によってスキルアップしていくのです。
したがって、参加したメンバーが今よりもスキルアップし、成長できるプロジェクトであることが大切ではないでしょうか。
具体的には、プロジェクトの遂行を通じて期待する役割と成果を各メンバーに伝え、意識して日々の仕事に取り組んでもらいます。
会社組織の上下関係とプロジェクト内の関係は同じではないので、取り組むのが難しいケースもあるでしょう。
まずは可能な範囲で実施してみるのがおすすめです。
プロジェクトの入門資料集を準備する
システム開発プロジェクトでは、工程が進むごとにメンバーが入れ替わることがよくあります。常に同じメンバーだけでプロジェクトが進むとは限りません。特に開発規模が大きくなると、
- 要件定義工程が終わってからUXデザイナー・UIデザイナーがプロジェクトに参加する
- 設計工程が終わってからプログラマーが参加する
- スケジュールの都合で開発規模が増え、途中からプログラマーが増員される
などのケースはよくあるでしょう。参加したばかりのメンバーはプロジェクトに関する知識を何も持っていません。
したがって、参加した当初は要件定義書を読んでシステム開発の背景や目的を理解したり、設計や開発に関する方針を理解したりするなどが必要です。
メンバーの出入りが多いチームの場合、入門資料として必要な情報を1か所に集めておくのが有効でしょう。入門資料を1か所に集めておくことで必要な情報を効率よく入手でき、メンバーによって持っている情報が偏る可能性が低くなります。
例えば、次のような資料を同じフォルダにまとめて配置しておくのがおすすめです。
- 業務要件定義書
- プロジェクト計画書
- プロジェクト体制図
- ユーザーの業務全体が理解できる資料
- 設計方針を定義した資料
- 業務用語集
新メンバーのフォロワーを任命する
新メンバーがプロジェクトの途中から参加してきた場合、既存メンバーを新メンバーのフォロワーに任命するのも有効です。
入ってきた新メンバーが、ある程度プロジェクトに習熟してフォローなしでも作業のパフォーマンスが維持できるようになるまで、主にフォロワーが新メンバーをフォローするのです。
既存メンバーも自分の作業を持ちながらのフォローなので、無理のない範囲で実施するのが良いでしょう。プロジェクトに入りたての頃は、不明点を誰に聞けば良いかが分かっているだけでも安心です。
チーム内で役割分担を明確にする
チーム内で役割分担を明確にするのも、新メンバーが入ってきたときの対策の一つです。チームに入ったばかりの新メンバーは、既存メンバーの役割が分かりません。
チームメンバーそれぞれの役割が明記された体制図があれば、新メンバーにとっても安心でしょう。
また、チーム内で自己紹介をし合って、役割だけでなく、どのような人がチームに参加しているかが把握できると、よりスムーズなコミュニケーションが期待できます。
アジャイル開発手法を活用する
スクラムなどのアジャイル開発手法はチーム開発を前提としたフレームワークなので、チームワークを良くするための工夫が多く盛り込まれています。
チームワークの質を上げることが、システム開発を成功に導きやすいからです。アジャイル開発手法を丸ごとすべて導入するのは成果が出るまでに時間がかかるので、すぐに取り組めそうなところから部分的に採り入れるのが良いでしょう。
例えば、デイリースクラム、レビュー、振り返りなどは取り組みのハードルが低く、続けているとチームワークを高めるのに役立ちます。
アジャイル開発手法の進め方については、下記の記事で詳しく解説しているのでご参考になさってください。
優れたチームを編成してシステム開発を成功させよう!
本記事では、開発ベンダーを利用した技術者の調達について触れてきました。優れたチームを編成できれば、システム開発は成功に近づくでしょう。
しかし、チームを構成する技術者が不足して、思うようにチームが編成できないケースも多いのではないでしょうか。
弊社が展開するラボ型開発も、優れたチームを編成するのに有効な選択肢の一つです。
下記よりサービス資料をダウンロード可能です。優れたチーム作りの実現と、システム開発の成功にお役立ていただければ幸いです。
▼参考記事
WebメディアでPGから管理職まで幅広く経験し、Wakka Inc.に参画。Wakka Inc.のオフショア開発拠点でラボマネジャーを担当し、2013年よりベトナムホーチミンシティに駐在中。最近では自粛生活のなかでベトナム語の勉強にハマっています。