mercan

エンジニアと立ち話。Vol.32 @hidenorigoto(メルカリBackend、EM)ちょっとお話いいですか?

メルカリで働くソフトウェアエンジニアにちょこっとお話を聞いていく本シリーズ。第32回では、Backendチームのエンジニアリングマネージャー@hidenorigotoにちょこっとお話を聞きました。聞き手は、メルカリCorporate Productsチームの@wadatchです。

「マイクロサービス化の中の人になりたい(笑)」ということで、メルカリへの入社を決めた@hidenorigoto。入社当時からマネージャーを担う@hidenorigotoが直面した「メルカリ特有のマネージャーの役割」、そして実際にマイクロサービス化に携わったことで見えてきたものとは何か。ちょうどメルカリ入社1年となった今の手応えを語りました。

「マイクロサービス化の現場に立ち会いたい」ということで、メルカリへ入社

@wadatch:@hidenorigotoさん! @hidenorigotoさん! ちょっとお話、いいですか?

@hidenorigoto:あ〜、これは、あれですね!

緊張しながら声を掛ける@wadatch(メルカリCorporate Productsチーム)、驚いて少しブレる@hidenorigoto(メルカリBackendチーム)

@wadatch:まず、入社時期を教えてください。

@hidenorigoto:はい。僕がメルカリに入社したのは、2018年11月です。ちょうど入社して1年経ちましたね…!入社当時はBackendチームのManager of Managersでした。Manager of Managersの仕事は、エンジニアリングマネージャー(以下、EM)をマネージするという、2レイヤーのマネジメント。しかし、このときはまだManager of Managersの役割が導入されたばかり。僕を含め、他のManager of Managersたちも手探り状態だったことを覚えています。

@wadatch:なかなか険しい状況だったんですね。なぜメルカリへ?

@hidenorigoto:僕はプログラマーになりたてのころから、ソフトウェア設計にずっと興味を持ち続けてきました。そのなかでもドメイン駆動設計は、かなり長い間テーマとして持っていて、開発の現場で設計や担当アサインなどに取り入れたり、関連の文献から多くのことを学んだりしていたのです。メルカリにはエンジニアの知り合いが何人か在籍していて、マイクロサービス化の話も聞いていました。マイクロサービス化とドメイン駆動設計は、概念的に共通する部分を持っているんですよね。入社したいと考えるようになったのは、そのマイクロサービス化が大変だという話を何度も聞いたからです(笑)。それを聞いて「自分の持っている知識やノウハウを試すチャンスだ」と。

@wadatch:入社後は、マイクロサービス化にどう関ってきたんですか?

@hidenorigoto:当初はマイクロサービス化だけを行うプロジェクトチームと、施策の開発を行うチームが完全に分かれていました。マイルストーン達成に適した体制でしたが、組織全体をマイクロサービス文化にするためには、構造の変更が必要。そこで他のEMと相談しながらドメインチームと呼ぶ体制を定義して、2019年1月からBackendチーム全体に導入しました。今はその体制の延長でやっていますが、さまざまな問題もわかってきました。そこで、現場メンバーとディスカッションしながら、体制の定義をアップデートしていこうとしています。…そう言えば、@wadatchさんはCorporate Solutions Engineeringチームでしたよね?

@wadatch:いえ、今はCorporate Productsチームになりました。IT環境を統括するCorporate Engineeringの一翼を担い、社内向けプロダクト開発を通じた経営・組織課題解決に取り組んでいます!

メルカリでの約1年で痛感する「生きた」コンウェイの法則

@wadatch:入社後、実際にマイクロサービス化に関わってみてどうでしたか?

@hidenorigoto:ドメインを見いだして機能を分割する開発は、前職でも経験がありました。しかし、それはあくまでも1チームで開発する規模のプロダクト。メルカリに比べると、はるかに小さな規模です。メルカリでは、ソフトウェアの機能ごとで分割するほか、それに関わるメンバーをチームとして編成する必要があります。ソフトウェアの機能分割だけでも本を何冊も書けるくらい難しいことですが、そこにチームの分割が重なって、半端ない難しさになっていますね。それをメルカリのスピード感のなかでやるということが…。

@wadatch:どのあたりに難しさを感じていますか?

@hidenorigoto:メルカリは事業会社なので、事業成長とマイクロサービス化を両立しないといけませんよね。「右を立てれば、左が立たず」ではないですが、どうしてもこの2つには利害関係が起こってしまう場面があります。それも頻繁に、です。いかに良いバランスを保ちつつ、かつメルカリ特有のスピード感を持って推進していくことの難しさは、言葉では説明できません!

@wadatch:ドメイン設計だけでなく、チーム編成も含めて考えなければならない。これは、正解を探すのが難しそうです。

@hidenorigoto:僕自身、マイクロサービス化におけるドメイン設計やチーム編成に興味があってメルカリに入社しています。だからこそおもしろいと思いつつも、最近は「生きた」コンウェイの法則を痛感しまくっています。

<コンウェイの法則>
メルヴィン・コンウェイが提唱した「アーキテクチャは、組織の構造を反映させたものになる」という法則。

@hidenorigoto:マイクロサービス化によってサービスや機能ごとに責任を割り振ることで、チームの独立性や自主性は高まります。これは基本的に良いことなのですが、同時に他のチームへの関心が相対的に低下してしまう。組織によっては、これは問題とならない場合もあります。当然メルカリも、そうなる未来を目指しています。しかし、現在はまだマイクロサービス化の過程なので、他のチームの状況を把握しながら、足並みを揃えて進めていく必要があると考えてます。このような途中段階の組織構造を定義するのは、本当に難しいですね。

@wadatch:ですよね。

@hidenorigoto:はい。単純に未来の構造に寄せるだけでは、機能しません。人とソフトウェアそれぞれの、現在と未来の構造をにらみながら調整していく感じです。しかも、全体を均一に変更するのでもなく、個々のチームの状況や問題を見てチューニングしていかなければならない。本当に、1つも正解なんてない仕事なんですよね。

「EMにこそ、現場感が必要」のひと言で気づいたおもしろさ

@wadatch:現在、@hidenorigotoさんはEMを担当しています。前職でも、マネージャーをしていたのでしょうか?

@hidenorigoto:はい、マネジメントを担当することはありました。でも、前職でのマネージャーは「プレイングマネージャー」。そのため、開発に参加しながら、メンバーやチームに「こうしたほうがいい」と具体的に伝えることができました。メルカリで求められるマネージャーの役割は、メンバーやチームの成果を最大化すること。入社直後はメルカリでの開発経験がなかったので、もどかしさを感じることも多かったですね。

@wadatch:「マネージャー」と聞くと、一般的に想像されるのがプレイングマネージャーです。しかし、メルカリで求められる「マネージャー」は、定義が少し異なります。僕もEMとして、「現場に触れず」というのはやはり難しいなと感じています。「側方支援する」と言葉で表現することは簡単ですが、実際には二人羽織状態になったりして、EMもメンバーも身動きをとれない状態に陥ることだってあります。

@hidenorigoto:そのとおりですね。現場を客観視しながらマネジメントを行うことは、とても難しい。僕の場合、これまでプレイングマネージャーをしてきたこともあり、現場を経験していないことにも引け目がありました。しかし、@stanakaさん(メルカリVP of Backend)のもとでEMをやるようになってからは、おもしろくなっていったんです。

@wadatch:「おもしろい」というと?

@hidenorigoto:EMを担当するとき、@stanakaさんが言っていたのは「EMにこそ、現場感が必要」。それまでは「どこまで現場に踏み込めばいいのか?」と迷うことも多かったのですが、@stanakaさんのひと言で吹っ切れました。それ以降は、現場での設計判断を自分の言葉で説明できるくらいに、現場で開発されているものを理解することに時間を使うように切り替えました。これによって現場で起きている問題もよく見えるようになり、メンバーが開発に集中できるよう、EMとしての権限を使って他チームの合意を得ながら、そこそこのスピード感で課題解決に向けて動けるようになったのです。

@wadatch:EMとしてアクションしていくことは、大事ですよね。

@hidenorigoto:そうなんです。1つの問題を解決するだけでも、かなりの労力が必要です。メルカリの規模とスピード感のなかでは、「プレイングマネージャー」だと問題を解決していけないんですよね。自分がオーナーとなり、メンバーやチームのボトルネックとなるものを解決するために動き続けなければいけない。とても難易度の高いことなんですけれど、おもしろいですね!ちなみに、この1年で感じたメルカリのエンジニアリング組織の変化について、こちらのスライドにもまとめています!

チャンスがあれば、第一線で!

@wadatch:今後、@hidenorigotoさんがメルカリでやりたいことは何ですか?

@hidenorigoto:今、マイクロサービス化を進める「中の人」になれているように感じています。そして、少しずつではありますが、メルカリの技術面と組織面の両方で、マイクロサービス化を終えた先をイメージし始めているところです。まだまだマイクロサービス化は道半ばで、ゴールは程遠いというのが現状。しかし、1年前までフワフワしていて手が届かない夢のように思えたゴールが、今は道筋ができ、着実に一歩ずつ進んでいると確信できるようになりました。マイクロサービス化に区切りがついたら…現場の第一線でソフトウェアエンジニアとしてプロダクト開発するのが密かな夢だったりします。

@wadatch:いい話!そのときは、ぜひよろしくお願いします!

関連記事 この記事もおすすめ!✨

エンジニアと立ち話。Vol.31 @_zak3(メルペイMLエンジニア)ちょっとお話いいですか?

エンジニアと立ち話。Vol.30 @ matsu(メルペイQAエンジニア)ちょっとお話いいですか?

エンジニアと立ち話。Vol.26 @oinume(メルペイ テックリード)ちょっとお話いいですか?

エンジニアと立ち話。Vol.23 @masudakさんと@_tweeeety_さん(ともにEngineering Office)ちょっとお話いいですか?

エンジニアと立ち話。Vol.29 @ichikawa_0829(メルカリBackendエンジニア)ちょっとお話いいですか?

エンジニアと立ち話。Vol.25 @hamakn(メルペイBackendエンジニア)ちょっとお話いいですか?

エンジニアと立ち話。Vol.34 @ y-oshima(メルカリMLエンジニア)ちょっとお話いいですか?

エンジニアと立ち話。Vol.24 @KeithYokoma(メルペイAndroidエンジニア)ちょっとお話いいですか?

メルカン情報は、こちらでも