新メンバーと一緒にプロダクトを作っていくためのプロダクトの考古学

こんにちは、M&Aクラウドの塚原(@AkitoTsukahara)です。先日5月のPHP勉強会にて「オンボーディングのために私はプロダクト考古学者になりました!」というテーマでLTさせていただきました。LTという枠の都合上テンポ重視でまとめた資料になっていたため、今回は読みさやすさを意識して記事形式でリライトさせていただきました。皆さんのチームのオンボーディング活動の参考になれたら幸いです。

プロダクトの考古学とは?

「プロダクトの考古学」というキーワードはM&Aクラウドが考えた造語になります。弊社では以下の定義でこのキーワードを活用しています。

  • リリースからしばらくして安定稼働しているアプリケーションがどのように実装されてきたのか?現在の形になった経緯をまとめる取り組み
  • プロダクト・アーキテクチャの成長過程を知ることで、設計思想を知る・理解する機会を作ること

プロダクトの歴史を紐解くような取り組みは皆さんの現場でも実施されていると思います。その取り組みに近いものだと捉えていただければ、大丈夫です。

プロダクトの考古学とは

この取り組みで達成したいことは?

1番達成したいことは新しく入社してくれたメンバーのサポートいわゆるオンボーディングになります。M&Aクラウドのプロダクトはリリースから5年以上経過しています。その間にNuxt.jsの採用、新規プラットフォームの立ち上げなど上げ出したらキリがないくらいにいくつもの変遷がありました。その変化に比例するようにファイル数、コード行数はかなり膨大なものになっています。

そのため、新メンバーはチームに合流してから暫くの期間はプロダクトのコードを理解することに多くのリソースを割く必要があります。LTで以下のスライドを紹介したのですが、皆さんの現場でも似たようなシチュエーションはあるのではないでしょうか?

期待するメンターと遠慮する新メンバー

ここで「プロダクトの考古学」が役に立つのです。 なぜ現在の形のプロダクトになっているのか知らなければ、どのように実装すべきか判断するのは困難です。ましてやリファクタリングや改善提案するのはもっと難しいですよね。実装や提案できるまでのハードルを越える努力を個人に丸投げしないでチームの共通課題にして、取り組んでいくことが考古学の大事なことだと考えています。

せっかく入社してくれたメンバーにはチームのみんなが「新メンバーが存分に活躍できるようにサポートしたい」、そして「チームで協力してプロダクトを育てられる職場で働きたい」と考えています。プロダクトの考古学の取り組みはその想いを形にする取り組みとも言えます。

M&Aクラウドでの取り組み

では、具体的にM&Aクラウドではどのような取り組みが行われているのかご紹介させていただきます。

取り組みのゴールは新メンバーが「思想を理解できる」と言える状態になることを目指しています。何をもってして思想理解になるのかは明確な線引きが難しいですが、私たちのチームでは主に2つのイベント「社内LT」、「査読会」を経由して、新メンバーの理解を促しています。

毎週30分の社内LTを開催

M&Aクラウドでは毎週水曜日がオフラインでの出社日になっており、その日はエンジニアメンバーが顔を合わせて、気になった設計を共有する機会を設けています。現在は2名の推進メンバーでアーキテクチャ研究会を結成し、交代制でLTを行なっています。LT自体は5分そこそこで終わらせて、残り時間はLTのテーマやLTスピーカーの問いかけにチームで語り合う時間にしています。

古参メンバーはプロダクトの歴史を語ってもらい、新メンバーはLTのテーマについて不明点を掘り下げてもらうようにしています。LTスピーカーはその場のファシリテーションを兼ねているので、LT後のディスカッションが盛り上がるようにメンバーに問いかけていきます。

新メンバーがいきなりディスカッションに参加できるのか疑問に感じている方もいらっしゃると思いますが、冒頭のLTでディスカッションに必要な基本知識を伝えるようにしているため、話についていけない状態を無くす工夫しています。また、LTを聴いても分からなかったのであれば、後半のディスカッションでヒアリングして、新メンバーを含めたチーム全体が理解できるように深掘りし、解説を加えていきます。

社内LTの風景

いざディスカッションを始めてみると毎回時間が足りなくなる位に話題が尽きません。みんな現在の仕様や設計について語りたいことがたくさんあるようで、チームでプロダクトについて語り合う場は必要だなと感じています。 会の終わりには毎回アンケートを実施して、気になったことや話しきれなかったことをヒアリングし、次回以降の改善に繋げています。

オンボーディング資料として有用か?メンバーによる査読会

社内LTに参加できている新メンバーは会に参加するだけでプロダクトの理解が深まっていきますが、これから入社してくるメンバーはLT資料を見るだけではきっと理解できません。もちろん議事録は残していますが、その場にいるメンバーの理解度に合わせた進行なので議事録だけでは不十分です。

そのため、社内LTで取り上げたテーマは、新メンバーのオンボーディング資料として活用できるように社内記事化に取り組んでいます。LTに参加していないくても理解できるように、テーマについて解説がされており、想定Q&Aも用意しています。この資料はメンバーに読んでもらい、「オンボーディング資料で利用できる!」と評価もらうところまでが、査読会の取り組みになっています。

またこの記事は現時点のプロダクト仕様をまとめたものなので、いずれは実際の実装から乖離して陳腐化していきます。それを防ぐために一度取り上げたテーマを3ヶ月に一度ダイジェストでふりかえりLTを実施します。ふりかえりの中で資料と実装の乖離があるものは都度資料を更新していきます。

Exception設計をまとめた資料。目次はこんな感じ

これまでに取り上げた考古学を一部紹介

プロダクト考古学で取り上げるテーマは新メンバーがOJT中に疑問に感じた点や既存メンバーから見て迷いそうだなと思うところから優先して取り上げています。 では、どのようなテーマを取り上げているのか一部紹介させていただきます。

この実装なら、このテスト!

このテーマは新メンバーが機能実装に対して、どのようなテストを実装するべきか判断に迷ったり、新旧混じったテストファイルの中で何が新しくて推奨されいる実装なのか、何が古くて参考にならない実装なのか、迷わないようにするために取り上げたテーマです。

LTの冒頭では、M&Aクラウドで採用しているテストの種類を紹介し、どのような経緯で現在のテスト構成になったのか説明しています。

DbIntegrationテストが導入された経緯

ディスカッションの時間ではメンバーがテストを書くときに意識していることをホワイトボードツール(Miro)で可視化して、疑問点や考え方を掘り下げていきました。そして機能実装するときに、迷いなくテスト実装するにはどうしたらいいのか、意見を出し合いました。このテーマを深掘りしたものはいずれ別の記事で紹介できればと思います。

ホワイトボードでチームの考えを可視化

まとめ

M&Aクラウドの「プロダクトの考古学」の取り組みはいかがだったでしょうか? 新メンバーが活躍できるようにサポートすることをチームの課題として受け取り、取り組んでいく1つの仕組みとして、皆さんの現場でも「プロダクトの考古学」が役に立てたら幸いです。

絶賛採用中!

M&Aクラウドでは一緒にプロダクト開発してくれるメンバーを募集しています! 気になる方はぜひご連絡ください!Twitter DMでもOKです!

sg.wantedly.com