オフショアチームの構築

「IT人材」特集:オフショアチームを築くための採用ノウハウとベストプラクティスまとめ

はじめに

ソフトウェア開発プロジェクトが成功するかどうかは、IT人材にかかっています。実は、時間や資金よりも、人的資源が最も重要な要素なのです。企業のビジネス目標を、限られた予算と期限内に達成するためには、適切なオフショアチームを構築するための戦略と、チームをどのように管理するかが重要です。

この記事では、オフショアチームの構築方法や、開発者に求めるもの、不本意な採用を避ける方法、開発チームのパフォーマンスを高く維持する方法など、オフショアチームの組織づくりに関するベストプラクティスを詳しくご紹介します。

目次

関連記事

オフショアチームの規模はどのように決めれば良いのか

プロジェクトによって、必要なチームの規模は異なります。では、自社のプロジェクトに最適なチームの規模は、どのように決定するべきでしょうか。

一般的な答えとしては納得がいかないかもしれませんが、それは場合によります。

ソフトウェア開発の世界では、必要なオフショアチームの規模を見極めることは、簡単なことではないからです。

しかし、必要な人数を大まかに見積もり、どのようなタイミングで人員を増やし、どのようなタイミングで人員を減らせばよいのかを判断するための指標があります。ここでは、その指標と、それをどのように適用するかをご紹介します。

適切なオフショアチームサイズ:Amazonの「ピザ2つルール」

Amazon.comの元CEOであるジェフ・ベゾスは、かつてインタビューの中で、「もし2つのピザでチーム全員を養えないなら、そのチームは生産性を上げるには大きすぎる」という言葉を残しています。ピザを指標にすることの信頼性については、いったん置いておき、このアドバイスは、実はとても理にかなっています。

チームスケーリングにおいてよくある誤りがあります。その誤りとは、「人々はチームが大きければ大きいほど、生産性が高いと思いがちだ」というものです。しかし、残念ながら現実はそうではない場合が多いです。その理由の一つは、マネージャーは、チームの規模が大きくなるにつれて、プロジェクトを完了するために必要な時間数を過小評価する傾向があるからです。AさんとBさんが毎日3時間ずつ働けば、2人の生産性は6時間になると考えがちですが、無理なことを実施できると思い込んでいます。

人を増やせばすべての問題が解決するわけではなく、対処する問題の性質にも目を向けなければなりません。人数が増えれば増えるほど、コミュニケーションや情報交換が難しくなり、解決が難しくなる問題もあるからです。

では、何人以上だと多過ぎるのでしょうか。調査の結果、3~8人のグループは、より小規模や大規模なオフショアチームよりも優れたパフォーマンスを発揮できることがわかりました。つまり、現在9人以上のメンバーから成り立っているチームを3~8人のサブチームに分割したほうがよいということになります。

また、これからオフショアチームを構築するという組織に対して、アドバイスできることがあるとしたら、「小さく始めよう」です。プロジェクトは、規模を縮小するよりも拡大する方が簡単です。少人数のチームでスタートし、進捗に応じて後から人を増やす方が実施しやすいでしょう。

要求事項の理解

チームへの要求事項を理解すると、自ずとオフショアチームの規模が定まります。

「オフショアチーム要件」「チームの属性」「技術的資源」の3点を確認しましょう。

オフショアチーム要件

チームへの要求事項を理解すると、自ずとオフショアチームの規模が定まります。

「オフショアチーム要件」「チームの属性」「技術的資源」の3点を確認しましょう。

オフショアチーム要件

チームの規模が大きいことが必ずしもベストな選択ではないことを理解したら、次に「どのようにして、必要な人数を決めれば良いのか?」と自問自答する必要があります。

手がかりを探るには、まず初期要件が必要です。

プロジェクトの初期要件は、以下の要素からスタートするべきでしょう。

・技術的要求事項 

・タイムライン

・予算

最初に、プロジェクトの範囲です。大きなプロジェクトでは、より大きなオフショアチームが必要になることが多く、異なる技術スタックが求められる場合は、さまざまな役割も必要になります。専門分野ごとに役割を分けて採用する場合もありますが、場合によってはそれが不要になることもあります。たとえば、データベースとフロントエンドの開発経験があるシニア開発者がいて、データベースを扱うことがあまりない場合、その開発者はフロントエンド開発とSQLクエリの処理に振り分けます。そうでない場合は、2つの役割を担う人をそれぞれ雇うのが良いでしょう。

次に、スケジュールの見積もりです。どれくらいのスピードでプロジェクトを完了させる必要があるのかを明確にします。締め切りが厳しくない場合、少人数のオフショアチームでプロジェクトを遂行できますが、納期が短い場合は、ある程度、人数を増やして仕事を進める必要があるかもしれません。

納期が短いプロジェクトで、より多くの人を巻き込む場合に注意すべきなのは、パラレルプロセスです。パラレルプロセスとは、ほかの作業から比較的、独立しているタスクのことで、ほかの活動からのインプットを受けずに作業できるという意味です。プロジェクトは、並行プロセスが多いほど、より多くの人を巻き込み、進行を加速できます。

最後に、予算です。予算は、どれだけの人数を採用できるかを決める最も重要な要素の一つです。予算に関するよくある誤りは、お金を節約するためにオフショアチームの人数を減らしてしまうことです。これは、納期の遅れやリリースの遅れなど、開発チームに長期的な影響を及ぼします。予算の目標を持つことは大切ですが、できるだけ柔軟性を保つべきです。

チームの属性

プロジェクトの要件を理解すればチームの規模を推定できますが、チーム管理を理解すれば、戦術的な洞察を得ることができます。というのも、チームの規模によって、それぞれ適したリーダーシップのあり方が異なるためです。たとえば、独裁的なスタイルで指導するマネージャーは、大規模なチームで最もうまくいく傾向があります。一方、意欲的な人材で構成される小規模なチームは、民主的なマネージャーの指導を好むことが多いでしょう。
ポイントは、マネージャーの性格によって、適したチームサイズが異なるので、すでにマネージャーが決まっている場合は、その人の強みに合わせてチームサイズを選ばせてあげることが重要です。

ここでは、ソフトウェア開発モデルも重要な役割を担っています。アジャイル手法を採用するオフショアチームは、5人から11人のメンバーで構成される時に最高のパフォーマンスを発揮する傾向があります。チームの規模がそれ以上になると、モデルの柔軟性がプロジェクトにとって不利になる可能性があるのです。一方、ウォーターフォール手法は、構造的に物事を整理できれば、小規模なチームでも大規模なチームでも対応できます。

技術的資源

オフショアチームの構築、組織化、管理を支援するさまざまなツールがあります。サーバーレスサービスやコミュニケーションアプリを使えば、世界中の異なる場所にいる開発者同士で同じプロジェクトを完成させることができます。さらに、これまで専任の開発者が必要だった繰り返し作業も、自動化で対応可能です。これらの技術的リソースのおかげで、小規模なレベルでも高い生産性を実現できます。

【お役立ち資料】【2022年版】失敗しないオフショア開発ベンダー選びチェックシート

Previous
Next

開発者を採用する際に必要なソフトスキルをどうやって決定するか?

多くの企業は、開発者をハードスキルであるプログラミングスキルのみに基づいて採用しています。確かに、高品質なソフトウェアを構築するためには、優れたプログラミングスキルが必要であることには違いありません。

しかし、履歴書に記載されているプログラミングスキルのレベルだけを見て採用活動を行っている場合、優秀な候補者を見逃している可能性があります。開発者同士がチームとして協力する必要性が高まっている今日のソフトウェア開発世界では、効果的な相互作用とスムーズなワークフローを実現するために、ソフトスキルにも着目するべきでしょう。

ソフトスキルとは?

ソフトスキルは、コモンスキルとも呼ばれ、人が持つ性格特性や特徴であり、その人の行動や態度に現れることが多いものです。ハードスキル(プログラミング言語の知識など)のように目に見えるものではありませんが、その価値は決して低くなく、従業員の生産性やほかのチームメンバーとの関わり方に大きな影響を与えます。

チームワークに悪影響を及ぼすような人材の採用を避けるためには、ソフトスキルを慎重に評価することが非常に重要です。ここでは、開発者が持つべきソフトスキルのいくつかを見ていきましょう。

開発者に求められるソフトスキル

開発者に求められる主なソフトスキルは、次の6つです。

コミュニケーションスキル

チームワークを発揮するためには、自分の意見や考えを伝えなければなりません。このような環境では、メンバーがプロジェクトの異なる部分を担当することが多く、アイデアを交換し、問題を議論し、解決策をわかりやすく説明する必要があります。もし、開発者の誰かが自分の意見をうまく伝えられないと、誤解やミスが起こりやすくなります。

多くの企業がリモートワークの環境を導入している今日では、コミュニケーションスキルはさらに重要になります。効果的なコミュニケーションによって、チームメンバーはオンラインのZoomミーティングを短縮し、より効率的に対話できます。

オフショア開発での効果があるコミュニケーションについて詳しく知りたい方は、こちらのコラムが役に立つでしょう。

関連記事

チームワーク

協力とは、GitHubでコードを共有したり、デバッグを手伝ったりする以上のものでなければなりません。チームメンバーは、目上の人、目下の人、同じレベルの人たちからアドバイスを受け、共有できなければなりません。さらに、仲間の仕事、倫理観、ニーズを尊重することも必要です。

時間管理と組織化のスキル

当然ですが、どのプロジェクトにも締め切りがあります。開発者が時間管理やタスクの整理ができなければ、締め切りに間に合いません。この2つのスキルは密接に関係しており、これらを持つ人は高い生産性を発揮します。

時間管理や整理整頓ができないチームでは、時間管理ができない人のタスクを他の人がやらなければならなくなり、チームメンバーはイライラしてしまうでしょう。

エモーショナルインテリジェンス(感情知能)

ソフトウェア開発は、ストレスの多い仕事です。この仕事で一般的に要求される高い集中力と長い労働時間は、開発者を疲弊させる傾向があります。だからこそ、感情知能が求められます。しっかりとした感情知能を持つ人がチームにいれば、大変な時でも感情的圧力を安定させ、健全な職場環境を作ることができます。

また、感情知能を持つ開発者は、納期を守るための自己管理にも長けています。感情知能の顕著な資質は、強い傾聴力と適応力を持っています。メンバーの意見に積極的に耳を傾け、それを評価し、適切な調整ができる人は、より効果的に、生産的にタスクを遂行できます。

適応性・汎用性

ソフトウェアプロジェクトでは、クライアントが重要な変更を希望したり、誰かが何かを失敗したりと、予定通りに進まないことも稀ではありません。そうした予期せぬ状況に対応できる適応力のある人材がオフショアチームには必要です。

変革が必要になったら、これまでのやり方に執着せず、未来に向かう開発者が必要です。適応力のある人材を採用すれば、どんな困難な状況でもプロジェクトを成功に導くことができます。

忍耐力

忍耐力は、開発者にとって非常に重要なソフトスキルです。プロジェクトが思い通りに進行しないときでも、オフショアチームメンバーは辛抱強く解決策を見出す必要があります。

採用の失敗を防ぐには?

ソフトウェア開発者の採用は、簡単なものではありません。採用した開発者がもし求めていた人材と違った場合、時間とお金がかかるだけでなく、チームの生産性を妨げたり、深刻なトラブルを引き起こしたりする可能性もあります。しかし、ソフトウェア開発者の採用を正しい方法で進めれば、このような潜在的な落とし穴を避けることができます。ここでは、チームに適した開発者を見つけ、採用するためのベストプラクティスをご紹介します。

どのような開発者を雇うべきかを明確にする

ソフトウェア開発における技術的な専門分野は幅広く、多様です。まず、基本的な開発者の種類と、それぞれがソフトウェア開発プロジェクトにおいてどのような役割を果たすのかを説明します。

フロントエンド開発者

フロントエンド開発者は、ソフトウェアアプリのユーザーサイドの構築を専門とする開発者です。

ユーザーが操作するソフトウェア部分のデザインの美しさ、ビジュアルインターフェース、レイアウトなどの要素が含まれます。

フロントエンド開発で用いられるプログラミング言語にはJavaScript、HTML、React、CSSなどが挙げられます。

バックエンド開発者

バックエンド開発者は、アプリの実行を可能にするコードやロジックを記述します。

バックエンドの開発には、データベース管理、キャッシュシステム、パイプラインなどの要素が含まれます。

C++、SQL、PHP、Ruby、Python、ASP.NETなどが、バックエンド開発でよく使われる言語として挙げられます。

フルスタック開発者

フルスタック開発者は、バックエンドとフロントエンドの両方の開発に特化した開発者です。

多くのプログラミング言語に精通し、さまざまな種類の開発プロジェクトに携わった経験があります。

フルスタック開発者は、しばしば「何でも屋」とも呼ばれます。

Web開発者

Web開発者は、その名の通り、WebサイトやWebアプリの構築を専門としています。

フロントエンドやバックエンドなど、さまざまな分野の開発に携わりますが、ほとんどの場合、どちらかに特化しています。

Java、C、Go、Ruby、Swiftなどが一般的なWeb開発言語として挙げられます。

モバイル開発者

モバイル開発者の専門は、スマートフォン、タブレット、さらにはウェアラブルなどのモバイルデバイス上で動作するソフトウェアの設計、開発、保守です。

JavaScript、C#、Python、Kotlin、Swiftなどが一般的なモバイル向けプログラミング言語として挙げられます。

UX/UIデザイナー

UX/UIデザイナーは、必ずしも開発者と呼ばれるわけではありませんが、ソフトウェア開発工程において重要な役割を担っています。

UX/UIデザイナーは、ユーザーを惹きつけ、ソフトウェアの操作を容易にし、魅力的でユーザーフレンドリーなユーザーインターフェースを作成します。

データサイエンス開発者

データサイエンス開発者は、データから実用的な洞察を収集、分析、生成するのに役立つソフトウェアを設計します。

アナリティクスと統計解析に関する深い専門知識を持ち、ビジネスの成長を後押しする予測モデルを開発します。

Python、R、SQL、Scala、Juliaなどが、データサイエンスによく使われる言語です。

DevOpsエンジニア

DevOpsエンジニアは、ソフトウェア開発側と運用側の両方を監督・管理するIT専門家です。

アジャイルソフトウェア開発モデルにより、ソフトウェアや分散システムの構築、デプロイ、運用、保守を行います。

テスター

テスターには、アプリが目的を達成しているかどうかを判断する責任があります。

バグや欠陥、改善点を特定するために、さまざまなソフトウェアテスト手法を使用します。

テスターは、高品質のソフトウェア製品を開発するために不可欠な存在です。

サポートエンジニア

ソフトウェア製品の保守・サポートに特化し、稼働率、信頼性、最適な機能を確保するエンジニアのことです。

常に活動やパフォーマンスを監視する必要がある大規模なプロジェクトでは、サポートエンジニアは重要な役割を担います。

ソフトウェア開発者採用のベストプラクティス8つ

ソフトウェア開発者を採用する際の8つのベストプラクティスをご紹介します。

直面している実際の問題でテストする

採用候補者に、インターネット上の特定のコードの課題を与えてはいけません。

現在自社が実際に直面している、あるいは遭遇した問題を与えて、遂行しているプロジェクトのタイプに適しているかどうかを見極めましょう。

プログラミング言語とツールに柔軟に対応する

プログラミング言語は、日々凄まじい勢いで変化を遂げています。もし、まだ「Javaで2つの配列をどのようにマージしますか」といった質問を面接でしているのなら、アプローチを改善した方が良いでしょう。

代わりに、ソフトウェアのアルゴリズムと、候補者が問題にどのようにアプローチするかに焦点を当てましょう。

優れた問題解決能力を持つ人が新しい言語を習得することは、さまざまな言語に詳しい人が問題解決能力を後から身につけるよりも簡単なことかもしれません。

複数の担当者で候補者を面接する

現実的に考えて、私たちはある程度の先入観をもってしまうものです。ですから、最終的に人を雇う決断をする前に、ほかの見方を持つ優秀な人の意見を得ることが、非常に重要です。

コミュニケーション能力を重視する

「開発者にコミュニケーション能力は関係ない」という人もいます。

しかし、開発者は、自分が直面している問題や、同意できない意見などについて、自分の考え方を表明し、プロジェクトを正しい方向に導くことも必要です。

人前で話すことが得意である必要はありませんが、少なくとも自分の意見を明確に述べられる人材が良いでしょう。

明確な条件を設定しておく

採用が失敗に終わるのは、雇用主と候補者の間で、お互いに期待することが一致していない場合です。

両者がペアを組む前に、これらのことをはっきりとさせておきましょう。たとえば、在宅勤務はできるのか、どのくらいの頻度が許されるのか。また、変則的な時間帯での勤務が必要な場合は、契約締結前に合意しておきましょう。

好きなプロジェクトやタスクについて尋ねる

もし、その人が本当に熱心なソフトウェア開発者であるかどうかを知りたければ、好きなプロジェクトや、担当したタスクについて尋ねてみてください。そして、それらについて楽しそうに話しているかに着目してみてください。

もちろん、コーディングができる人が欲しいのは当然ですが、応募者の目的は、ただお金をもらうためではなく、自分の仕事を楽しんでいるからであるべきです。

簡潔なコードが書けるか確認する

これは、開発者募集において優先順位はそう高くないスキルです。

ただ、雑なコードを書く開発者と仕事をしたことがある人なら、その機能やアルゴリズムがどんなに優れていても、そのような人の書くコードを扱いたいという人はほとんどいないでしょう。テキストがほとんど読めないのに、良い本の内容を理解できるわけがないのと同じです。

経験不足は必ずしも悪いことではない

もし、新入社員に繰り返し作業をさせるのであれば、一般的には経験が多い方が生産性は高くなります。しかし、ソフトウェアエンジニアリングの分野では、新入社員はほとんどの場合、新しい問題に取り組む必要があります。実際に、経験が豊富であるほど、方法やプロセスを改善しようとするときに、頑固になったり、意見がまとまらなかったりすることさえあります。

システム開発において同じ状況は2つとしてないので、いつでも通用する万能のコツというものはありません。できるだけ多くの実践例を集め、それを自分のニーズに合わせて修正した上で、適用することが大切です。ですから、経験不足を不採用の理由にするべきではありません。

ソフトウェア開発者を採用する際に避けるべきこと

雇用主が気づかないうちに、新規採用者を落胆させてしまうような間違いがたくさんあります。

以下は、開発者採用を成功させるために避けるべきいくつかの落とし穴です。

オンボーディングの不備

新しく雇用されたソフトウェア開発者に対して行われる最も一般的な間違いの1つは、何も説明せずに進行中のスプリントに参加させることです。この責任はプロジェクトマネージャにあるという人もいますが、最終面接時、またはその直後に明確に説明しなければならないことがたくさんあるのです。

新入社員に適切なサポートと情報交換をすることは、必須のステップです。新しい環境に人を送り込むには、プロジェクトの目標、完成した仕事、チームが直面している課題などについての説明が常に必要です。ワークフロー、職場の文化、責任などについても説明すると良いでしょう。また、プロジェクトの資料を提供することも忘れないでください。

開発者へ期待することが不明確

思い込みと不正確さは、チームにとって有害です。新しいソフトウェア開発者を迎え入れたとき、彼らに何を期待しているかを伝えなかった場合、実際に多くの迷いと心配を招いてしまいます。自分の担当するタスクや優先すべき目標について、誤解する人が出てきては困ります。

仕事のコツについては、できるだけ詳しく説明した方が良いでしょう。適切なコミュニケーションは、より質の高い仕事というかたちで報われるでしょう。新入社員は現在のチームを補完する存在であるべきだということを念頭に置き、彼らが新入社員に何を期待しているのか、その人材がどこで最も価値を生み出せるのかを確認するために、チームと話し合いましょう。

誤解を生みやすい職務記述書

雇用主が新しい開発者を引きつけるために、開発者が興味を持つタスクを任せるといいながら、その人が入社してきたら、結局、まったく別のことをさせるということもよくあります。このような誤解を招くアプローチは、倫理的に問題があるだけでなく、離職率の上昇につながることも少なくありません。そして、その人が、開発者たちの仲間たちに「〇〇会社は良くない職場」として話すかもしれません。

もし優秀な候補者に出会えたとしても、そのスキルが求めているプロファイルと異なる場合は、その旨を正直に伝え、オファーを出しましょう。開発者が仕事のために自分のスキルを大幅に変えたいと思うことはほとんどありませんが、プロジェクトが十分に魅力的であれば、それを目指す可能性はあります。候補者を失うかもしれませんが、それでも誤解を招くようなやり方に頼るよりは、いいでしょう。

売り上げを優先するが、売り上げが全てではない

どこに拠点を置き、どのようなソフトウェア開発者を雇おうとしているかにもよりますが、おそらく、かなり幅広い給与の希望に出くわすことになるでしょう。そのような状況では、提示された給与の2倍を要求する人が、2倍良い仕事をするのかどうか、あるいは、提示された給与よりも低い給与を提示する人が、その仕事を満足にこなせるかどうか、自問自答して検討する必要があります。

ほかの従業員と同じように、開発者にもさまざまな動機やニーズがあります。いずれにせよ、優秀なソフトウェア人材を確保するためには、金銭的な問題だけではありません。職場文化、プロジェクトの質、オフショアチーム構造、そしてビジネスが提供する目的意識などが関わってくるのです。

まとめ

海外からのIT人材と一緒に仕事をする際は、ある程度の心配は付きものです。

オフショアチームを自国と異なるタイムゾーンや文化を持つ外国人と見なすと、その視点は人間と人間との相互理解に根ざしていないため、不必要な障壁を生む可能性があります。

オフショアチームを、貴社のビジネス目標達成のために伴走し、ソフトウェア開発プロジェクトを成功に導いてくれるパートナーとして捉えれば、一緒に仕事をするプロセスはとても簡単になります。オフショアチームと貴社の間にどんなに大きな違いがあっても、お互いに協力し合い、支援し合おうとする気持ちがあれば、Win-Winの結果が得られるでしょう。

ベトナムオフショア開発なら、当社にお任せください!

本動画では、ベトナム第2位のICT企業「CMC Corporation」グループの日本法人である、「CMC Japan」の紹介をしています。日本では、ベトナムオフショア開発を軸に、SIサービス、DXサービス、ソリューション導入を提供しています。

【お役立ち資料】 ベトナムオフショア開発入門書
資料ダウンロード

資料は下記のフォームを送信して頂くと完了画面またはメールにてダウン口一ドできます

Previous
Next