分散開発チームによるagile開発実践 ~いろいろハマった!よかった

57
分散開発チームによるAgile開発実践 ~いろいろハマった!よかった 2015.2.28 Kii株式会社 井口誠 [email protected] 1

Upload: makoto-iguchi

Post on 17-Jul-2015

1.034 views

Category:

Engineering


3 download

TRANSCRIPT

Page 1: 分散開発チームによるAgile開発実践 ~いろいろハマった!よかった

分散開発チームによるAgile開発実践~いろいろハマった!よかった

2015.2.28

Kii株式会社

井口誠

[email protected]

1

Page 2: 分散開発チームによるAgile開発実践 ~いろいろハマった!よかった

本日お話すること

1. もやっと Agile 期(スクラム導入前)

2. スクラム導入期

3. スクラム+カンバン期

4. ちょっとした Tips ご紹介

2

国内外に分散した開発チームでAgile 開発を実践した事例紹介

Page 3: 分散開発チームによるAgile開発実践 ~いろいろハマった!よかった

本日お話しないこと

1. スクラムプロセスの解説ただしスクラムに詳しくない方にも分かりやすいようにお話します

2. 各種ツールの詳しい紹介軽く触れる程度。深くは説明しません

3

Page 4: 分散開発チームによるAgile開発実践 ~いろいろハマった!よかった

と、その前に…

4

Page 5: 分散開発チームによるAgile開発実践 ~いろいろハマった!よかった

5

ってなにもの?

Page 6: 分散開発チームによるAgile開発実践 ~いろいろハマった!よかった

かつてこんな会社がありました

6

シンクロア株式会社モバイルデータの同期サービス(例:NTTドコモの「電話帳お預かりサービス」)

日本企業。開発はすべて国内で実施

Servo Software(米)デバイスサーチ事業を展開

米国カリフォルニアを拠点に様々な国の点在するエンジニアがシステム開発を実施

Page 7: 分散開発チームによるAgile開発実践 ~いろいろハマった!よかった

これを…

7

( ^ω^)⊃ ⊂

Page 8: 分散開発チームによるAgile開発実践 ~いろいろハマった!よかった

こうして…

8

( ^ω^)≡⊃⊂≡

Page 9: 分散開発チームによるAgile開発実践 ~いろいろハマった!よかった

こうじゃ!

9

( ^ω^)⊃ ⊂

Page 10: 分散開発チームによるAgile開発実践 ~いろいろハマった!よかった

Kii 株式会社

10

Spain China Japan USA

2010年7月 会社設立以来 Mobile Backend一筋で取り組み、MobileOperators / Manufactures / Apps へ Backend や SDKを提供

Founded

HQ 東京

Business

Record

Mobile Backend Service

Page 11: 分散開発チームによるAgile開発実践 ~いろいろハマった!よかった

開発エンジニアの分布

11

Page 12: 分散開発チームによるAgile開発実践 ~いろいろハマった!よかった

Kii Cloud

12

mBaaS (Mobile Backend as a Service)

ユーザー管理 データ管理

アプリ分析 プッシュ通知

SDK

サーバチーム

クライアントSDKチーム

開発者ポータルチーム

QAチーム

OpsチームDocチーム

Page 13: 分散開発チームによるAgile開発実践 ~いろいろハマった!よかった

Kii における開発

• 国内外に分散するチームが協力してひとつのサービスを開発している

• 開発しているのはモバイル開発者向けバックエンドサービス(そこそこ大きい開発)

13

Page 14: 分散開発チームによるAgile開発実践 ~いろいろハマった!よかった

第一章:もやっとAgile期

14

1. もやっと Agile 期(スクラム導入前)

2. スクラム導入期

3. スクラム+カンバン期

4. ちょっとした Tips ご紹介

国内外に分散した開発チームでAgile 開発を実践した事例紹介

Page 15: 分散開発チームによるAgile開発実践 ~いろいろハマった!よかった

Scrum 導入以前

15

• チケット駆動開発

• 継続的インテグレーション/デリバリー

• 週一回のチームリーダー会合(進捗報告&確認、意識合わせ等)

2012年より Agile 開発手法を実践

Page 16: 分散開発チームによるAgile開発実践 ~いろいろハマった!よかった

そこはかとない「もやっと」感

• チームリーダー会合長すぎ数時間続く…

時差のせいでたいてい深夜開催(夜食片手に…)

• チーム間の微妙な意識の齟齬「◯◯機能できたよー」「ちょ、それこっちの想定と微妙に違う」「まじかー」

• 機能リリースが微妙に遅れ気味…と Stakeholder が思っているフシ(開発チーム的にはやれることをやっているのに)

16

Page 17: 分散開発チームによるAgile開発実践 ~いろいろハマった!よかった

そんなときに参加したのが

17

Scrum Alliance Regional

Gathering Tokyo 2013

Page 18: 分散開発チームによるAgile開発実践 ~いろいろハマった!よかった

私の脳内イメージ(参加前)

18

Scrum?

Page 19: 分散開発チームによるAgile開発実践 ~いろいろハマった!よかった

私の脳内イメージ(参加後)

19

Scrum!!

Page 20: 分散開発チームによるAgile開発実践 ~いろいろハマった!よかった

Scrum の考え方で色々解決するかも!!

20

…と提案したところ「OK、じゃあ Scrum Master 任せた」と言われました。いわゆる言い出しっぺの法則発動です本当にありがとうございました(笑)

Page 21: 分散開発チームによるAgile開発実践 ~いろいろハマった!よかった

第ニ章:スクラム導入期

21

1. もやっと Agile 期(スクラム導入前)

2. スクラム導入期

3. スクラム+カンバン期

4. ちょっとした Tips ご紹介

国内外に分散した開発チームでAgile 開発を実践した事例紹介

Page 22: 分散開発チームによるAgile開発実践 ~いろいろハマった!よかった

ん? Scrum って

• 理想的なメンバー数:5~9人

• われわれ:30人以上

22

Page 23: 分散開発チームによるAgile開発実践 ~いろいろハマった!よかった

Scrumではなく、Scrum of Scrum

23

プロダクトオーナー

スクラムマスター(いぐち)

Page 24: 分散開発チームによるAgile開発実践 ~いろいろハマった!よかった

スプリントの進め方

24

• スプリントプラニングこのスプリント(2wk)で完了させるタスクを選択タスクボードに載せる

• デイリースタンドアップ各チームがやったこと、やること、問題点の共有

• スプリントレビュータスクボードの確認(完了した/しなかったタスクの確認)

• スプリントレトロスペクティブスプリント中よかったこと、悪かったことの共有次のスプリントでカイゼンすることの決定

参加メンバーは日・中・西。肉体と精神に優しい時間帯に開催するように

Page 25: 分散開発チームによるAgile開発実践 ~いろいろハマった!よかった

ということで1年ちょい回してみた

25

• チームリーダーからの声「Sprint の導入によりなんかリズム感がでてきたような気がする」

• プロダクトオーナー/ステークホルダーからの声「なんか前よりリリースがきちんとできてるような気がする」

Page 26: 分散開発チームによるAgile開発実践 ~いろいろハマった!よかった

めでたしめでたし(完)

26

Page 27: 分散開発チームによるAgile開発実践 ~いろいろハマった!よかった

…な訳がなく、いろいろな不満や課題が

むしろここからが本番

27

Page 28: 分散開発チームによるAgile開発実践 ~いろいろハマった!よかった

第三章:スクラム+カンバン期

28

1. もやっと Agile 期(スクラム導入前)

2. スクラム導入期

3. スクラム+カンバン期

4. ちょっとした Tips ご紹介

国内外に分散した開発チームでAgile 開発を実践した事例紹介

Page 29: 分散開発チームによるAgile開発実践 ~いろいろハマった!よかった

スクラム期で見えてきた問題

29

1. バーンダウンチャート不燃問題

2. Scrum?なにそれ問題

Page 30: 分散開発チームによるAgile開発実践 ~いろいろハマった!よかった

1.「バーンダウンチャート」不燃問題

30

いつまでたっても0にならない…(心理的にどよーん)

未完のタスク数

Page 31: 分散開発チームによるAgile開発実践 ~いろいろハマった!よかった

2. Scrumなにそれ問題

• 全エンジニアに対してアンケートを実施

31

Q: 今の開発プロセスに満足か?

Q: 「Scrum に参加してる感」はあるか?

やや不満足&回答なし:46%

まったくそう思わない&回答なし:33%

Page 32: 分散開発チームによるAgile開発実践 ~いろいろハマった!よかった

アンケート自由記入欄より抜粋

• 他のチームが何やってるのかとか、開発全体の方向性とか、よくわからない

• Scrum ってもうちょっと楽しいものだと思ってたんだけど…

• うまく回っていると思うんならそうなんだろうな、お前ん中ではな(意訳)

32

Page 33: 分散開発チームによるAgile開発実践 ~いろいろハマった!よかった

1. なぜ不燃?

33

ためしたこと:

• タスクの分離例:サーバ側リリースとクライアント側リリースを分離

タスクを2週間で完了できていない→ リリース可能な状態にもっていけない

…でも結局2週間ではリリース可能な状態にもっていけないケースが多発

Page 34: 分散開発チームによるAgile開発実践 ~いろいろハマった!よかった

2. Scrum なにそれ?と言われる原因?

34

Scrum of Scrum でやっていることが各チームメンバーに伝わっていない→ タスクボードを見ても「ふーん」

ヒアリングの結果:

• タスクボードが実作業工程とズレてるあるタスクが「Ongoing」だったとして、それは実装中なの?テスト中なの?

Page 35: 分散開発チームによるAgile開発実践 ~いろいろハマった!よかった

カイゼンしたこと

• 「リリースの呪縛」からの脱却スプリント終了時に「リリース可能」なものを求めない

• カンバンの導入タスクボードを拡張し、実作業工程を反映したカンバンを導入

• Scrum的な取り組みのよいところは継続2週間の Sprint 制はそのままキープ「リリースの呪縛」からの脱却に合わせプロセスを調整

35

Page 36: 分散開発チームによるAgile開発実践 ~いろいろハマった!よかった

カンバンの導入

• タスクボード → カンバン

36

バックログ 設計 開発テスト@Dev環境

リリース作業

テスト@Stage環境

(Github + Huboard で作成)

Page 37: 分散開発チームによるAgile開発実践 ~いろいろハマった!よかった

スプリントの進め方(改)

37

• スプリントプラニングこのスプリント(2wk)における重要タスクを確認これらのタスクをどのフェーズまでもっていくか決定

• デイリースタンドアップ各チームがやったこと、やること、問題点の共有

• スプリントレビューカンバンの確認(スプリント計画時に設定したゴールと比較)

• スプリントレトロスペクティブスプリント中よかったこと、悪かったことの共有次のスプリントでカイゼンすることの決定

Page 38: 分散開発チームによるAgile開発実践 ~いろいろハマった!よかった

実際の例

38

タスクその1

タスクその2

タスクその3

スプリント開始時のフェーズ

スプリント終了時のフェーズ(ゴール)

Page 39: 分散開発チームによるAgile開発実践 ~いろいろハマった!よかった

1年ちょい回してみたところ…

39

• チームリーダー/プロダクトオーナーだけではなく、チームメンバーにもそこそこ好評っぽい

少なくともあまり不満は聞こえてこない。アンケート?うん、まぁ… そうね……

Page 40: 分散開発チームによるAgile開発実践 ~いろいろハマった!よかった

「リリースの呪縛」を解いたことで…

40

• リリースが Agile になった

バックログ 設計 開発テスト@Dev環境

リリース作業

テスト@Stage環境

必要なものが揃ったらすぐリリース

Page 41: 分散開発チームによるAgile開発実践 ~いろいろハマった!よかった

「見える化」効果

41

• カンバンによる「見える化」効果問題になっている箇所の特定複数チームの協力による問題のカイゼン

Page 42: 分散開発チームによるAgile開発実践 ~いろいろハマった!よかった

カイゼン例:ドキュメント

ガイドドキュメント (http://docs.kii.com/)

42

クライアント SDK や開発者ポータルの使い方をカバー

英語/日本語/中国語

Page 43: 分散開発チームによるAgile開発実践 ~いろいろハマった!よかった

従来のプロセス

43

バックログ 設計 開発テスト@Dev環境

リリース作業

テスト@Stage環境

実装

Doc

こんなかんじですー(内部ドキュメント)

怒涛の勢いでドキュメント執筆&翻訳

実装&テスト

Page 44: 分散開発チームによるAgile開発実践 ~いろいろハマった!よかった

問題点

• たいてい複数の機能が並行して実装ドキュメント執筆が間に合わない実装が終わったがドキュメントがまだ… 切ない

• 実装途中で仕様が変更仕様変更がドキュメント担当に伝わってこない最終的なドキュメント内容が間違っている… しくしく

• 微妙な意識のズレドキュメント担当が実装担当の意図を汲みきれないことがある(and vice versa)… つのるイライラ感

44

Page 45: 分散開発チームによるAgile開発実践 ~いろいろハマった!よかった

カイゼンされたプロセス

45

バックログ 設計 開発テスト@Dev環境

リリース作業

テスト@Stage環境

実装

Doc

こんなかんじっすわー(外部ドキュメントのドラフト)

「設計」フェーズの終了条件:ドラフトを、実装・QA・ドキュメント担当でレビュー

実装&テスト

加筆/修正&翻訳

Page 46: 分散開発チームによるAgile開発実践 ~いろいろハマった!よかった

カイゼンの結果

• 実装が並行進行しても間に合うようにドトウの追い込みを掛ける必要がなくなった

• ちゃんと仕様変更が反映されるように実装者自ら執筆したドキュメントなのでちゃんと反映してくれる(反映漏れが減った)

• 意識のズレが減った設計フェーズの最後に行うレビューで疑問点を潰す

46

Page 47: 分散開発チームによるAgile開発実践 ~いろいろハマった!よかった

メタな視線から見て何が起こったか?

47複数チームの有機的な連携

Page 48: 分散開発チームによるAgile開発実践 ~いろいろハマった!よかった

これ以外の有機的なチーム連携例

• サーバ(西)と QA チームの連携時差の影響で問合わせ等のやりとりに時間がかかっていた→ QAテストの一部をサーバ(西)に委譲

• クライアントSDK と QA チームの連携より密な情報共有がしたいという要求→ 合同でデイリーミーティングを実施

48

Page 49: 分散開発チームによるAgile開発実践 ~いろいろハマった!よかった

おまけ:ちょっとした Tips

49

1. もやっと Agile 期(スクラム導入前)

2. スクラム導入期

3. スクラム+カンバン期

4. ちょっとした Tips ご紹介

国内外に分散した開発チームでAgile 開発を実践した事例紹介

Page 50: 分散開発チームによるAgile開発実践 ~いろいろハマった!よかった

仕事の区切りの喪失

アンケートより:

「スクラムになってから仕事の区切りが曖昧になった。いつまで経っても『終わった』感が感じられない」

まあ、そうなるな…

50

Page 51: 分散開発チームによるAgile開発実践 ~いろいろハマった!よかった

お疲れ会の開催

スプリントの終わりに「お疲れ会」を開催

51

Page 52: 分散開発チームによるAgile開発実践 ~いろいろハマった!よかった

海外の同僚とのコミュニケーション

海外拠点との顔が見えない状態でのやりとりScrum of Scrum におけるデイリーチーム間での確認(◯◯って、△△だっけ?)

52

HipChat などのチャットツールを駆使して実現

スムーズに意思の疎通をはかれるようにするためにできること…

Page 53: 分散開発チームによるAgile開発実践 ~いろいろハマった!よかった

コツ:とりあえず会っておく

53

年一回、みんなで All-hands ミーティング

実際に会っておくのは重要。本当に重要

色々キッツいお願いをしなければならない状況において効いてくる

逆にキッツいお願いをされた時にも「まあ、仕方ないかぁ」と思える

Page 54: 分散開発チームによるAgile開発実践 ~いろいろハマった!よかった

まとめ

54

色々な試行錯誤を経て Scrum+カンバンというスタイルで頑張っております

Page 55: 分散開発チームによるAgile開発実践 ~いろいろハマった!よかった

実は、カイゼン項目はまだ山盛り

• スプリントプラニング時に無難なゴール設定しちゃうよね問題マージン取りたいよね…わかります。でもそんな計画で大丈夫か?

• 機能横断的チーム組んでみたいよね実は一回試してみたが失敗した苦い経験ありレッツリベンジ!

• あと全エンジニアアンケートをやらねば (´・ω・`)

55

Page 56: 分散開発チームによるAgile開発実践 ~いろいろハマった!よかった

今後もハマっていきますー

• 今後も色々ハマりながら頑張っていこうと思っております!

• みなさんもぜひハマってみてください!(そして SGT2016 でお話を聞かせてください)

• Kii で一緒にハマりたいという方、随時仲間募集中です!!

56

Page 57: 分散開発チームによるAgile開発実践 ~いろいろハマった!よかった

(おまけ)カイゼンには終わりがない

57

,. '  ̄ `ヽ見通しが良くなり 。 ∧∧ ‘, 新たな課題が ! (゚Д゚ ) l見えてきます ,, -→ 、 | | ,‘--. ,,

,.‐‘“ ヽ . _ .. ’ ゛‘‐、,i´ `:、 ある程度課題が

/ i, 蓄積すると… ,i γ´ ̄ ̄ ̄ ̄ヽ↓

,. ‘  ̄ `ヽ | ハマった … |. '  ̄ `ヽ/ ∧∧ ‘, 一時的に満足な ヽ、_____メ :∧∧: ’, モヤモヤ! ( ゚Д゚) =3l 状態になります ! :(゚Д゚ ): l 、 | | ,‘ ◎ モヤモヤ、 :| |: ,' ヽ . _ .. ' ヽ . _ .. '

↑ γ´ ̄ ̄ ̄ヽ l l | うまく | ,! i、 | いった | / ヽ 入_____ノ ↓ ,. ‘∬ ̄ `ヽ カイゼンの結果 ,. '  ̄ `ヽ\人_人,_从_人,_从,人/

/ ,.,.,. ∧∧‘, 次第にうまく / ヘヘ ’ )早くカイゼンを!(! ;;__;;(゚Д゚ ) l 回るように ! (r゚*‘’) \人__从,人/⌒⌒Y⌒ 、ヽ_/η |,←、, ,、‐´ 、 | | ,‘ ) ハリー!ハリー!(ヽ . _ .. ‘ ´´“”’‘’‘“”´´ ヽ ._ .. ’ /⌒Y⌒Y⌒ Y⌒ Y⌒ヘ