前回の佐々木による記事から、少し時間が経ってしまいましたが、オフショア開発への取り組みについてアップデートします。IDをオフショア開発するに当たって、言語や文化の壁に起因して苦労したことや、それを克服するための改善の取り組みについてご紹介させて頂きました。目指す姿として高い理想を掲げながらも、まずは品質面での足元固めにフォーカスしていたのが実情でした。その後も地道な改善サイクルを繰り返すことで、ついには国内の開発チームと遜色ない成果物を出せるようになってきましたが、次の段階の課題が見えてきました。図1は、昨年のある時点における国内とオフショアの生産性を相対的に比較したものです。(あくまで相対比較が目的ですので、単位は割愛します。)オフショアの人件費は確かに安いながらも、品質確保のためのレビューなど国内からのサポートが大きくなってしまい、全体としてのコスト効果の優位性を示せなくなっていました。オフショア活用のメリットはコストだけではないのですが、とはいえ、コスト低減は最も期待されるメリットです。品質は向上した状態を維持したまま、これを改善することが次の課題となりました。そのために、国内からのサポートの効率化と、ベロシティ(スプリント毎のアウトプット)の更なる向上を図るべく、新たな改善に取り組みました。ブリッジSE導入前のコミュニケーションモデルサポート効率化のためにまず考えたのは、コミュニケーションの改善です。図2は、当初通訳を介してコミュニケーションしていた際の、コミュニケーションモデルを示しています。話し言葉によるコミュニケーションでも、英語による書き言葉でのコミュニケーションでも、最終的にオフショアの開発者に伝わるまでには、感覚値として約3割程度の情報がロストしているように感じていました。この3割に起因して、コミュニケーションのやり取りが増えたり、成果物に手戻りが発生したりすることが、お互いの稼動を増やしていた側面がありました。ブリッジSE導入後のコミュニケーションモデルそこで考えたのが、ブリッジSEの導入です。ブリッジSEという言葉の定義は様々なようですが、共通するのは、言葉や文化、さらには距離や時差を越えて、文字通り“橋渡し”をするSE(システムエンジニア)ということになります。そのため、どちらに駐在するか(日本か、オフショア先か)、どちらの会社の所属か、どちらの国の出身か、取りえる選択肢は様々にありました。その中で私たちが採用したのは、オフショアチームの社内の人材であり、さらにオフショア先の出身(文化・母国語が開発者と同じ)であり、しかも日本に駐在して国内の開発チームと席を一緒にできるエンジニアでした。これにより図3のようなコミュニケーションが可能となりました。実際には細かなやり取りでは直接現地開発者との英語でのチャットも引き続き行っていますが、多くはこの絵のモデルのようにコミュニケーションできるようになったことで、体感としては3割だった情報の減衰が1割程度にまで改善されています。同じ職場にブリッジSEが来てくれたおかげで、日本のエンジニアからオフショアの成果物へのコメントが対面・日本語で気軽にできるようになったために、技術情報の共有化が促進されるようになったという効果も生まれました。このようなブリッジSEの導入による効率化と合わせて、コミュニケーションのツールやルールの改善活動も続け、ブリッジSEの追加を差し引いてもより少ないサポート体制でオフショア開発を回せるようになっていきました。オフショアのベロシティの周期的バラツキブリッジSEが参加し、新たなオフショア開発の進め方が軌道に乗り始めた頃、次に着手したのは、スプリント毎の成果量(ベロシティ)を向上させていくことでした。これまでコード品質の向上などでも効果を発揮してきた『KPIの定量化と目標値の明確化』については、当然ここでも行いました。KPIとしては見積のためのストーリーポイントではなく、開発難易度やプロダクトオーナーから見たビジネス価値を加味した独自のポイントを各ストーリーに設定し、スプリント毎の合計値を見ていくというものです。ブリッジSE含めた体制を立ち上げる傍らで、このKPIによる現状分析を進めていく間に、成果量向上のための改善ポイントが見えてきました。図4はスプリント毎の前述の独自ポイントの合計値の過去の推移を示しています。3スプリント周期で、低→高→中のリズムを繰り返していることが見て取れました。そこで試しに3スプリントの移動平均を取ってみたところ、次の図のように面白いように平滑化されます。分析してみると、これには接続する対向システムが増えたり、新しい技術領域の調査が必要となるような、新規のエピック(ユーザストーリーのまとまり)を着手するタイミングが概ね3スプリント毎にやってきていたことと関係していました。ベロシティが落ち込んでいるスプリントでは新規エピックの開発に着手したタイミングであり、要件の認識齟齬や影響調査不足によりスプリント内に完了できないストーリーが発生することが影響していました。その次のスプリントでは仕様理解度も高まり、あと一歩だった残件の完了と合わせて、本来分のストーリーも完了させられるため、成果が高くなったように見え、最後の3スプリント目では“残件ボーナス”が無いため、本来のベロシティに見合った数値を記録する、ということを繰り返していたのです。成果量を増やしていくためには、これまでオフショアでは担当していなかったような難易度の高い開発も担っていく必要がありました。安心して任せていくためには、既存仕様への影響調査や、上流の設計がしっかりできる必要があります。ベロシティのバラツキの原因が、まさにその点にあるということが明確になったことで、対策すべきポイントも明確にできました。それを受けて始めた取り組みが、調査や概要設計タスクのアウトプットの改善です。これにはどんな開発内容にでも適用できる万能なツールというものは無いのですが、フローチャートやデシジョンテーブルなど、内容に合わせて最適と思う方法で上流タスクのアウトプットをできるだけ早いタイミングから可視化することを意識付けています。実装のための細かな設計に入ってから、大きな認識齟齬が発覚したのでは、スプリント内にリカバリーすることは難しくなりますので、できるだけ早いタイミングから調査・設計状況のアウトプットを出してもらい、フィードバックを得ることが重要と考えたからです。この結果、周期的なバラツキは無くなっていき、以前に比べてベロシティは安定し、これまでオフショアでは担当して来なかった難易度の高い開発も担当できることで、ベロシティは大きく向上し始めています。まとめこのように、アジャイルならではの改善プロセスの対象は、品質面での下地固めの時期を過ぎ、開発の効率化、内容の高度化へと発展を続けています。コストパフォーマンスの点でオフショア開発の利点をアピールできるようになってきたことは、最低限の目標達成であり、「グローバルな視点で製品・サービスを磨き上げていく」という更なるステージに向けて、これからも改善を繰り返していきたいと考えています。