Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

チームとプロダクトをぶっ壊した話

25,094 views

Published on

@DevLove199 越境CON

Published in: Technology
  • Be the first to comment

チームとプロダクトをぶっ壊した話

  1. 1. チームとプロダクトをぶっ壊した話 @DevLOVE199 越境CON 2017/01/28 楽天株式会社 渡邉太一
  2. 2. 2 はじめに 「楽天の人が楽天のユニフォームを着ている」!? いいえ 違います 「ファンがイーグルスのユニフォームを着ています」
  3. 3. 3 イーグルスファン 2005年~ 楽天入社 2008年~ ← 本日はこちらの「正装」を 着用しております 2009年クライマックスシリーズ 2nd stage 第4戦 8回裏の「バッテリーの交代」 について30分語れる方 いらっしゃいましたら是非お声がけください アツくお話しましょう
  4. 4. 4 自己紹介 • Webエンジニア • 言語: Java • 「Dynamic Package Team」 リーダー twitter:@taichiw0424 渡邉太一(わたなべたいち)
  5. 5. 5 “Dynamic Package Team”
  6. 6. 6 1.異動 2.チームをぶっ壊した話 3.プロダクトをぶっ壊した話
  7. 7. 7 第1章 異動
  8. 8. 8 2015年2月
  9. 9. 9 異動前 在庫登録 検索・予約 ホテル ・ 旅館 • 良いプロダクトと良いメンバーに恵まれていた • 若手率が高いながらいいチームができて、満足しつつ ちょっと やることを見失い始めていたかも このプロダクトの 開発チームのリーダー (2年半ほど) エンド ユーザー
  10. 10. 10 うちのマネージャはそういうの許してくれない ちょっと やることを見失い始めていたかも 突然の異動 「パッケージチーム」へ
  11. 11. 11 パッケージチーム : サービス
  12. 12. 12 パッケージチーム : メンバー ユニットA ユニットB ユニットC
  13. 13. 13 パッケージチーム : 評判 • 正直あまりいい噂は聞いていなかった • 「上手くチームが回っていない」 • 前年3人辞めている
  14. 14. 14 新たなる挑戦! 火事場で自分の力がどれだけ通用するか試してみたかった
  15. 15. 15 事件 開始直後はエンジニアで監視 問題なさそうなのでそろそろ解散!… という時。 異動から二週間後。
  16. 16. 16 一件の問い合わせ 楽天スーパーセール開催中!! 「セール開始と同時に出ているはずのバナーが出ていない」 という事業からの問い合わせ
  17. 17. 17 状況 私 担当:Iさん パッケージチーム XXXチーム
  18. 18. 18 経過 一旦解散しかかっていたが、残っていたメンバーにて部屋作成
  19. 19. 19 詳しくないけど俺も調べる!
  20. 20. 20 原因判明 一ヶ月ほど前に別案件でViewを修正した際のバグ 原因が判明したため、 対応は週明けで良い ということになり、ここで解散。
  21. 21. 21 原因がわかった瞬間のIさんの一言
  22. 22. 22 原因がわかった瞬間のIさんの一言 今までは こういう時一人だった…?
  23. 23. 23 実はIさん チームの「核」になってもらおうと思っていたメンバー。 しかし 既に転職が決まっていた。 去年辞めた3人に次ぐ4人目の、チームからの退職者。
  24. 24. 24 決意 チームが機能していないことが理由で 退職者を出してしまうのは 彼で最後だ。
  25. 25. 25 第2章 チームをぶっ壊す!
  26. 26. 26 私が問題視していたもの ユニットA ユニットB ユニットC 厚い「境」 厚い「境」
  27. 27. 27 厚い壁の理由 ユニットA ユニットB ユニットC • 各プロダクトの仕様やアーキテクチャが全く異なるため 担当を分けたほうが効率がいい (と、思われていた)
  28. 28. 28 厚い壁の弊害 ユニットA ユニットB ユニットC メモリリークが 解決しない… 解決方法を知っているが 問題が起こっていることを知らない この壁こそが「みんなで調べられない」 元凶だと思った
  29. 29. 29 目標 ユニットA ユニットB ユニットC この「境」を取り除いて “One Team” を作る!!!
  30. 30. 30 …ところが。 それ以前に まず解くべき課題があった
  31. 31. 31 初めにしたこと • 全員と 1対1の面談
  32. 32. 32 初めにしたこと • 全員と 1対1の面談 運用が多いです。 辛いです。
  33. 33. 33 初めにしたこと • 全員と 1対1の面談 運用が多いです。 辛いです。 運用が多いです。 辛いです。
  34. 34. 34 初めにしたこと • 全員と 1対1の面談 運用が多いです。 辛いです。 運用が多いです。 辛いです。 運用が多いです。 辛いです。
  35. 35. 35 …ということで チームをぶっ壊す前に 第1.5章 運用をぶっ壊す!
  36. 36. 36 分担できないの? ユニットA ユニットB ユニットC
  37. 37. 37 作業可能なのは3人 ユニットA ユニットB ユニットC 社員 パートナー スタッフ
  38. 38. 38 助け合えるといいのだけど ユニットA ユニットB ユニットC 社員
  39. 39. 39 他サービスを知らない ユニットA ユニットB ユニットC 社員
  40. 40. 40 一人で多くの「運用」をすることになる 運用が多いです。 辛いです。
  41. 41. 41 対案を考えてみたけど 人を増やす ×すぐにはできない 作業量を減らす ◯ 運用が多いです。 辛いです。 【対案】
  42. 42. 42 本番作業に時間がかかりすぎ サーバ 20台くらい 心を込めて 一台ずつマニュアル作業
  43. 43. 43 本番作業に時間がかかりすぎ サーバ 20台くらい Capistranoで自動化! 早い!!
  44. 44. 44 定常な「イレギュラー作業」 Database 「お客さまがXXXな理由でキャンセルされたので キャンセル料を0円にしてください」 毎月来る → でもなぜか手運用 「秘伝の手順」
  45. 45. 45 定常な「イレギュラー作業」 Database ツールを作って依頼者が自分で更新できるように! 「秘伝の手順」 もう作業 しなくていい!
  46. 46. 46 尽きない問い合わせ 楽天トラベルの標準問い合わせフロー 事業 問い合わせ 専門チーム 開発 チーム 質問 回答 自力で回答できないときだけ 質問、調査依頼 当時のパッケージチーム 事業 問い合わせ 専門チーム
  47. 47. 47 レンタル移籍! 事業 問い合わせ 専門チーム • 調査のヘルプ • ログの調べ方、プログラムの調べ方など 調査のノウハウを伝授 問い合わせが 激減した!!
  48. 48. 48 結果
  49. 49. 49 少し余裕が出てきた! 運用が減った! 辛くない!! コーディング するぞ-!! もっと運用 減らすぞ-!!
  50. 50. 50 実は… 問い合わせ 専門チーム このレンタル移籍 裏目的が。
  51. 51. 51 ユニット数 3→2へ ユニットA ユニットB ユニットC 1ユニットに統合!
  52. 52. 52 広範囲な知識を持ったエンジニアの育成 ユニットA ユニットB 知ってる!!知ってる!!
  53. 53. 53 改めて。 第2章 チームをぶっ壊す!
  54. 54. 54 これではまだ「情報共有」が難しい ユニットA ユニットB デイリーミーティング プランニング ふりかえり デイリーミーティング プランニング ふりかえり
  55. 55. 55 デイリーミーティングを一緒にやろう! 私「デイリーミーティング一緒にやりません?」 メンバー「人数増え過ぎちゃうし、 関係ない話を聞いても時間のムダ…」 お互いの状況を 早く・頻繁に・ちょっとずつ 共有して欲しい 「魔法の言葉」使用。
  56. 56. 56 魔法の言葉 とりあえず1スプリントだけやらせて! 二週間後にふりかえりがあるので そこで、どうだったか意見を聞かせてください
  57. 57. 57 「とりあえず1スプリント」作戦 抵抗なく受け入れてもらえる 2週間後にきいてみると 「良かったのでこのまま続けたい」 と言われることが多い (そうでないときもある)
  58. 58. 58 ついに! ユニットA ユニットB デイリーミーティング プランニング ふりかえり プランニング
  59. 59. 59 「合体ふりかえり」初回におきた奇跡 一緒にふりかえったから得られた成果!!! Problem: XXXができなくて… それ、 YYYYすると、できますよ
  60. 60. 60 破壊 チームをぶっ壊して One Team になった!!
  61. 61. 61 更に • 相互でのコードレビュー • ユニットテストの書き方など共通課題の議論 • トラブル対応は誰でも可能 . . .
  62. 62. 62 もう
  63. 63. 63 一人じゃない! • 知識や問題を相互に共有するチーム • お互いに助け合えるチーム • 「誰か一人しかできないこと」がないチーム いいチームになった!!!
  64. 64. 64 ……あれ、この流れは…?
  65. 65. 65 組織改編。 Dynamic Package Team Hotel Search Engine Team 主務 このチームのリーダー。 兼務 New!! このチームのリーダー。 担当プロダクトと メンバーが増えた。
  66. 66. 66 実は… この組織変更があってから1ヶ月。 【理由】 扱っているプロダクトも、今までの文化も、違いすぎるから デイリーミーティング プランニング ふりかえり デイリーミーティング プランニング ふりかえり
  67. 67. 67 でも… これって俺が必死に破壊した組織では? 今度は自分が「境」を作ってしまっている…?
  68. 68. 68 必殺「1スプリントだけ作戦」実行中 次はこの「境」を『超える!!』 デイリーミーティング プランニング ふりかえり プランニング ふりかえり
  69. 69. 69 一緒に壁を超えたい人募集中! http://corp.rakuten.co.jp/careers/engineering/
  70. 70. 70 ここまではマネージャとしての私
  71. 71. 71 自己紹介 • Webエンジニア • 言語: Java • 「Dynamic Package Team」 リーダー 渡邉太一(わたなべたいち) 本業はエンジニアなんです
  72. 72. 72 ちょっとだけ エンジニアっぽいことも 話させてくださいね
  73. 73. 73 第3章 プロダクトをぶっ壊す!
  74. 74. 74 そびえ立つ6のモノリス • それぞれ似た機能なのに作りが全然違う • 各担当者が広範囲なシステムを それぞれ把握しなければならない 検索 予約 管理画面 検索 予約 管理画面 検索 予約 管理画面 検索 予約 管理画面 検索 予約 管理画面 検索 予約 管理画面 サービスA サービスB サービスC サービスD サービスE サービスF
  75. 75. 75 理想 予約 管理画面 検索 サービスA サービスB サービスC サービスD サービスE サービスF ユニットA ユニットB ユニットC • 機能ごとに共通のコンポーネントで実装。 • 担当は「機能ごと」に。
  76. 76. 76 2016 予約 管理画面 検索 予約 管理画面 検索 予約 管理画面 プロダクト破壊の第一弾 国内ダイナミックパッケージサービスの検索のService化 • 既存のコードは捨てて、 読みやすさ・理解のしやすさにこだわった新しいプログラムに。
  77. 77. 77 今までの話って この辺の マイナーな サービス の話
  78. 78. 78 さらに 2017年 楽天トラベル One Platformへ
  79. 79. 79 楽天トラベル OnePlatformへ 全サービス横断の 機能開発 検索・予約・在庫登録・管理… microservice UIは Single Page Applicationで作る? サービスはどこで分ける? クラス設計は共通化できる? テストは?
  80. 80. 80 一緒に楽天トラベルを「ぶっ壊したい」人募集中! http://corp.rakuten.co.jp/careers/engineering/

×