More than 1 year has passed since last update.

概要

コデアルで今やっている開発方法をまとめてみた。今後、いろいろあったりしてやり方を変更するとは思うが、今のところは、この方法で順調に仕事が回っている。

組織の背景

  • Ruby on Rails + AngualrJSアプリ
  • 今年の夏くらいから開発スタート
  • プロダクトオーナー = 社長
  • スクラムマスター(兼メインプログラマー) = 私です
  • 業務担当者 = 社長 + 3人くらい
  • プログラマー3人 (自分含む)
  • リモート参加者有り
  • 土日コミット者あり

どうやっているの?

以下を絶え間なく続ける。

プランニング-1 (日々)

  • 日々の業務などからざっくばらんな要望・変更点、新機能の方向性などをみんなから出してもらう。
  • プロダクトオーナー中心に、それぞれの案件について質問するなどして何がやりたいのか、どういう要件で、誰のためのものなのかを具体的に洗い出し、タスク化する。このタスクは Asana で管理している。時に、業務担当者にも混ざってもらっている。この議論に1日1〜3時間はかけていて、ここで「やらない」となるものが結構出る。
  • やる、となったものについて、完成イメージなどをストーリーボード、ワイヤーフレーム、モックなどで明らかにしていく。

プランニング-2 (2週間に一度)

  • プログラマー全員でタスクを確認していく。プランニングポーカーを使いベロシティーを出す。リモート参加者もいるので、GoogleHangoutとplanningporker.com を使う。
  • 多すぎず、少なすぎない範囲を1スプリント分にやるということで決定する
  • 1スプリント = 13日 (営業日ではない) とする。
  • 13日はマヤ暦のウェイブスペルと一致するようになっている。
  • 実際にやる範囲が決まったタスクを、GitHubのIssueにする。リポジトリがモジュールごとに分割されているので、それぞれの場所で発行する。

開発の日々

  • 完了の定義は本番リリース + リリース後の確認
    • 本番リリースも自動化しているので、マージするだけでデプロイすることができる。従って、リリース用のスプリントなどは設けていない。
  • いわゆる Daily Stand-up (朝礼) はリモート・土日コミット者がいるためできない
  • 作業時は、Slackの今やっていることを報告するチャネルに報告してもらうことにしている。困ったことがあったらここでビデオ会議したりも有り。今のところ、Google Hangout を使っている。
  • 進捗などをホワイトボードでまとめて報告する。
    • リモートもいるので Qiita Team に、日ごとに更新してアップしている。
    • 今後の流れなどは、1スプリント中のイベントなどはおめめどうの巻物カレンダーで作ったイベント表で確認できる。(写真上部) 1スプリント外の情報は見えないので、その範囲に集中できて良い。(こちらの製品は自閉症支援のためにつくられたものだが、決まった範囲を示すのに使いやすいカレンダーとなっている)
    • バーンダウンチャート(写真中部)は赤線は完了線、青色はステージング環境まで完了している線。この2つの線に大きな差分がある場合は、大体何か問題が起きていることに気づける。例えば、システムのどこかに依存を産んでしまい、本番リリースが詰まったというときに大きく開いたり、本番リリースできる権限のある人が忙しかったりすると開く。この点を避けるために、レトロスペクティブで議論することになる。
    • 誰が誰にPull Request送っているか、問題がある場合は問題、それぞれの作業者の残りベロシティなどを可視化している。(写真下部)

2015-12-04-17.22.21.png

開発進捗ボード

レトロスペクティブ (2週間に一度)

  • レトロスペクティブ前に、プロダクトオーナー・業務担当者にデプロイ後のプロダクトを全体的に見てもらい、フィードバックを作る。ここから新たな要件になることもある。
  • Qiita Team 上に、KPTを書くページを用意して、みんなに書いてもらう。
  • Google Hangout で、みんなでガヤガヤ振り返り。KPT作ったり、次回スプリントからの改善を出す。

なんでマヤ暦

  • こよみ屋で売っている、マヤ暦カレンダーを見て、「銀河の音」1〜13の概念が面白いと思った。完全にPDCAサイクルで、13日、13の月、13年を「基礎確立」「拡張」「変換」「輸送」といった感じに分割する。
  • 13日間を絶え間なく続けるというのが、現状の開発に合っていると思った。通常、Scrumだと、1スプリントを2週間(2週間分の営業日)だったり、1ヶ月分と捉えるが、弊社ではリモートあり、土日作業者り状態なので、営業日という概念ではないものが欲しかった。
  • 13は心のリズムだそうだ。なんか知らんがリズムが整いそうだ(?) 独自の文化を作りたかったということでネタです。

まとめと、他のチームでも使えそうな内容

  • おめめどうの巻物カレンダー がスプリント専用カレンダーを作るのにおいて非常に便利。大きさも大〜小とあるので、カレンダーに書き込んでいろいろやりたいときはオススメ。
  • バーンダウンチャートで、完了と、完了目前とか色を分けるといろいろ見えることがあって良さそう

どうにかしたい

  • タスクの優先度管理につかっているAsana と GitHub の間を行ったりきたりするのがタルい。ZenHubだと、リポジトリを横断してタスク管理したり、優先度つけられるらしいので、もうちょっとチームの規模がでかくなったらそちらに移行したい。ほかになんか、いい方法あるんだろうか。
  • Qiita Team 良いです! が、デフォルトで共同編集状態にしてほしい。。 あと、何か図表作成ツールと連携できるといいのに。(Gliffyとか便利だったなぁ。)