プルリクオープンまでの時間が9分の1に。15名でFourKeys向上に向き合うourlyの取り組みとは?
社員のエンゲージメントを向上させるWeb社内報ツール「ourly(アワリー)」などを運営するourly株式会社では、エンジニア組織における個人の振り返りや組織の課題発見に、エンジニア組織支援クラウド「Findy Team+」を活用いただいています。
今回は、ourlyのエンジニアリングマネージャー相澤さん、エンジニアの神本さんと藤野さんにインタビュー。開発生産性の可視化への取り組みを始めた背景や、「Findy Team+」導入によって改善できたこと、取り組みを通じて変化した意識や行動などについて、お話をうかがいました。
目次
エンゲージメント領域での一番手を目指す「ourly」
――まず最初に、皆さまのこれまでの主な経歴や、現在の業務内容について教えてください。
相澤:2017年4月からエンジニアとして働き始め、最初はWeb系のベンチャー企業にバックエンドエンジニアとして入社しました。PHPから始まり、JavaやjQueryをやりつつ、3年ほど経って、ourlyの親会社にあたる株式会社ビットエーに転職しました。その後、ourly事業の立ち上げに携わり、今に至ります。現在はエンジニアリングマネージャーとバックエンドエンジニアを兼務しており、マネジメント業務とプレイヤー業務を半々で行っています。
神本:もともとは2017年に新卒でSUBARUに入り、自動車の開発をしていましたが、昨年1月からWebエンジニアとしてのキャリアをスタートしました。現在は、バックエンドエンジニアとしてRubyとRailsで開発を進めており、関心がある開発生産性の部分にも関わっています。
藤野:私は2017年に新卒でWebサイト制作の会社に入り、フロントエンドエンジニアとしてのキャリアをスタートしました。5年ほど経ち、よりユーザーに寄り添った開発がしたいという思いから、SaaSの開発に転身。昨年4月に、ourlyへ入社しました。現在はフロントエンドエンジニアとして、ReactとTypeScriptで開発しています。開発生産性に関心があり、Findyさんとのミーティングなどにも参加させていただいています。
――御社の組織規模や、開発チームの体制について教えていただけますか?
相澤:組織規模は、全体の従業員数が40名ほど。社員は20名弱で、それ以外は業務委託や学生インターンです。開発チームは15名くらいの規模で、正社員と業務委託が半々になっています。
――ourlyでは、どのようなミッションを掲げていますか?
相澤:ourlyのミッションとしては、一人ひとりの生産性を高め、企業の業績にインパクトを与えることを掲げています。その会社で働く一人ひとりが、自分がどこに向かっているのか、どんな人と一緒に働いているのかをしっかりと理解し、会社の方向性に一致団結して向かっていくことで、最終的には業績につながる。そういうツールにしたいと思っています。OKRは2027年の時点に置いており、エンゲージメント領域での一番手になることを目指しています。
チーム拡大を見据えた先手と、成長度を測る指標の設定
――開発生産性の計測への取り組みを始めた、背景やきっかけを教えてください。
相澤:目に見える問題があったというよりは、これからチームが拡大することによって起きてくるであろう問題に対して、先手を打っていきたいという考えがありました。あとは、僕たちエンジニアの成長度合いを、いかに測るかという部分ですね。
単に機能をリリースしたというだけでは、なかなか成長実感を感じにくいので、数値として見える形で成長実感が得られる指標を設けたい、といったことを代表と話していました。組織のボトルネックや健康状態を把握したいといった課題もありましたが、今後起こるであろう問題への先手と、成長度を測りたいという部分が大きかったです。
――「Findy Team+」のことは、どのようなきっかけで知っていただきましたか?
相澤:『LeanとDevOpsの科学』を読んだのが最初で、そこからいろいろと調べていくなかで、DMM.comさんの「Findy Team+」活用事例にたどり着きました。それをきっかけに「Findy Team+」のことを知り、導入を前向きに検討していきました。
――「Findy Team+」の導入前は、開発生産性の可視化に関する取り組みをされていましたか?
相澤:ほとんどしていなかったです。スクラム開発を行っているので、チームのベロシティがスプリントでどう推移するかは見ていましたが、リードタイムやデプロイ頻度などの可視化はしていませんでした。
――「Findy Team+」の導入にあたって、社内ではどのように理解を得ていきましたか?
相澤:もともと可視化への取り組みについては、代表と僕とテックリードのなかで、すでに合意が取れている状態だったので、社内で説得していくような必要は特にありませんでした。あとはHowの部分をどうするかという状況で、費用感を含めた導入前提での比較検討を進めていった形ですね。
――「Findy Team+」の導入前の課題について教えてください。
相澤:開発生産性を高めようとする中で、組織の健康状態を正確に把握することが非常に難しい課題でした。特に、ボトルネックを明確に理解することが難しく、変更のリードタイムが最近伸びてしまっているのが悩みの種でしたね。リードタイムの短縮をKPIとして設定してはいるものの、放置されたPR(プルリクエスト)が増えており、緊急性の高いタスクは迅速に対応できているものの、全体を通してプロセスが長引く傾向にありました。新機能の開発に集中し過ぎると、後回しにされたレビューが手戻りを引き起こし、初期に作成されたPRが長期間放置されるケースが発生していました。
加えて、マネージャー業務の工数削減も大きな課題でした。実装タスクだけでなく、カスタマーサポートや営業からの問い合わせ対応、セキュリティチェックシートの作成、採用プロセスやマネジメント(1on1、目標設定など)にも相当の時間を割かなければならず、これらの工数をどう削減していくかが課題となっていました。
――最終的には、「Findy Team+」のどういった部分が導入の決め手になりましたか?
相澤:僕としては、DMM.comさんの事例を読んで調べたときに、すでに「Findy Team+」でいいだろうと思っていましたが、比較材料を集めるために、例えば自前で用意したらどうなるかなどを検討しました。自前でやる場合は、直接的なコストというよりは、僕自身が動くことでさまざまな工数が取られてしまいます。そう考えると、「Findy Team+」の費用は決して安くはないのですが、高すぎることもないと感じました。
加えて、カスタマーサクセスの方によるサポートがあるうえに、さまざまな企業さんでの「Findy Team+」の導入事例から、ナレッジもたまっていそうだなと。そうすると、各社のナレッジをourlyでも取り入れたり、各社と比べてourlyがどうかという相対的な比較をしたりもしやすい。なので、ツールだけでなく、そういった付加価値も含めると、コストに見合うパフォーマンスになるだろうと考えました。
さらに、導入前に「Findy Team+」のミートアップに呼んでいただいて、導入済み企業のCTOやEMの方々のお話を聞く機会もありました。そこで他社さんの評価も聞いて、これは間違いないだろうということで、代表に話を持っていきました。
――「Findy Team+」を導入した当初、設定されていたゴールや数値目標はありましたか?
相澤:「Findy Team+」導入直後、開発チームとして追っていこうと話していたのは、ベロシティ、走攻守の割合、デプロイ頻度、リードタイムの4つの指標です。
走攻守とは、スクラムの1スプリント内でそれぞれが使った工数を、タスクごとに攻撃・守備・走塁に分けているもの。攻撃は新規価値の創出、守備は提供価値の維持、走塁はその両方に効くもので、例えば勉強会やセミナーに参加した時間などです。この走攻守で目指す割合を決めているため、指標の1つとしています。ベロシティと走攻守に関しては、「Findy Team+」ではなく、スプレッドシートなど従来のやり方で集計しています。この2つの指標は、トップラインを伸ばしていくというより、悪化しないように計測しているものですね。
「Findy Team+」で見ているのが、デプロイ頻度とリードタイム。ただ、デプロイ頻度の比重はあまり高くなく、リードタイムに一番力を入れて見ています。
- コミットからPRオープンまでの時間
- PRオープンからレビュー開始までの時間
- レビュー開始からapproveまでの時間
- approveからマージまでの時間
の4段階に分けており、もちろん全てに改善ポイントはありますが、まずはPRオープンからapproveまでの時間(真ん中2つの時間)へのテコ入れが工数少でインパクト大だと判断し、今期はその2つに注力してます。
ourlyには自動デプロイの仕組みがあり、リリースするものがあればできる状態になっています。そのなかで、デプロイ頻度を改善していこうとすると、1回でリリースできるものを無理に2回に分割するなど、数字を上げるためにハックするような行動が生まれてしまうと思ったので、デプロイ頻度はそこまで重視していません。
導入当初は200h以上かかっていたところから考えると、現在はかなり改善された数値になっていますがまだまだ改善の余地はあると感じています。
数値目標に関しては、「Findy Team+」を導入した当初、少し高めの目標を立てていたのですが、実際にやっていくなかで、自分たちがレベルアップしないと到達しない領域もあることがわかってきました。なので、今期の目標として、リードタイムはプルリクのオープンからアプルーブまでを48時間、2営業日以内を目指しています。
デプロイ頻度は、今まで週1回だったのですが、それを週2回に増やしました。ただ、毎スプリント2回ずつリリースするわけではないので、一旦1.5回を目標値としています。くわしくはアドベントカレンダー(※)に書いたので、そちらを見ていただければと思います。
改善への自主性やスキルアップへの意識の高まり
――「Findy Team+」導入後、取り組みを進めるなかで難しかったポイントはありましたか?
相澤:いろいろな情報が見られるので、どの情報をどう使って改善していくかという部分が、最初は難しかったですね。そこが僕自身あまりピンと来ておらず、使いこなせていなかったので、チームでもあまり浸透していなくて。月の利用回数を見ても、あまりみんな見てないなという状態が、1~2ヶ月くらい続いていました。
それをカスタマーサクセスの方に相談しつつ、僕も意識的に「Findy Team+」を触る時間を増やして、どの指標をどう見ると自分たちのパフォーマンスが測れるのかなどを研究しました。そして、自分のなかで見方や使い方がある程度確立してきたら、それをチームにそれを発信していきました。
あとは、1on1のなかで「Findy Team+」を一緒に見ていくとか。すると、みんなもどこを見たらいいのかといった使い方のイメージがついてきて、少しずつ使ってもらえるようになりました。なので、「Findy Team+」をどう活かしていくかというところで、軌道に乗せるまでが難しかったなと思います。
――続いて、「Findy Team+」導入後に改善できた部分を教えてください。
神本:プルリクの行数がかなり少なくなりました。プルリクのリードタイムを減らしていこうという目標に対して、それをどう改善するかの施策をメンバーみんなで考えながら進めてきたのですが、それが効いていると思います。
最初は、ただ変更行数を何行以内にするという数字を置いていたのですが、今では「この変更は別の目的を含んでいるから、別のプルリクにした方がいいよね」といった会話が生まれるようになりました。リードタイムだけでなく、仕事の分解スキルにまで及んでいるので、そこは大きく改善されたポイントだと思っています。
藤野:プルリクの量が多く、どのプルリクがどんな状態なのかわからなくなってしまうことがありました。ですが、リードタイムが長いプルリクを抽出して、何が問題なのかを洗い出して消化する、そのサイクルが早くなったと感じます。
実際、数値を分析できるようになったことで、プルリクエストの分割基準、レビューガイドライン、週次での振り返りなどを定性的に振り返ることができるようになりました。
PR分割の目安として「1PRにつき1変更意図で300行以内」に収める基準を作り、チームで共有していました。
これにより、PRレビューする際にどこを集中してレビューすべきか、変更の影響範囲がどのくらいかなどの見通しが立ちやすくなり、心理的負担が減ったことでレビュースピードがあがりました。
事前にチーム内で会話していた時は変更行数に制限を加えることに懐疑的な声もありましたが実際やってみると全員がレビューしやすくなったことを実感しているので、導入を迷っている方はまずはやってみるのが良いと思います。
我々スタートアップのようにチーム規模が小さく、特定の人にレビューが集中しやすいような状態の時にはかなり効果的な施策だと感じました。また手戻りが大きくなることを防ぐことができるので、結果的には全体的な開発スピードアップにもつながっているように感じています。
――開発生産性の可視化への取り組みを通じて、意識や行動が変化したと感じる部分はありますか?
藤野:KPIに対して、どうすればそれを達成できるのかという道筋が見やすくなりました。例えばリードタイムの目標に対して、可視化された数値を見て、自分のリードタイムが長いから減らそうと認識できる。そういう目標に対して何をすべきかという道筋が見えて、目標に対する意識が全体的に上がったように感じます。
神本:一つひとつのタスクを分解するスキルが上がったと思います。実装においてだけではなく、普段から目的が2つになっているものは別々のタスクとするなど、仕事をするうえでの意識が変わりました。
それから、仕事の優先度を考える観点も変わったと思っていて、例えばリードタイムを減らすためには、自分が実装しているプルリクだけではなく、人が実装したプルリクを見ることも必要です。今まではみんな自分の実装を優先して進めていましたが、そうではなくプロジェクトチームとして、いかにスループットを早めるかという意識に変わりました。
それを仕事に置き換えれば、誰かがボールを持っていて、進まない状態のものがあったときには、そちらに優先して取り組むべきだという考えになります。そういった形で、単純な実装だけではなく、仕事の進め方に関する観点にも変化があったと感じます。
相澤:僕の目線から、変化を感じたポイントは3つあります。まず2人が言ってくれたように、メンバー自身がそれぞれ会話をしながら、改善に取り組んでいく自主性が生まれ始めたところは、1つの大きなポイントだと思っています。
2つ目は、数字ベースで話せるようになって、会話に根拠が生まれたところ。今までは「プルリクが留まっているので、ちょっと早めに見てください」といった曖昧な会話が多かったんですね。でも、それが数値化されて、かつ目標値も置いたおかげで、「これは何時間以内にしたいので、いつまでに見てください」という、具体性を持った会話に変わってきました。
そして3つ目は、ルールを決めたことによって、小手先のテクニックで何とかできる部分と、そうでない部分が見えてきたところです。結局、個々がスキルアップして、強いエンジニアになっていくことも、チームづくりやルールづくりと同じくらい重要なんだなと。
例えば、もっとコードを読むスピードが上がればリードタイムが縮められそうだとか、もっと実装力があればプルリクが増えそうだとか、そういうことが肌感としてわかってきたんですよね。そういった自分たちのスキルアップへの意識が増したところも変化だと思います。
「Findy Team+」の活用を広げながら、次のフェーズへ
――可視化の取り組みや「Findy Team+」の活用について、今後のトライとして考えていることを教えてください。
神本:「Findy Team+」は、個人的な利用方法として、まだ比較のためにうまく使えていません。例えば、自分よりもスキルが高い人は、今どういう時間でやっているのかとか。そういった部分を見て、自身の底上げに活かす使い方をもっとしていきたいと考えています。
相澤:現状はサイクルタイムの部分しか、あまり使いこなせていない感覚があります。今はリードタイムに焦点を絞っていますが、オープンからアプルーブまで48時間という目標が達成できてきたら、その前後の工程にも徐々に広げながら活動していきたいと思っています。
開発生産性のフェーズとして、開発チーム内で評価できるレベル1の生産性があり、レベル2やレベル3でアウトカムや事業インパクトまで追うという話があります。今はレベル1の生産性をしっかりと高めて、次のレベル2やレベル3のフェーズに行きたいなと。そういったところで「Findy Team+」を活用しながら、カスタマーサクセスの方と二人三脚で伸ばしていけることを期待しています。
――それでは最後に、御社の組織のアピールポイントや、一緒に働きたいエンジニア像を教えてください。
神本:組織のアピールポイントは、自主性を重んじているところですね。何かに取り組むときに、上からの指示をもとに動くというより、自分たちで自主的に施策を考え、ディスカッションしながら、より良くしていくカルチャーがあります。なので、積極的に意見を出して、自らどんどん改善に向けて動いていきたい方に、すごく向いている組織だと感じます。
藤野:組織のアピールポイントは、ただ実装するだけではなく、チーム単位で良くしていくことを楽しめるところ。自分ひとりが成長するだけではなく、組織にそれを還元していくことで、チームとして働いているという実感を持てるところが気に入っています。組織やチームの改善に楽しみながら取り組める方と、一緒に働けるといいなと思います。
相澤:組織としては、スタートアップ2期目で従業員も40人と小さな規模なので、潤沢なリソースがあるわけではなく、ないものも多いなかで工夫しながらやっている状況です。なので、何もないところから自分たちでつくり上げていく実績が欲しい人や、荒削りでも獣道を切り拓いていくようなところにチャレンジしたい人に魅力的な環境だと思います。
さらに、変化に寛容な組織なので、変えていきたいと思うものがあれば、発信や意志次第で改善していける環境があります。だからこそ、自身の意志がとても重要なので、まわりの指示を待つ姿勢の人にとってはつらい環境かもしれません。明確に自分の意志がある人にとっては、かなりやりやすい環境ですし、僕としてもそういう人とぜひ一緒に働きたいと思っています。
――皆さん、本日はありがとうございました!
※エンゲージメント領域で1番手を目指すourly(アワリー)では、エンジニアを募集しています。
※「Findy Team+」のサービス詳細は、以下よりご覧いただけます。 https://findy-team.io/service_introduction