「もやっと」から始める、OPEN8のコード品質改善の取り組み
株式会社オープンエイト、エンジニアリンググループの小塚です。
バックエンドエンジニア兼スクラムマスターとして、働いています。
今日は、オープンエイトにおける、コード品質改善の取り組みをご紹介させて頂きます。
もし、どなたかの参考になれば幸いです!
オープンエイトについて
弊社は、2019年にVideo BRAINという動画編集サービスをリリースし、広告/メディア企業から、前記のVideo BRAINを担ぐSaaS企業へと、ピボットした経緯があります。
過去には、ピボットによる急速なサービス立ち上げや、SaaS界隈の急速な変化に適応する為に、どうしてもスピード偏重の開発に成らざるを得ない場面が多くありました。
しかし、エンジニアのシニア層が充実してきたことや、一定Video BRAINが市場に受け入れられたこともあり、QCDのバランスをとりつつ開発を進められる体制を構築することができました。
未だ試行錯誤の段階ではありますが、これまでに2種類ほど、改善の取り組みにチャレンジしており、そちらをご紹介させて頂きます。
改善の取り組み その1 (改善DAY)
弊社では、アジャイル開発手法のScrumを採用して開発を行っています。
至ってシンプルな構成で実施しており、1スプリントを2週間に設定し、Scrumの型通り、スプリント内でスプリントプランニング/スプリントレビュー/レトロスペクティブなどを実施します。
これらのイベントに加えて、改善DAYというイベントを追加しました。
改善DAYの概要
改善DAYのルールは単純で
- 丸々1日を改善に費やす為に予め確保しておき、事前に集めた改善項目の中で、各々のメンバーが自由に着手する項目を選ぶ
- 通常のバックログのStoryの着手を禁止する
- 改善したコードは、当日中にリリースまで完遂する
という3つのルールで運用します。
チームを組んで、大きな課題に着手するも良し、個人で気になる箇所の改善に取り組むもよし、各々の裁量に完全に委ねる形で、項目を消化していきます。
特筆すべきは2と3のルールです。
Storyの着手を禁止しない場合、どうしても進行中のStoryの優先度が高くなり、改善に回す余力を確保することが難しくなる為です。
また、当日中のリリースを強制したのは、仕掛かりとして作業が残ることで、実際に効果を発揮しない無駄な工数が積み上がってしまうことを懸念した為です。
営業日換算でいうと、10日(=2週間)のうちの1日なので、開発工数のうち10%を改善に費やすという意思決定をしたことになります。
改善DAYの効果と反省
実施当初は一定の効果を出していた改善DAYですが、大きな問題がいくつかありました。
一つは、項目選定の難しさです。
1日でリリースまで持っていける粒度で項目出しをしてはいるものの、当然、見積もり通り実装できる事は少なく、時間が足りないという事態が多発してしまいました。
加えて、負債の全てが1日で解消できる粒度でない事もあり、局所的な改善に留まってしまいました。
状況にもよりますが、改善したコードをテストすることなくリリースすることはできないので、QAの時間を加味すると、実際は丸一日コードの改善に取り組めないといった欠点も存在しました。
2つめは、改善というワードの強さです
上記の条件を満たす項目を見つけることが難しいのに加えて、「改善するぞ」と意気込んでしまうと、ハードルが高くなってしまい、次第に改善項目が枯渇する状況に陥ってしまいました。
改善の取り組み その2 (もやっと)
改善DAYでの反省を踏まえて、次に取り組んだのが「もやっと」駆動による改善です。
コードを書いていると、「なんでここは、こういう実装になってるんだろう?」とか「もっとこうすればよくなるのになぁ」など、もやっとする場面に出くわすことは少なくないと思います。
そうした「もやっと」を積極的に収集するslackチャンネルを開設し、実装中にもやっとした気持ちを吐き出す場所を作りました。改善するぞと肩肘張らずに、もやっとしたことをただ吐き出す形式にしたので、以前に比べて格段にハードルが下がりました。
こうした「もやっと」をStoryとしてバックログに積んでいき、スプリントプランニングで、着手するも「もやっと」を決めつつ解消していきます。
実際のもやっと
もう一つ、改善DAYと大きく違う点として、コードの品質改善に限定せず、サービスの機能やUI/UXに関する「もやっと」も対象に含めています。副次的な効果ですが、サービスを運用する事業会社のエンジニアとして、より自分たちのサービスを自分ごととして、捉え取り組むことができるようになったと感じています。
最後に
「もやっと」駆動の改善も、まだまだ運用を開始したばかりの取り組みで、完璧に機能しているとは言い難い状況ですが、以前よりは改善のサイクルが回せていると自負しています。
自分たちが自信を持って提供できてこそ、ユーザー様にも満足していただけるサービスになると、自分は思っています。
今後もより良いコードで、より良いサービスを、多くのユーザーに届けられるように、積極的に改善活動を続けていきます。
株式会社オープンエイトのテックブログです!カジュアル面談大歓迎ですー!エンジニア積極採用中 👉 open.talentio.com/r/1/c/open8/homes/3396
Discussion