分散開発チームによるagile開発実践 ~いろいろハマった!よかった
TRANSCRIPT
本日お話すること
1. もやっと Agile 期(スクラム導入前)
2. スクラム導入期
3. スクラム+カンバン期
4. ちょっとした Tips ご紹介
2
国内外に分散した開発チームでAgile 開発を実践した事例紹介
本日お話しないこと
1. スクラムプロセスの解説ただしスクラムに詳しくない方にも分かりやすいようにお話します
2. 各種ツールの詳しい紹介軽く触れる程度。深くは説明しません
3
と、その前に…
4
5
ってなにもの?
かつてこんな会社がありました
6
シンクロア株式会社モバイルデータの同期サービス(例:NTTドコモの「電話帳お預かりサービス」)
日本企業。開発はすべて国内で実施
Servo Software(米)デバイスサーチ事業を展開
米国カリフォルニアを拠点に様々な国の点在するエンジニアがシステム開発を実施
これを…
7
( ^ω^)⊃ ⊂
こうして…
8
( ^ω^)≡⊃⊂≡
こうじゃ!
9
( ^ω^)⊃ ⊂
Kii 株式会社
10
Spain China Japan USA
2010年7月 会社設立以来 Mobile Backend一筋で取り組み、MobileOperators / Manufactures / Apps へ Backend や SDKを提供
Founded
HQ 東京
Business
Record
Mobile Backend Service
開発エンジニアの分布
11
Kii Cloud
12
mBaaS (Mobile Backend as a Service)
ユーザー管理 データ管理
アプリ分析 プッシュ通知
SDK
サーバチーム
クライアントSDKチーム
開発者ポータルチーム
QAチーム
OpsチームDocチーム
Kii における開発
• 国内外に分散するチームが協力してひとつのサービスを開発している
• 開発しているのはモバイル開発者向けバックエンドサービス(そこそこ大きい開発)
13
第一章:もやっとAgile期
14
1. もやっと Agile 期(スクラム導入前)
2. スクラム導入期
3. スクラム+カンバン期
4. ちょっとした Tips ご紹介
国内外に分散した開発チームでAgile 開発を実践した事例紹介
Scrum 導入以前
15
• チケット駆動開発
• 継続的インテグレーション/デリバリー
• 週一回のチームリーダー会合(進捗報告&確認、意識合わせ等)
2012年より Agile 開発手法を実践
そこはかとない「もやっと」感
• チームリーダー会合長すぎ数時間続く…
時差のせいでたいてい深夜開催(夜食片手に…)
• チーム間の微妙な意識の齟齬「◯◯機能できたよー」「ちょ、それこっちの想定と微妙に違う」「まじかー」
• 機能リリースが微妙に遅れ気味…と Stakeholder が思っているフシ(開発チーム的にはやれることをやっているのに)
16
そんなときに参加したのが
17
Scrum Alliance Regional
Gathering Tokyo 2013
私の脳内イメージ(参加前)
18
Scrum?
私の脳内イメージ(参加後)
19
Scrum!!
Scrum の考え方で色々解決するかも!!
20
…と提案したところ「OK、じゃあ Scrum Master 任せた」と言われました。いわゆる言い出しっぺの法則発動です本当にありがとうございました(笑)
第ニ章:スクラム導入期
21
1. もやっと Agile 期(スクラム導入前)
2. スクラム導入期
3. スクラム+カンバン期
4. ちょっとした Tips ご紹介
国内外に分散した開発チームでAgile 開発を実践した事例紹介
ん? Scrum って
• 理想的なメンバー数:5~9人
• われわれ:30人以上
22
Scrumではなく、Scrum of Scrum
23
プロダクトオーナー
スクラムマスター(いぐち)
スプリントの進め方
24
• スプリントプラニングこのスプリント(2wk)で完了させるタスクを選択タスクボードに載せる
• デイリースタンドアップ各チームがやったこと、やること、問題点の共有
• スプリントレビュータスクボードの確認(完了した/しなかったタスクの確認)
• スプリントレトロスペクティブスプリント中よかったこと、悪かったことの共有次のスプリントでカイゼンすることの決定
参加メンバーは日・中・西。肉体と精神に優しい時間帯に開催するように
ということで1年ちょい回してみた
25
• チームリーダーからの声「Sprint の導入によりなんかリズム感がでてきたような気がする」
• プロダクトオーナー/ステークホルダーからの声「なんか前よりリリースがきちんとできてるような気がする」
めでたしめでたし(完)
26
…な訳がなく、いろいろな不満や課題が
むしろここからが本番
27
第三章:スクラム+カンバン期
28
1. もやっと Agile 期(スクラム導入前)
2. スクラム導入期
3. スクラム+カンバン期
4. ちょっとした Tips ご紹介
国内外に分散した開発チームでAgile 開発を実践した事例紹介
スクラム期で見えてきた問題
29
1. バーンダウンチャート不燃問題
2. Scrum?なにそれ問題
1.「バーンダウンチャート」不燃問題
30
いつまでたっても0にならない…(心理的にどよーん)
未完のタスク数
2. Scrumなにそれ問題
• 全エンジニアに対してアンケートを実施
31
Q: 今の開発プロセスに満足か?
Q: 「Scrum に参加してる感」はあるか?
やや不満足&回答なし:46%
まったくそう思わない&回答なし:33%
アンケート自由記入欄より抜粋
• 他のチームが何やってるのかとか、開発全体の方向性とか、よくわからない
• Scrum ってもうちょっと楽しいものだと思ってたんだけど…
• うまく回っていると思うんならそうなんだろうな、お前ん中ではな(意訳)
32
1. なぜ不燃?
33
ためしたこと:
• タスクの分離例:サーバ側リリースとクライアント側リリースを分離
タスクを2週間で完了できていない→ リリース可能な状態にもっていけない
…でも結局2週間ではリリース可能な状態にもっていけないケースが多発
2. Scrum なにそれ?と言われる原因?
34
Scrum of Scrum でやっていることが各チームメンバーに伝わっていない→ タスクボードを見ても「ふーん」
ヒアリングの結果:
• タスクボードが実作業工程とズレてるあるタスクが「Ongoing」だったとして、それは実装中なの?テスト中なの?
カイゼンしたこと
• 「リリースの呪縛」からの脱却スプリント終了時に「リリース可能」なものを求めない
• カンバンの導入タスクボードを拡張し、実作業工程を反映したカンバンを導入
• Scrum的な取り組みのよいところは継続2週間の Sprint 制はそのままキープ「リリースの呪縛」からの脱却に合わせプロセスを調整
35
カンバンの導入
• タスクボード → カンバン
36
バックログ 設計 開発テスト@Dev環境
リリース作業
テスト@Stage環境
(Github + Huboard で作成)
スプリントの進め方(改)
37
• スプリントプラニングこのスプリント(2wk)における重要タスクを確認これらのタスクをどのフェーズまでもっていくか決定
• デイリースタンドアップ各チームがやったこと、やること、問題点の共有
• スプリントレビューカンバンの確認(スプリント計画時に設定したゴールと比較)
• スプリントレトロスペクティブスプリント中よかったこと、悪かったことの共有次のスプリントでカイゼンすることの決定
実際の例
38
タスクその1
タスクその2
タスクその3
スプリント開始時のフェーズ
スプリント終了時のフェーズ(ゴール)
1年ちょい回してみたところ…
39
• チームリーダー/プロダクトオーナーだけではなく、チームメンバーにもそこそこ好評っぽい
少なくともあまり不満は聞こえてこない。アンケート?うん、まぁ… そうね……
「リリースの呪縛」を解いたことで…
40
• リリースが Agile になった
バックログ 設計 開発テスト@Dev環境
リリース作業
テスト@Stage環境
必要なものが揃ったらすぐリリース
「見える化」効果
41
• カンバンによる「見える化」効果問題になっている箇所の特定複数チームの協力による問題のカイゼン
カイゼン例:ドキュメント
ガイドドキュメント (http://docs.kii.com/)
42
クライアント SDK や開発者ポータルの使い方をカバー
英語/日本語/中国語
従来のプロセス
43
バックログ 設計 開発テスト@Dev環境
リリース作業
テスト@Stage環境
実装
Doc
こんなかんじですー(内部ドキュメント)
怒涛の勢いでドキュメント執筆&翻訳
実装&テスト
問題点
• たいてい複数の機能が並行して実装ドキュメント執筆が間に合わない実装が終わったがドキュメントがまだ… 切ない
• 実装途中で仕様が変更仕様変更がドキュメント担当に伝わってこない最終的なドキュメント内容が間違っている… しくしく
• 微妙な意識のズレドキュメント担当が実装担当の意図を汲みきれないことがある(and vice versa)… つのるイライラ感
44
カイゼンされたプロセス
45
バックログ 設計 開発テスト@Dev環境
リリース作業
テスト@Stage環境
実装
Doc
こんなかんじっすわー(外部ドキュメントのドラフト)
「設計」フェーズの終了条件:ドラフトを、実装・QA・ドキュメント担当でレビュー
実装&テスト
加筆/修正&翻訳
カイゼンの結果
• 実装が並行進行しても間に合うようにドトウの追い込みを掛ける必要がなくなった
• ちゃんと仕様変更が反映されるように実装者自ら執筆したドキュメントなのでちゃんと反映してくれる(反映漏れが減った)
• 意識のズレが減った設計フェーズの最後に行うレビューで疑問点を潰す
46
メタな視線から見て何が起こったか?
47複数チームの有機的な連携
これ以外の有機的なチーム連携例
• サーバ(西)と QA チームの連携時差の影響で問合わせ等のやりとりに時間がかかっていた→ QAテストの一部をサーバ(西)に委譲
• クライアントSDK と QA チームの連携より密な情報共有がしたいという要求→ 合同でデイリーミーティングを実施
48
おまけ:ちょっとした Tips
49
1. もやっと Agile 期(スクラム導入前)
2. スクラム導入期
3. スクラム+カンバン期
4. ちょっとした Tips ご紹介
国内外に分散した開発チームでAgile 開発を実践した事例紹介
仕事の区切りの喪失
アンケートより:
「スクラムになってから仕事の区切りが曖昧になった。いつまで経っても『終わった』感が感じられない」
まあ、そうなるな…
50
お疲れ会の開催
スプリントの終わりに「お疲れ会」を開催
51
海外の同僚とのコミュニケーション
海外拠点との顔が見えない状態でのやりとりScrum of Scrum におけるデイリーチーム間での確認(◯◯って、△△だっけ?)
52
HipChat などのチャットツールを駆使して実現
スムーズに意思の疎通をはかれるようにするためにできること…
コツ:とりあえず会っておく
53
年一回、みんなで All-hands ミーティング
実際に会っておくのは重要。本当に重要
色々キッツいお願いをしなければならない状況において効いてくる
逆にキッツいお願いをされた時にも「まあ、仕方ないかぁ」と思える
まとめ
54
色々な試行錯誤を経て Scrum+カンバンというスタイルで頑張っております
実は、カイゼン項目はまだ山盛り
• スプリントプラニング時に無難なゴール設定しちゃうよね問題マージン取りたいよね…わかります。でもそんな計画で大丈夫か?
• 機能横断的チーム組んでみたいよね実は一回試してみたが失敗した苦い経験ありレッツリベンジ!
• あと全エンジニアアンケートをやらねば (´・ω・`)
55
今後もハマっていきますー
• 今後も色々ハマりながら頑張っていこうと思っております!
• みなさんもぜひハマってみてください!(そして SGT2016 でお話を聞かせてください)
• Kii で一緒にハマりたいという方、随時仲間募集中です!!
56
(おまけ)カイゼンには終わりがない
57
,. '  ̄ `ヽ見通しが良くなり 。 ∧∧ ‘, 新たな課題が ! (゚Д゚ ) l見えてきます ,, -→ 、 | | ,‘--. ,,
,.‐‘“ ヽ . _ .. ’ ゛‘‐、,i´ `:、 ある程度課題が
/ i, 蓄積すると… ,i γ´ ̄ ̄ ̄ ̄ヽ↓
,. ‘  ̄ `ヽ | ハマった … |. '  ̄ `ヽ/ ∧∧ ‘, 一時的に満足な ヽ、_____メ :∧∧: ’, モヤモヤ! ( ゚Д゚) =3l 状態になります ! :(゚Д゚ ): l 、 | | ,‘ ◎ モヤモヤ、 :| |: ,' ヽ . _ .. ' ヽ . _ .. '
↑ γ´ ̄ ̄ ̄ヽ l l | うまく | ,! i、 | いった | / ヽ 入_____ノ ↓ ,. ‘∬ ̄ `ヽ カイゼンの結果 ,. '  ̄ `ヽ\人_人,_从_人,_从,人/
/ ,.,.,. ∧∧‘, 次第にうまく / ヘヘ ’ )早くカイゼンを!(! ;;__;;(゚Д゚ ) l 回るように ! (r゚*‘’) \人__从,人/⌒⌒Y⌒ 、ヽ_/η |,←、, ,、‐´ 、 | | ,‘ ) ハリー!ハリー!(ヽ . _ .. ‘ ´´“”’‘’‘“”´´ ヽ ._ .. ’ /⌒Y⌒Y⌒ Y⌒ Y⌒ヘ