SmartHRの基本機能と呼ばれるプロダクトでエンジニアリングマネージャーをしている @sugamasao (id:seiunsky) です。
この文章はSmartHR Advent Calendar 2022の2日目のエントリーとして書いています。
はじめに、いくつか前提となる状態をお伝えすると、私の所属している「基本機能」プロダクトはScrumを拡張したLeSSというフレームワークを使っており、現在は6チームで1つのプロダクトを開発しています。
さらに、私は今はエンジニアリングマネージャーという立場にいますが、少し前まではこの6チームのうちの1チームに所属するメンバーでした。そのため、これ以降に記載している取り組みは私がチームに所属していた時にはじめたものという認識をしていただけますと幸いです。
テックな話題 #とは
リモートワーク主体で仕事をしていると意識的に雑談によるコミュニケーションをとるシーンはしばしばあるのですが、シンプルに技術的な話題に関する雑談となるとなかなか話をするタイミングが取りにくいと感じることがあります。
たとえば、最近話題になった技術や便利ツールの話であったり、コード上の良し悪しであったり実はコード上で心配していることがあったり、などです。
個人的には、こういうことを話す場がチーム内にあると良いと思っていたのですが、時間を作るならちゃんと設計・言語化しないとな〜〜と考えたまま、うまくまとめられずにしばらく寝かせていました。
そんな気持ちを抱えながら数ヶ月経ったとき、Hatena Engineer Seminar #19 カクヨム編というイベントでid:onkさんが発表されていたグルーミングしながら進めるプロダクト開発という資料を見ました。
この資料をみて、やりたいこと・考えていることがハチャメチャに言語化されている!!と一人興奮し、改めて自分のチームで導入できるように言語化や会の設計に取り組んだのでした……。
テックな話題を話す場 #とは
というわけで自分のチームへ導入するにあたり、以下のような場を設計しました。
具体的には、以下の1.〜3.までのアジェンダを書き込んだドキュメントを用意しておいて、話したいトピックがあれば自由に書いてもらう形です。何もなければその場の雰囲気で話していきます。
- 開催頻度
- 1週間に1度、30分
- 会の内容
- 1週間の中で自分のプロダクトにマージされたPRをいくつか見る
- 他チームが開発している機能、コードを眺めてプロダクトに対する脳内マップを育てる
- コメントが盛り上がっているPRを見てどういう観点でのやり取りがなされているか眺める
- 開発していて目にした、良いなと思ったコードや直したいなと思ったコードの共有
- ガチの雑談
- 最近気になった技術ネタや便利ツールの紹介など
- 1週間の中で自分のプロダクトにマージされたPRをいくつか見る
自分の所属するチームのエンジニア(5〜6名)を中心に、たまに他のチームのエンジニアが遊びに来るような感じで毎週開催しています。
実際にやってみると、事前に書き込むトピックが無いようなときでも結構盛り上がって、特定のPRを眺めるのに夢中になってしまったり、「ここのロジック長くて気になるんですよね〜〜」という気持ちがとっさに出てきたりして楽しくやれています。
開催していく中で、どんな雑談があったかいくつか抜粋してみると……(議事録のスクショを取ろうと思ったのですが、業務のことなども混じっていてピュアに出せなさそうなので適当に抜粋しました!)
- explainの見かた、雰囲気で見ていたのでみんなで見かたのおさらいしましょう
- ActiveRecordパターンとRailsのActiveRecordの違い
PoEAA
を積ん読している勢の気持ちがひとつになった
- Rubyのソースコード見てみよう
- 最近読んだ本を教えて?
などなど。
話題は事前に準備することもあればその場の思いつきで広がる場合もあり、そこまでキッチリ準備するような感じではなく、ゆるふわな感じで会を続けられています。
会を重ねることで変わったこと
約半年この会を続けていて変わってきたこともあります。
良いコードや直したいコードの共有は漫然とやっても「そうだね」で終わりがちという問題があったため、少し形を変えました。
具体的にどう変えたか?というと、「リファクタリングをする」と紐付けて考えるようにしました。
開発者であれば誰しも、「このコード直したいなあ、いやーでも、直すほどでもないか……」と思いを巡らすようなコードを抱えていたりします。たとえば「直し方がわからないけど直したい!」であるとか、「リファクタするイメージはあるけど独りよがりの修正になっていないだろうか」とか、「このコメント、間違ってるけどコードが頭に入ってれば困らないしまあ良いか……」だったり。
そのようなチョット気になるけど直せていないものをこの会の相談事として持ち込み、修正案のイメージをすり合わせたり、修正するとしたらもっと大きな視点でリファクタリングする必要があるかも〜といった認識を揃えたりするようにしました。
また、上記の相談と合わせて、心のバックログに貯めているもの、開発中に気になったものをスプレッドシートに貯めておき、「貯める」->「相談する」のサイクルを回せるようにしました*1。
さらに、チーム内でローテーションを作り、その担当にあたった人は上記のスプレッドシート*2から直せそうなところをピックアップし、実際に修正する*3、までを会の一連の作業とするようにしました。
スプレッドシートでの管理は対応状況などもわかるようにしているのですが、一覧にすると積み重ねが目に見える成果として実感できたのは良い誤算でした。
やってみて
私が当初考えていた「テックな雑談をする場が欲しい!」ということは達成できて、チームメンバーとのテックな話題での交流もなかなか得難いものだなと感じています。
また、日常的にリファクタリングする?しない?などの具体的な話をすることで、コードに対して「話すネタになるかも」といった観点が生まれることやリファクタリング案を話し合うことで他の人の設計思想が見えたり知らない概念を教えてもらったりすることができて、とても満足しています。
とはいえ、企画した本人が満足しているだけでは公平性に欠けるので、一緒に参加しているチームのみなさんからもコメントを頂いたので引用します。
「なんでわざわざそんな場を……なんて思う方もいらっしゃるかもしれませんが、リモート作業が当たり前になった今、雑談をするという行為がとても少なくなりました。この会で雑談をしながらざっくばらんに話しができるのはとても楽しいです」
「複数人でPRを見る、というだけでもいろんな視点の意見が出てくるため、知見が溜まってよかった」
「特定の機能開発に集中していると他のコード全然見れていないので、知見も溜まるし、気分転換にもなるのでよかったです」
「入社から間もない立場ですが、担当するドメイン以外のコードを読む機会が定期的にあるのはキャッチアップの面でも助かっています」
より具体的にどういった活動をしていたか知りたいと思った方!ぜひ以下のサイトからエントリーお待ちしております!😉