/note/tech

『2時間スプリント』とフルリモートワークなシステム開発

要約:

■ 1. 2時間スプリントの概要

  • 2時間スプリント:
    • 1〜2週間で区切ることが多いスプリントの期間を2時間にする手法
    • デンキヤギで定着してきた開発の進め方
  • 起源:
    • スプリントを超短期サイクルにする発想は47機関の人たちがオリジナル
    • 2018年に47機関のチームで1時間スプリントを体験し、デンキヤギに導入した
    • 本家はのちに15分スプリントへ移行したが、デンキヤギは実態に合わせて2時間に落ち着いた
  • 期間の長さ:
    • 1時間、2時間、15分のどれにするかはチームの状況や練度で異なる
    • 一般的な常識よりも超短期にすることが重要な要素の一つ

■ 2. 超短期間スプリントのメリット

  • 導入を検討すべきチーム:
    • 成果報告の時点で未完了や不要な作業、相談の遅れが発覚した経験があるチーム
  • 本質:
    • 時間経過をトリガーにして、他動的かつ適切な方法でチーム内の情報を同期する
    • 高頻度に計画を見直す
  • 報連相の属人性:
    • 報連相を各自の判断に任せると、強い属人性が生じる
    • 結果として、適切に動ける人と破滅する人に分かれる
  • 破滅する人がいる場合の悪影響:
    • チーム全体の生産性が下がる
    • 当人の人事評価も自己評価も下がる
  • 破滅しない人の場合:
    • 忙しくなると報告が滞りがちになり、チームの生産性を下げる要因になる
  • ムダ取り:
    • 情報共有から属人性を排除すれば、作業ロスを減らせる
    • トヨタ生産方式の『ムダ取り』を作業プロセスに適用する考え方

■ 3. 超短期間スプリントとリモートワーク

  • リモートワーク専用ではない:
    • 全員がオフィス勤務でも非常によく機能する
    • オリジナルの1時間スプリントを体験した際もほぼ全員がオフィス勤務だった
  • 同じやり方で両対応:
    • オフィス勤務でもリモートワークでも、やり方を変えずに対応できる
    • リモートワークが必須でなくなっても、やり方を変える必要はない
  • デンキヤギの生産性:
    • 2時間スプリントの習熟度が上がり、フルリモート化以前よりも生産性が上がっている
  • リモートワークで生産性が落ちる原因:
    • 対話のきっかけが減り、属人的な情報共有能力への依存が顕在化しただけ
    • 超短期間スプリントはこの属人性をなくすため、生産性に影響しない
  • オフィス勤務の優位点:
    • ペアプロやモブプロ、付箋による情報ラジエーターなど、空間的な制約がリモートにはある
    • 一方で、通勤による時間と体力の消耗は過小評価されている
  • 実感としての生産性の差:
    • フルリモートでもオフィス勤務でも生産性はほぼ同じ
    • 差があってもオフィス勤務が1〜2%有利になる程度

■ 4. チーム構成と業務内容

  • チーム構成:
    • terurou(役員)1人、時短正社員(6時間勤務)1人
    • 学生アルバイト4人
    • フリーランス1人
  • 学生アルバイトの勤務:
    • 週2〜3日、14時〜19時の間で2〜5時間程度稼働する
    • 学業や私用による突発休みを認めているため、勤務日と勤務時間はかなり不定
  • フリーランスの関わり:
    • 週8時間程度で時間帯を決めずに勤務する
    • スプリントには参加せず、学生アルバイトの作業を技術面や管理面で支援している
  • 勤務時間のばらつき:
    • 始業と終業の時間にばらつきがあり、全員がそろう日はほとんどない
  • 業務内容:
    • 自社サービス(yagisan)の開発がメイン
    • 内製ツール開発、OSSへのPR、受託の技術コンサルティング、サブスクリプション契約の開発も並行する
    • 常時3〜5プロジェクトが動いている
  • terurouの役割:
    • コードを書くほか、PMやPO的なロールも担う
    • 代表取締役的な業務や営業対応もある
  • 管理面:
    • 何も考えずに進めれば管理面が破綻しそうな体制だが、実際には問題なく回っている

■ 5. 1日のタイムライン

  • 始業:
    • 各自が任意の時間に始業する
  • スプリントレビュー&プランニング:
    • 11:00、14:30、16:30に実施する
  • 昼休憩:
    • 時間は各自でばらばら
    • 14時ごろからアルバイトが始業し始める
  • KPT:
    • 17:00に実施する
    • レトロスペクティブというより雑談の場
  • 終業:
    • 各自が任意の時間に終業する

■ 6. 計画の階層

  • プロダクトバックログ:
    • 作業リストをためる場所
    • Azure DevOpsをメインに使い、開発対象によってGitHubも併用する
    • 超短期間スプリント固有の要素はない
  • 担当者レベルのプランニング:
    • 作業の着手時や割り当て時に、各担当者が作業をタスクレベルに細分化する
    • タスクの最小粒度は5分で、30分以下を推奨値とする
    • かなり細かくタスクを分割することが重要なポイント
  • タスク粒度の例:
    • GitHubにprivateリポジトリを立てる(5分)、クラスの命名を考える(15分)
    • バリデーションを実装する(20分)、ダミーレスポンスを返せるようにする(10分)
    • 公式ドキュメントのGetting Startedを読む(20分)、インストールして起動する(30分)
  • 細分化の方針:
    • XXXを実装する、設計するといった粒度で止めず、さらに細かく切る
    • 細分化しづらいタスクは無理に分けず、大きな粒度のまま残す
    • 細分化によって、時間がかかりそうな箇所を着手前に可視化する
  • ウィークリープランニングとマイルストーン:
    • 月曜11時のスプリントレビュー&プランニングで、1週間の大まかな作業を決める
    • 超短期間スプリントは超短期計画にすぎず、全体の方向性は決められない
    • マイルストーンや週次計画は別途考え、一般的なスプリントのプランニングと大差はない
  • デイリープランニング:
    • 実施していない
    • 11時や14:30に全員がそろわないため、朝会や昼会での計画は稼働実態に合わない
    • 1日に何度もプランニングするため、どこかで参加すれば最新状況に追いつける

■ 7. 2時間スプリントレビュー&プランニング

  • 目的:
    • 前スプリントまでの作業成果を共有する
    • 次スプリントの作業計画を補正する
  • テンプレートの利用:
    • 全員が参加し、テンプレートに沿って各自が話す
    • テンプレートを使う発想も47機関から取り入れた
    • 紙に印刷し、スプリントレビュー中に視界に入るようにしておくことを推奨する
  • 計画の補正:
    • 担当者レベルで細分化したタスク単位で会話する
    • 計画に違和感がある場合や課題がある場合は、チーム全体で対応策を検討する
  • 補正が入る場面の例:
    • 半日かかる見込みの作業が、経験者の情報を足掛かりにすれば30分で終わりそう
    • 30分で終わる見込みでも、周囲から見て明らかに見積もりが甘い
    • 実装が想定以上に難しく、助けが必要になった
    • 要求仕様がよくわからず悩んでいた
  • 成果デモの実施:
    • 完成前に方向性を確認してもらうことを、2時間ごとにワークフローとして強制する
    • 作りきった後に方向性の誤りや過剰品質、品質不足が判明する不幸を防ぐ
  • 生産性向上の仕組み:
    • 超短時間でスプリントレビューを行い、ムダを早期に検出して対処する
    • リモートワークのコミュニケーション不足による生産性低下を、属人性に頼らず仕組みで防ぐ

■ 8. スプリント期間の決め方

  • 47機関との違い:
    • スプリントをどこまで短くするかは、47機関とデンキヤギで考え方が大きく異なる点
  • PMとしての仕事感覚:
    • 半日分の工数を失っても、他に得るものがあれば仕方ないと考えられる
    • 1日まるごと無駄にされるのは許容しがたい
    • 2時間程度なら許容でき、眠気で30分ほど意識が朦朧とすることもある
    • 1時間間隔のチェックポイントはせわしなく、逆にストレスが溜まる
  • 結論:
    • 上記の感覚から2時間に落ち着いた

■ 9. KPT

  • 位置づけ:
    • スクラムのレトロスペクティブに相当するものをKPT形式で行う
    • 社員間の雑談の機会を優先し、業務に関係ない話題も認めている
  • 参加者を社員に限定する理由:
    • アルバイトは稼働時間が短く、打ち合わせ時間の割合が大きくなりすぎる
    • 他プロジェクトの話題が出るため、アルバイトに不要なNDA的リスクを負わせたくない
  • 今後:
    • この匙加減が正解とは考えておらず、変わる可能性がある

■ 10. 細かなテクニックと適用条件

  • 時報:
    • スクラムイベントの時間に気づかないことがあるため、少し前に時報を鳴らす
    • フルリモート化以前はチャイム、以後はチャットへの通知で行う
  • 時報の効果:
    • 超短期間スプリントを導入しなくても、時報を鳴らすこと自体に効果がある
    • 時間の経過がプッシュされ、仕事のリズムを作るフックポイントになる
  • 適用できないチーム:
    • メンバーの働く時間帯がまったく重ならない場合は適用できない

■ 11. 導入に向けて

  • アジャイルコーチ:
    • 興味があるチームはid:kyon_mmにアジャイルコーチを依頼するとよい
    • デンキヤギが高精度に導入できたのは、オリジナルを実際に体験できたことが大きい
  • 手軽な始め方:
    • 時報を導入し、鳴ったら強制的にチーム全体で話すところから始めてもよい
    • 報告テンプレートを適宜改変して使うと、なおよい
  • 報連相文化の撤廃:
    • 属人性の塊である報連相の文化をなくすべき