2021年11月11日に、プロダクト開発体制を一挙公開〜メルカリ・エンジニア組織の大解剖〜 というイベントを開催しました。 この記事はその中のセッションの1つ、「Cross-functional team in Mercari」の書き起こしです。
詳しくはYouTube上にある配信アーカイブをご視聴下さい。
当日行われたその他セッションの書き起こしは以下でご覧いただけます。
- 【書き起こし】プロダクト開発体制を一挙公開 – メルカリのプロダクト開発体制
- 【書き起こし】プロダクト開発体制を一挙公開 – 全員ソフトウェアエンジニアとは?
- 【書き起こし】プロダクト開発体制を一挙公開 – メルカリプロダクト開発体制本音トーク
自己紹介
皆さん、こんばんは。@vkgtaroと申します。メルカリには2017年9月にバックエンドエンジニアとして入社しています。その後フロント・バックエンド体制になった時にバックエンドのエンジニアリングマネージャー(以下EM)になりました。現在は、メルカリのCamp1にてエンジニアリングヘッドを務めています。
今日はメルカリのCross-functional teamが、実際にCampの中でどうワークしているのか紹介させてもらいます。
Cross-functional teamとは?
WikipediaによるとCross-functional teamとは、異なる専門性を持った人たちが共通のゴールに向かって活動するグループであるとされています。それによって、いくつかの専門知識を必要とする課題に対して、チームの中だけで自走して解決できるチームです、と書かれています。他にも複数の専門家がいることで、1つの課題に対して異なる視点を提供し、その上で創造性を高めて共通の意見を出せるといったことが定義されています。
つまりスキルや職能ごとにチームを作るのではなく、PMやクライアントエンジニア、バックエンドエンジニア、他にもBIやさまざまな人たちが同じチームに所属して、ゴールに向かって活動します。メルカリのゴールはサービスをお客さまに届けることなので、プロダクトを中心に置いています。DBやバックエンドロジックに修正を加えて、クライアントで表示を変えるといったことも、この構成であればチーム内ですべて実装、完結できるというのがCross-functional teamになります。
Camp1のミッションについて
次にCamp1のミッションですが、これはカスタマージャーニー全体の合理化であったり、お客さまの声(VOC: Voice of customer)の解決、サービス全体でのお客さまのペインポイントの解消となっています。
カスタマージャーニーというのは、お客さまの登録からはじまって、商品の売買、売れたら発送し、購入したら受け取ってお互いに評価するまでのフローをジャーニー(旅)として表したものです。
お客さまからはさまざまなフィードバックをいただいていて、メルカリの中核であるカスタマージャーニーに関する改善点は未だに数多くあります。Camp1は、この改善点の洗い出しから仮説を立て、検証やA/Bテストを行って課題解決に導くのがミッションになります。このプロセスを行うためには、さまざまな分野のメンバーが1つのチームに集結する必要があると感じています。
例えば、iOSエンジニアだけで解決できないバックエンドのロジック修正が必要な課題であってもチーム内で解決できます。この点がCross-functional teamがCamp1のミッションに適合しているポイントになります。
また、メルカリには全員ソフトウェアエンジニアというコンセプトがありますが、これもCross-functional teamと相性が良いと思います。1つのチームにさまざまなスペシャリストの方がいて、同じゴールに向かって走っています。それによってバックエンドエンジニアがiOSの実装を読んでみたり、Androidエンジニアがバックエンドのロジックを確認することがあります。また、バックエンドとクライアント側の人たちでペアプロすることもあります。
Cross-functional teamではないチーム
ここまででCross-functional teamの良いところをお話ししたのですが、Cross-functional teamになっていないチームもCamp1にはあります。たとえばデザイナーチームはデザイナーだけが集まってチームになっています。これはデザイナーの人数が足りていないため、個々のチームに所属してしまうとデザイナーがいるチーム、いないチームが生まれてしまうためです。そこでデザイナーだけは別なチームとして、デザインに関しては各チームからデザイナーチームへ相談する形になっています。とは言ってもSlackでメンションを投げる程度のことで、きちんとワークしています。
あとはQAエンジニアもチームから分かれて存在します。エンジニアやPM問わず、関わった人たちでまずテストやドッグフーディングなどを行って、品質をチェックします。その際、各チームで作ったテストケースについてはQAエンジニアがプロフェッショナルとしてレビューしています。また、QAエンジニアはテストオートメーションなども進めていますので、別チームとしています。
他にもメルカリのWebサイトはリニューアルしたばかりとあって、さまざまなフィードバックの対応が求められるため、Web専門のチームを置いています。バックエンドエンジニアもCamp内で足りない事情があって、クライアントだけのチームがあったりします。そのチームはクライアントだけで進められるプロジェクトを担っています。
図にするとこんな感じで、チームABCといった具合です(実際にはグリーンやレッドなどカラーで分けています)。
Cross-functional teamのあるべき形
すべてCross-functional teamにするのが目的ではないので、デザイナーチームやクライアントだけのチームも許容しています。あくまでも目的は、お客さまに良いプロダクトを提供することなので、その手段としてCross-functional teamで仮説検証し、改善を行いましょうとCamp内で共有しています。
他にも社内異動や入社、退職によってメンバー構成が偏ることはあり得ます。その都度Cross-functional teamのためにチーム構成を考えるのは非効率的ですし、そもそもの目的にそぐわなくなります。できる限りCross-functionalで進めましょうというレベルで運用しています。
チーム横断したタスクについて
Cross-functional teamはさまざまなスペシャリストが集まることで、複合的な問題に対して取り組めますが、時には特定の技術領域ごとに解決すべき課題もあります。最近はじめた取り組みですが、Camp1の中にバックエンドエンジニアだけで集まっているBackend Guildというのを作って、チーム横断的にバックエンドに関するタスクに対応しています。
実際チームによってバックエンドのタスクが多かったり、逆になかったりする場合もあります。あるチームはマイクロサービスを4つ持っていて、別なチームは1つだったりすることもあります。そういった場合でもCamp1の中で知識を共有して、別なチームに属していてもCamp内のマイクロサービスを皆でメンテナンスしたり、機能開発できるようにしています。
Cross-functional teamにおけるEMに求められるもの
Cross-functional teamではEM自身がCross-functionalであることが求められると感じています。EM自身、得意な技術領域がありますが、別な技術領域(クライアントやバックエンドなど)が分からないのではマネジメントする上で困ることもあります。ただ、それについてはEM同士で1on1をしたり、情報共有することで解決できています。
エンジニアから、その技術領域が得意なEMに見て欲しいという意見も時々あります。しかし、どちらかというとピープルマネジメントであったり、キャリアのサポート、チーム間にあるブロッカーの排除を求められる方が多いので、大きな問題ではないと思っています。
その他の課題
あとは細かい話ですが、クライアントとバックエンドのタイムラインがずれていると助かることがあります。たとえば同じチームでスプリントを同時に開始しますが、バックエンドのエンドポイントなどが先に出てくれるとクライアントは作りやすいかと思います。
ただ、エンドポイントのインタフェースはバックエンド側だけでなく、クライアント側から呼びやすい形に対する提案であったり、バックエンド側はDB負荷を考慮した設計に関する意見なども必要なので、そういったところはチーム内でうまく調整しながら進めて欲しいと思っています。
まとめ
Cross-functional teamについてまとめると、Cross-functional teamはチーム内でゴール達成に必要なことが完結している、自走できるチームであると言えます。また、職能ごとのメンバー数やチーム数によっては、すべてCross-functional teamにできる訳ではありません。
場合によっては単一分野のメンバーで構成したチームが必要ですし、チームを横断した取り組みが重要なこともあります。何よりもゴールに合わせた柔軟な組織構成ができることが大事だと思っています。
以上となります。ありがとうございました。
さいごに
メルカリではメンバーを募集中です。 少しでもご興味のある方は、ぜひともMercari Careersの募集要項をご覧下さい。
また、今後もエンジニアリング組織に関係するイベントを随時開催していきます。connpassでメルカリ/Mercariのグループメンバーになることで最新情報を受け取れます。