海外エンジニアと働く際の技術選定の重要性 - AWS Amplifyの例
弊社は海外エンジニアを採用して、受託開発のようにプロジェクトを進め、完了後は残った海外エンジニアを顧客に渡すようなビジネスをしている。
多くの日本企業はできるエンジニア不足に悩んでいる。そこで一つの案として海外エンジニアの採用がある。今はDeelなどのEORサービスを使えばリモートで業務委託・正社員雇用ができる時代になった。
またLinkedinやNaukri.com、Upworkなど、海外の人材を探す手段も豊富でやるかやらないかの時代になってきた。
さて、採用はできる。日本人だけではなく世界の人材プールにアクセスすることが可能な時代になったからである。問題は採用した後にある。
実際の問題は採用よりも運用
ソフトウェア開発が失敗する根本的な原因は認識相違にあると考えている。簡単に言えば伝言ゲームのミスである。Aさんから教えてもらったことをBさんに少しだけ間違えて伝えてしまった。そして、Bさんも少しだけ間違えてCさんに伝えてしまった。結果的に製品はAさんが想定していたものから全く違うものが出来上がる。
そして、日本人担当者が英語を話せない前提で、海外エンジニアと働くことはかなり難易度の高い伝言ゲームとも言える。
ここで思考のスタートして、そもそも伝言ゲームを難しくする要素を考えてみる。
難しくする要素は以下が思いつく。
参加者を増やす
1対1の伝言ゲームは簡単だが、3人、4人、10人と人数が増えるほど難しい
お題の文量を増やす。お題の難易度を上げる。
昨日何食べただけを回すのであれば簡単だが、システム開発を回すのは分量や難易度の観点で難しい
お題の難易度が理解できない人を入れる←スキル不足人材
間に日本語の分からない人を入れる←外国人開発
英語ができない日本人が外国人と開発する際に通訳者は必須になる。またドキュメントも日本語が多くなりがちだ。そのため、どうしても伝言ゲームを難しくしてしまう。通訳者が入った分だけ参加人数が増え、そもそも日本語が分からない外国人にシステム開発を依頼するためである。単純に日本人に依頼するよりも難易度は高い。
だからといって日本人エンジニアを採用することもまた難しい。その狭間で多くの企業は悩んでいるように感じる。
全ての外国人開発が失敗するわけではない
しかし、0-100で物事を考えることはどんな時でも間違っている可能性が高い。難易度は高いが抑えるべき部分を抑えることで失敗確率を減らすことができる。しかし、抑えられない場合はただただ失敗するPJになり、日本人のほうが良かったといった結果になりかねない。
では、何が重要なのか?
まず伝言ゲームのスキル人材不足と記載されている部分にもある通り、今回のPJのスキルがある人材を採用することがまず前提になっている。そのため、経歴書や学歴だけで人材を採用すると、何らかのミスマッチが起こりやすい。
私のおすすめは、例えばPJのシステム設計者を採用する場合は実際にPJの要件定義を渡して、設計をしてもらうことである。重要なことは設計の経験があったとしても、このPJの設計ができるかどうかである。
いくら経歴が良くてもこのPJにマッチしないのであれば、それは(自社にとって)良い人材とは言えない。PGやQAなども同じようなやり方で実際にPJの一部を採用試験にすることがおすすめである。
コミュニケーション量とドキュメント量を減らす工夫
さて、プロジェクトに必要とされているスキルを持った人材を獲得できたとする。そして、これはやり方次第のため、それほど難しくない。
しかし、実際にプロジェクトをスタートしてから問題は発生する。
英語のできない日本人側でプロジェクトを進めていけば、コミュニケーションやドキュメントが自ずと日本語になっていく。つまり、日本人がプロジェクトに入れば入るほど、プロジェクト全体として日本語量が増えていく。
そして、私たちが英語でコミュニケーションが取れないように、外国人も日本語でコミュニケーションが取れない。そのため、外国人からすると日本語量が増えるほどシステムがブラックボックスになっていってしまう。
もちろん、ある程度の概要は通訳を入れたビデオ通話で外国人も分かる。しかし、細かな仕様部分については抜け漏れが発生しがちになる。
そこで重要なことは、SaaS(Software as a Service),BaaS(Backend as a Service)をはじめとする簡単にシステムを作れるサービスを多用することである。
AWS AmplifyをはじめとするBaaS
なぜ、BaaSなどを多用すべきか?それはPJ全体のドキュメント量、依頼量がサービスに吸収されて、難易度が下がるからである。
AWS Amplifyの利点として、本来やらなければいけないことの多くの部分を代替してくれる点にある。以下の動画をみるとある程度イメージは湧くだろう。
開発難易度を少しでも減らす工夫を
今回の記事で最も伝えたい点は、そもそも難易度の高い外国人エンジニアとの開発を一から全て作るのは難易度がさらにに高くなるということである。
作業量・依頼する量が増えるほど、ドキュメントやコミュニケーション量が増えていく。それは結局伝言ゲームの難易度が難しくなり、失敗リスクが高まることを意味している。
少しでも外部サービスを使い、シンプルな要件にすること。コミュニケーション量を減らすことでよりリスクの少ない外国人開発が可能になる。
ただ、上記で伝えていることは日本人だけのシステム開発にも当てはまる。日本人のシステム開発であってもリスクが相対的に低いだけで失敗するときは失敗する。特に初期開発であれば、フルスクラッチ開発は高いため、BaaSなどを利用して開発し、必要であれば徐々にフルスクラッチに移行するなどの手段が良い。
そして、この観点をそもそも考えずに今までの開発慣習でシステム開発をスタートするチームが私の観測範囲では多い。そのため、まず外国人エンジニアとの開発は難易度が高い。そしてどうすれば低くできるかを最初から想定してPJにあたるべきだと考えている。