こんにちは、freee株式会社でエンジニアをやっている id:ymrl です。きょうは freee Developers Advent Calendar 2017 の1日目として、大きくなり始めたチームで開発ナレッジ共有のためにやりはじめたことについて書いてみます。
Advent Calendar とは
Advent Calendar とは、もともとは12月25日のクリスマスの日を楽しみに待つためのカレンダーです。カレンダーは1日ごとにお菓子の入った扉がついていて、1日にひとつずつそれを楽しみながら開けていく……という感じのものです。
プログラミング関係のブログなどではこれになぞらえて、12月1日から1日ずつ記事を公開していくという風習があります。freeeでも2015年、2016年とAdvent Calendarを公開してきました。今年ももちろん12月25日まで毎日、バラエティ豊かなメンバーで記事を公開していきます。お楽しみに。
チームもサービスも大きくなった
ここからが本題です。私は 人事労務 freee の開発をするチームにいるんですが、このサービスは2017年に大きな変化を遂げました。 サービス名は「給与計算freee」から「人事労務 freee 」に変わり、それにあわせてロゴやUIが緑色になり、タイムレコーダー機能や入退社時の書類作成機能をはじめとした様々な機能をリリースしました。 サービスのリニューアルがあり、機能が増え、そしてありがたいことに数多くのお客様に導入していただけた1年でした。
そんな中でチームの人数も増え、アプリケーション開発エンジニアは1年で3倍近くなり、そこにデザイナーやQAやマネージャーを加えると、このサービスに関わっている開発者だけでも、かなりの大所帯となりました。
そもそも扱っているものが難しい
freeeのプロダクト開発の全体に共通して難しいところに 「ドメイン知識の習得が難しい」 というものがあって、人事労務 freee も例外ではありません。日本にはたくさんの人事労務に関係する法律や官庁の命令があって、それらを運用する役所や年金機構や健康保険組合があって、それらを使ってたくさんの会社でさまざまなかたちで人事労務の制度が運用されています。
おかげで開発のときはいつも、官庁や年金機構のWebサイトやパンフレット、業務のやり方を解説した書籍、そして法律の条文などをひたすら読み、わからないところは社内の実務経験者や社労士さん・税理士さんに質問するなどのインプット作業が必要になります。条件の組み合わせによって扱いが変わりそうなところや、場合によってはかなり例外的なパターンまで網羅して調べる必要がある点は、ひょっとしたら普通の会社の人事労務担当として必要になるものよりも量が多くて大変かもしれません。
メンバーが増えたら大変になってきた
そんなサービスの開発をやっているので、チームに新しく入ったメンバーは、どういう機能が、どこにどう実装されているということのキャッチアップが大変になってしまっていました。少ない人数で小さなサービスを開発していた頃であれば、サービス全体をざっくり理解するのにかかる時間は短く済んだし、もともといたメンバーは誰がどこに詳しいというのをだいたいわかっていたので、細かな話であれば直接聞けば解決するという状態でした。
しかし、人事労務freeeが扱う業務の範囲が広くなり、機能の充実度も高くなり、開発者の人数も増えてくるとそう思い通りにはいかなくなってきました。サービスの全体像は見えにくくなってきているし、人数も増えて色々なプロジェクトが同時進行しているので、元からいたメンバーでも誰がいま何をやっているのか・以前は何をやっていたのかを把握するのも大変です。
そんな状態になってくると、新しいメンバーがなかなかキャッチアップしていけないだけでなく、元々いるメンバーもそのフォローをし続けなければならなくなります。チームの規模もサービスの規模も変わった以上、チーム自体のやり方も 新しいメンバーが早くキャッチアップでき、自律的に動けるようになる ための工夫が必要だなと強く感じるようになりました。
ナレッジ共有の場をつくってみる
しかしナレッジ共有が必要そうという問題意識は持ってみたものの、最初は新しいメンバーに何が必要なのかもよくわからないという状態でした。そんなとき、たまたま「ペアプロやモブプロをやりたい」という話を入社して間もないメンバーから聞いて、定期的にそういう場を作ってみることにしました。
人事労務 freee 開発チームでは2週に1度「Hack Day」として自由に開発していい日というのを決めているのですが、その日の付随イベントとして、オフィスのセミナールームに有志で1時間ほど集まって、そこで誰かのデスクトップをスクリーンに映して、実際に作業しているところをみんなで見るということをしています。さらに、Workplace(企業内コミュニケーション用Facebook)に映像をライブ配信をして、その場に来られないメンバーが中継を見たり、あとから見返すことができるようにもしています。
これまでにこんなことをしてきました。
- バグを1時間で修正する
- 改善要望として上がっていたアイデアを1時間でPull Requestにする
- 1時間で初見のコードの問題点を見つけてリファクタリングする
やってみるまではコーディングのノウハウ共有にとどまってしまうかもしれないと思っていました。しかし、みんなでコードを眺めながら話をしていくことで、予想以上にいろいろなことが学べる会となりました。
- 改善要望の背景として、お客様が現状の製品の上でどういう問題を抱えているのか
- 法制度を調べるとき、官庁のWebページをどうググると効率が良いのか
- エディタやシェルのかっこいい使い方
ちなみにこのイベントは、いつのまにか私の名前をとって「ymrl塾」という名前になっていました。もうちょっといい感じの名前にしたいです。
Scrapbox の活用
もうひとつ始めてみたこととして、Scrapboxを活用するというのもあります。ScrapboxはシンプルなWikiシステムで、非常に手軽に編集ができ、ページ間のリンクが一覧表示される特徴があります。
実は人事労務freeeのチームだけでなく、これまでいろいろな場所で「情報がストックされている場所がほしい」という議論をしてきていて、そのたびに体系立てた情報の整理をしようとして、メンテナンスがうまくいかなくて、更新されない情報だけが残っているということを経験してきました。
Scrapboxの特性は体系立てて情報を整理するというより、バラバラにページを作って、それを相互に結びつけていく……という使い方に向いています。とにかくあらゆるキーワードでページを作っていけば、何か知りたいキーワードのページを見れば関連する情報がどんどん出てくるという状態を作れるはずです。そのために、いまは思いついたキーワードのページをどんどん作っていくという活動をしています。
この試みはまだ始めたばかりですが、このまま続けていって上手くいきそうであれば他のチームにも輸出していけるのではと思っています。
おわりに
この記事では、人事労務 freee 開発チームが直面したナレッジ共有の問題と、その解決のためにやり始めたことの紹介をしました。これからもいろいろな方法で工夫して、新しいメンバーがすぐに活躍していけるチームにしていきたいと思っています。
そんな私たちですが、エンジニアを募集しています。来年には大阪の開発チームも立ち上がり、東京と大阪の2拠点で開発をしていく予定です。興味のある方はぜひ、よろしくお願いします。
あしたは抜群の安定感と効率化への強いこだわりをもつ、テックサポートのsatoshikisさんです。お楽しみに。