開発生産性向上の取り組みについて

id:eitoball です。

この記事は、Misoca Advent Calendar 2017 の記事として書いています。

昨日、NGK2017B 昼の部 で「開発生産性向上の取り組みについて」という内容のLTをしてきました。今回は、LTで話したことについて書いていきます。

開発生産性向上の取り組みとは?

いきなりですが、

If I had 8 hours to chop down a tree, I would spend 6 of those hours sharpening my axe. (もし8時間、木を切る時間を与えられたら、そのうち6時間を私は斧を研ぐのに使うだろう。)

という言葉をご存じでしょうか?第16代アメリカ合衆国大統領エイブラハム・リンカーンが残したと伝えられている名言の1つです。

斧で木を切る際、斧の刃をしっかり研いでよく切れるようにすると早く効率よく木を切ることができるようになりますね。物事に取りかかる際には、しっかり準備をして取りくむと生産性が上がるという意味です。

Misoca では、開発生産性を向上させる、もしくは、停滞させないようにいろいろな取り組みをしてます。具体例としては、

という取り組みをしています。以下の技術ブログの記事はこの取り組みの成果になります。

継続的な向上

Misoca では、以前から有志がJenkinsとrrrspecと私に書かれているような CI 環境のビルド時間を短縮するなど生産性の向上に単発的に取り組んでいました。木を切り続けていると鋭かった斧の歯はだんだん鈍ってしまうように、開発チームの規模が大きくなるに従い実行するテストの数が多くなっていき、早かった CI 環境はだんだんと遅くなり、不満が上がるようになりました。

そのため、2017年5月頃より、生産性向上の取り組みを機能開発と同じようにプロジェクトとして、期間と人数を決めて、継続的に実施するようになりました。プロジェクトなので、最初に インセプションデッキ を書いて、事後検証をして終了します。

開発生産性向上のプロジェクトでは、基本的に期間を優先しています。2週間と決めたら成果が出る・出ないに関わらず、終了します。成果の出すのが難しいテーマの場合は、期間に合ったスコープ(ゴール)を決めながら、段階的に進めていきます。 CI のビルド時間の短縮の場合、

といった取り組みを行っていき、20分以上だったビルド時間を約5分程度まで短縮しました。

まとめ

物事を効率的に進めるには、事前準備と継続的な取り組みが必要です。Misoca では、開発生産性向上を機能開発と同様に扱って実施しています。

明日は、 merotan こと @renyamizuno_が「すごーい」何か書いてくれるそうです。楽しみです。