mercan

プログラマでテスト駆動開発者の@t_wadaさんをお招きした社内勉強会での様子をお届け!#メルカリな日々

みなさん、こんにちは!メルカリのエンジニア組織の組織づくりや情報の可視化を担当しているEngineering Officeのaisakaです。

2019年12月18日に、プログラマでテスト駆動開発者の和田卓人(以下@t_wada)さんを社内にお招きし、社内勉強会を実施しました!

内容は、先日行われたEOF2019 (Engineering Organization Festival)にメルカリの今の課題を取り入れ、アレンジしていただいたものです。EOF2019にて、メルカリから参加した@hidenorigotoさんと@jarinosukeさんの登壇記事はこちら!

当日は120名以上のエンジニア、プロダクトマネージャー(PM)、コーポレートを含むメンバーが参加し、ランチを食べながらプロダクト開発における開発品質とスピードの関係を学ぶ時間となりました。そこで今回の #メルカリな日々では、当日の内容と様子をお伝えいたします!

和田卓人(@t_wada)さん

今回の社内勉強会は、@t_wadaさんによるEOF2019での講演を聞き「ソフトウェア開発で直面しやすく、かつ頭を悩ませる課題に関する講演は、資料共有ではなく直接みんなが聞き、考える時間をつくりたい」「@t_wadaさんに、メルカリで話してもらう時間をつくれないだろうか」と思い立ったことがきっかけ。そこから企画から実現まで、1ヶ月弱という期間でイベントを実行できるのは、メルカリならではのスピード感です。

社内周知をしたところ、メルカリグループ内のエンジニアから大反響があり、社内で通訳や翻訳を行うGOTチームが、英語話者のエンジニア向けの資料の翻訳、当日の同時通訳を担当してくれました。

「中長期的にみると、品質とスピードはトレードオフではない」

そしていよいよ当日!講演は、@t_wadaさんを象徴するライオンが描かれたアスキーアート「テスト書いてないとかお前それ、@t_wadaの前でも同じこと言えんの?」からスタート。講演内容では、「品質とスピードのほんとうの関係」をテーマに@t_wadaさんが語りました。

「テスト書いてないとかお前それ、@t_wadaの前でも同じこと言えんの?」のスライド

@t_wada:時間を優先するために品質を犠牲にできると信じている人もなかにはいるが、それは「間違い」である。短期的には速度があがっているように見えても、それは「一時的な錯覚」。この短期的の終わりがくる損益分岐点は、3年後とかではなく、1ヶ月以内にあらわれる。つまり、ソフトウェアにおける品質である内部品質を上げることで、手戻りや無駄がなくなり結果的にスピードがあがる。それによって学びのループを高速に回せて外部品質が上がる。

教育とスピードはトレードオフなのか?

そして最後は、メルカリグループが課題に感じているジュニアエンジニアの育成について。先日メルカリが開催したエンジニア向けイベント「Mercari Bold Challenge ~CTOとエンジニアが赤裸々に語る 変化と挑戦~」でのCTO名村の講演内容を引用し、ジュニアエンジニアの育成とスピードの関係について話していただきました。

@t_wada:品質を保ち、スピードを上げるために、教育を犠牲にして、ベテランエンジニアがよってたかって開発してリリースするという発想が生まれる。その結果、若者が育たないという事例がある。


モノカルチャーのチームであるほどスピードは速いことは事実であるが、変化に弱い。モノカルチャーで教育をなくしてスピードを速めるのは短期中期では速いが、多様性や学習が犠牲になるがゆえに次世代に質を引き継ぐことが難しい。これは、長期的にはやはり致命傷だ。質の高い開発を長期的に継続するには、内部品質への投資を組織レベルで継続する底力が必要。その底力を持続可能にするには、若い世代のチャレンジの機会やモノカルチャー解体が必要となってくる。


これによって開発スピードはベテランエンジニアチームより遅くなるが、多様でプロダクトの未来の可能性を閉ざさず、むしろ広げられる。教育とスピードはトレードオフなのか?と、次の段階の議論へ向かおうということになる。

と講演を締めくくりました。

ジュニアのPRレビューするときに、シニアの開発速度は落ちる。それに対してシニアは?

講演後のQ&Aセッションでは、メルカリのシニアエンジニアが日々直面している悩みを@t_wadaさんにぶつける機会となりました。

メルペイBackendエンジニアの@koemuより、「ジュニアエンジニアのPRレビューをしていると、どうしてもシニアエンジニアの開発速度は落ちてしまう。それに対して、シニアエンジニアはどういう心持ちで向き合っていけば良いのかアドバイスいただきたい」と育成における悩みをぶつけました。

その悩みに対して@t_wadaさんは、現代の開発における「無駄」がどこにあるかを見極めることが重要だと言及。

@t_wada:現代の開発において、ボトルネックはPRレビュー。書いてから、マージやリリースされていないレビュー待ちPR、この在庫をどう処理するかがポイントになる。質を判定できるのがテックリード(TL)やシニアエンジニアしかいないとすると、一番速くコードを書けるはずなのに、彼らの前に在庫が積まれ、Wait Listになり、ボトルネックになる。一方で、レビューコストを下げるとレビューの時間と質を下げて流していこうとするとレビューが浅くなって質の怪しいコードが世に出ることになる。


私の仕事もあるのでバイアスが掛かっているが、解決策としてペアプログラミング、モブプログラミングをおすすめする。レビューを経たコードが世に速く出るほうがリードタイムは短くなる。シニアエンジニアやTLをもっとプログラミング兼レビューに回し、シニアやTLが見たコードはレビューを短くすることで、デリバリーの速度を上げる。


ジュニアエンジニアの教育には、座学やリアリティのない講座ではなく、プロダクトのコードを題材とするのが一番良い。TLやシニアエンジニアは、ジュニアエンジニアに教育を施しつつ、コードを書く仕事に入れ、PRレビューに忙殺されない。ペアプログラミングやモブプログラミングは、ボトルネック解消しリードタイムを短くする手段であり、さらにジュニアエンジニアの教育効果もある。

勉強会を終えて、参加メンバーからは「今の現場で悩んでいたことを直接、@t_wadaさん本人へ質問して見解を聞くことができたのはとても有益だった」「内部品質が生産性に影響する、というのは実際の感覚ともマッチしており、納得感が高かった」など嬉しいコメントをもらいました。

今回、社外から有名なエンジニアの方をお招きし勉強会をすることで、現場での悩みを直接質問できたり、育成という組織課題を全員が考え直す場となり、主催者としてもとても嬉しく思います。

@t_wadaさん、メルカリにお越しいただき、本当にありがとうございました!

それでは、また明日のメルカリな日々で!

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

「Mercari Tech Conf 2018」基調講演はVRでライブ配信!? さっそく話を聞いたよ! #メルカリな日々

「HTML5とか勉強会」でエンジニア採用PRをしたよ #メルカリな日々

いよいよ明日は「Mercari Tech Conf 2018」だよ! #メルカリな日々

【帰国から2日】Google Cloud Next 2018 わいわい報告会が始まるよ #gcpja #メルカリな日々 2018/07/30

中国の大学生限定のアプリコンテストを開催したよ! #メルカリな日々

イメージは「よく話す友だち」メルカリ社内限定Podcastをご紹介 #メルカリな日々

学生エンジニア向けイベント「Mercari Engineer’s meetup for students」初開催! #メルカリな日々

カスタマイズ命!みんなのキーボードを紹介します #メルカリな日々