生産性向上は一筋縄ではいかない 〜改善を進める上で生じる課題との付き合い方〜

28.3K Views

July 21, 22

スライド概要

Developers Summit 2022 Summerで発表した「生産性向上は一筋縄でいかない ~改善を進める上で生じる課題との付き合い方~」の資料です。
https://event.shoeisha.jp/devsumi/20220721/session/3841/

※後日、当日出てきたQ&Aをまとめて別途記事として出そうと考えています。記事ができたらリンクを追加します。
→ [2022/08/26 公開しました]
  生産性向上は一筋縄ではいかない Q&A [デブサミ2022夏] - Cybozu Inside Out | サイボウズエンジニアのブログ
  https://blog.cybozu.io/entry/2022/08/26/100000

---

★サイボウズの開発者の生産性を上げる「生産性向上チーム」とは!?|Cybozu Developers|note
https://note.com/cybozu_dev/n/n1c1b44bf72f6

★デブサミ2022【B-4】生産性向上は一筋縄でいかない 〜改善を進める上で生じる課題との付き 合い方〜 #devsumiB #devsumi – Togetter
https://togetter.com/li/1919271

profile-image

サイボウズ株式会社 開発本部 生産性向上チームで働いています。

シェア

埋め込む »CMSなどでJSが使えない場合

各ページのテキスト
1.

⽣産性向上は⼀筋縄でいかない 〜改善を進める上で⽣じる課題との付き合い⽅〜 Developers Summit 2022 Summer 2022/07/21 13:15〜13:55 (B-4) サイボウズ株式会社 開発本部 ⽣産性向上チーム 平⽊場 ⾵太 1

2.

⾃⼰紹介 ▌⿅児島県出⾝、第⼆の故郷は宮崎 ▌2020年にサイボウズへ新卒⼊社、 ⽣産性向上チームに配属 ▌好きな技術は CI/CD や IaC 周り 平⽊場 ⾵太 Futa Hirakoba ▌好きな⾷べ物は⾟麺とチキン南蛮 Twitter: @Shitimi_613 GitHub: @korosuke613 2

3.

今⽇話すこと https://event.shoeisha.jp/devsumi/20220721/session/3841/ 3

4.

サイボウズとは ▌理念「チームワークあふれる社会を創る」 ▌グループウェア作ってるSaaS企業 ▌主な製品は4つ 4

5.

サイボウズの開発・運⽤組織 チーム チーム チーム ミドルウェアチーム インフラチーム … ▌製品ごとにチームが分かれている ▌クラウド製品とオンプレ製品 ▌チームごとに使ってる⾔語やツールが異なる l Java、PHP、C++、Go、... l CircleCI、GitHub Actions、Jenkins、... ▌⾃チーム内で改善活動できるチームもあれば⼯数的 に厳しいチームもある 5

6.

アジェンダ ▌サイボウズであった⽣産性向上を妨げる障壁 ▌⽣産性向上チームについて ▌改善活動を進める上で出てきた課題と付き合い⽅ ▌おわりに 6

7.

サイボウズであった⽣産性向上を妨げる障壁 7

8.

開発に必要なサービスの導⼊ハードルが⾼い 開発を楽にするために 新サービス導⼊したい 便利サービス 開発チーム 8

9.

開発に必要なサービスの導⼊ハードルが⾼い ▌サービスの導⼊は考えることが多い 予算は︖ ガバナンス 整備… 便利サービス 退職者管理 どうする︖ 運⽤⽅法... 障害対応... 9

10.

改善にかかるコストが⾼い 依存コンポーネント のデプロイ周りに 変更⼊れたい Aチーム 10

11.

改善にかかるコストが⾼い ▌対象のステークホルダーがたくさん いることも Bチーム Cチーム Dチーム Eチーム 調整めんどいな Aチーム 11

12.

改善にかかるコストが⾼い ▌そもそも改善ノウハウがなくてどうすればいいかわからない どうすればこのつらみ を解決できる︖ 12

13.

改善にかかるコストが⾼い ▌開発フロー全体の改善をするには幅広い知識が求められる 運⽤ わからん 品質保証 わからん 設計 わからん 13

14.

最新技術をキャッチアップする時間が確保できない ⼿動テストを ⾃動化しよう 14

15.

最新技術をキャッチアップする時間が確保できない ▌技術選定が必要。調査時間、⼯数も… えっ、今こんなに フレームワーク あるの︖ どれが⼀番チームに 合っているんだ︖ 調査時間 取れない... フレームワークA フレームワークB フレームワークC 15

16.

開発チームが改善活動を進めづらかった サイボウズであった⽣産性向上を妨げる障壁 ▌開発に必要なサービスの導⼊ハードルが⾼い ▌改善に必要なコストが⾼い ▌最新技術をキャッチアップする時間が確保できない 組織横断で開発基盤を整備する・改善活動をするチームの必要性 → ⽣産性向上チーム爆誕︕ 16

17.

⽣産性向上チームについて 17

18.

⽣産性向上チームのミッション 多様で価値あるサービスを迅速に提供するため、 部署やプロダクトを横断して、 ⽣産的でオープンな開発基盤を整備する 18

19.

組織横断チーム ・・・ Garoon 開発 kintone 開発 ミドル ウェア 開発 ・・・ ⽣産性向上チーム 19

20.

少⼈数チーム ▌増えたり減ったりで現在6名(最近新卒が1⼈増えました !) ▌専任4名、兼務2名 ⼈数 ⻄暦 20

21.

⽣産性向上チームの業務 組織を横断した 開発基盤の整備 開発チームの ⾃動化・効率化の⽀援 みんなハッピー! ⽣産性向上技術の キャッチアップ・共有 21

22.

組織を横断した開発基盤の整備 ▌開発⽣産性を上げるための開発基盤を構築・運⽤する 利⽤ 開発 運⽤ ⽣産性向上チーム 開発基盤 各チーム 22

23.

組織を横断した開発基盤の整備(例) ▌CircleCI Serverの構築運⽤ ▌オートスケールするGitHub Actionsセルフホストランナー環境の構築運⽤ ▌Docker Desktop有料化対応 ▌オンプレGitHub⽤のSelf-Hosted Renovate ▌開発検証⽤Google Workspace & Microsoft 365取りまとめ ▌社内MavenアーティファクトレジストリのGitHub Packages移⾏ ▌… 23

24.

開発に必要なサービスの導⼊ハードルを低く 〇〇使いたいです お任せください 依頼 ⾏動 • • • • • • 構築⽅法 運⽤⽅法 退職者管理 予算確保 ガバナンス整備 … ⽣産性向上チーム 24

25.

開発チームの⾃動化・効率化の⽀援 ▌開発⽣産性を上げるための⾃動化や効率化の⼿伝い・ノウハウの共有 開発チーム 開発チーム 共同で開発 回答・対応 質問・相談・依頼 ⽣産性向上 チーム ⽣産性向上チーム 25

26.

開発チームの⾃動化や効率化の⽀援(例) ▌CI/CDワークフロー整備 ▌E2Eテスト環境整備 ▌CI/CDワークフローの他ツールへのマイグレーション ▌CI⽤Dockerコンテナの整備 ▌開発環境のDockerコンテナ化 ▌… 26

27.

改善に必要なコストを減らせている ▌ステークホルダーとの調整 こういうことしたい んですけど〜 Bチーム Cチーム Dチーム Eチーム はいよ︕ 依頼・相談 Aチーム ⽣産性向上チーム • • ステークホルダが存在するか、どれくらいいるか 可能かどうかなどの調査 27

28.

改善に必要なコストを減らせている ▌改善ノウハウの提供 こういう開発の つらみがあります こういう⽅法 があります 他チームは こんな⾵に解決 してました 依頼・相談 ⽣産性向上チーム 28

29.

⽣産性向上技術のキャッチアップ・共有 ▌⽣産性向上に関する技術やノウハウをキャッチアップし、能動的に開発者・開 発チームに共有する 最新技術の調査 ⽣産性上がりそうな 技術・ノウハウをまとめる 発信 インターネット等 業務内容をまとめる ⽣産性向上 チーム 社内エンジニア 29

30.

⽣産性向上技術のキャッチアップ・共有(例) ▌探求時間(毎⽇1時間) l 好きな技術を⾃由に探求する時間 ▌⽣産性向上に関わる最新技術を⾃由にわいわい話す会(週1で30分) l GitHubやCIやテストの話など様々 ▌⽣産性向上チームの活動を社内で共有する会(⽉1で約60分) l 今⽉はこんなことやってましたこんなもの作りました 30

31.

最新技術のキャッチアップ時間を短縮 なるほどAに 移⾏するの アリだな 新ツールAが リリースされたよ ⽣産性向上 チーム Aの特徴は〜〜 社内で使われてる Bと⽐較して〜 31

32.

⽣産性向上チームの業務(再掲) 組織を横断した 開発基盤の整備 開発チームの ⾃動化・効率化の⽀援 みんなハッピー! ⽣産性向上技術の キャッチアップ・共有 32

33.

みんなハッピー! になれた︖ 開発チームの⽣産性向上を妨げる障壁を減らすことができた︕ 33

34.

みんなハッピー! になれた︖ 開発チームの⽣産性向上を妨げる障壁を減らすことができた︕ しかし、⽣産性向上チームが改善を進める上で新たな課題がたく さん出てきた 34

35.

改善活動を進める上で出てきた課題と付き合い⽅ 35

36.

紹介する課題 ▌依頼・相談が来ない ▌やることが無限に増えていき⾝動きが取れなくなる ▌過去に⽀援した場所が開発チームのボトルネックとなってしまう 36

37.

課題︓依頼・相談が来ない ▌設⽴当初の話、全然依頼が来なかった なんでも依頼 して … ⽣産性向上チーム 37

38.

なぜ︖︓依頼・相談が来ない ▌開発チームは l ⽣産性向上チームを知らない l ⽣産性向上チームが何ができるかわからない l 問題を問題として認識していない 38

39.

対処︓依頼・相談が来ない 理想︓開発チームは⽣産性向上チームが何をできるのか知っている、問題 を問題として認識できる そのために ▌各開発チームに対してヒアリングを実施 ▌社内イベントで改善活動を共有 39

40.

各開発チームに対してヒアリングを実施 ▌どう⾔うふうに開発してますか︖つらみはないですか︖ ▌認知を⾼める ▌社内の問題意識を集める ▌実際に話したことあるかどうかでも全然頼みやすさが違う 40

41.

社内イベントで改善活動を共有 ▌チームの改善内容を共有 l > ⽣産性向上チームの活動を社内で共有する会 (⽉1で約60分) ▌組織横断の意⾒交換の場作り、改善の⽂化作り 41

42.

依頼・相談が来るように ▌⽇々あらゆる依頼・相談が⾶んでくる AWSに ついて〜 CIに ついて〜 GitHubに ついて〜 〇〇は ⽣産性向上 が詳しいよ ⽣産性向上チーム 42

43.

課題︓やることが無限に増えていき⾝動きが取れなくなる ▌認知が⾼まるにつれ⽀援の依頼・相談が増えていく ▌活動していくにつれ運⽤しなければいけない開発基盤が増えていく ⼤量の依頼・相談 ⽣産性向上チーム ⼤量の基盤 43

44.

課題︓やることが無限に増えていき⾝動きが取れなくなる ▌⽇々の運⽤コストやコンテキストスイッチにかかるコストで逼迫されていき ⽀援活動などの時間がなくなる … 割り込み メインプロジェクト が進まない 割り込み パンクしそう … ⽣産性向上チーム 44

45.

なぜ︖︓やることが無限に増えていき⾝動きが取れなくなる ▌管理している開発基盤が多すぎる l 開発基盤の数に⽐例してやらなきゃいけないことが増える l 依存関係更新、障害対応、etc… l コンテキストスイッチにかかるコストも⾺⿅にできない ▌チームの⼯数がスケールしない l タスク消化スピードを上げるための取り組みも⾏ったが限界があった l ⼈が増えない 45

46.

対処︓やることが無限に増えていき⾝動きが取れなくなる 理想︓「やらなきゃいけないこと」が⾃分達のキャパシティを越えないように なっている そのために ▌運⽤しなきゃいけない開発基盤を減らす ▌運⽤コストを減らす取り組みをする ▌採⽤活動を積極的に⾏う 46

47.

運⽤しなきゃいけない開発基盤を減らす ▌古い基盤が今も必要かどうか検討&必要ないならクローズ l 昔に作ったサービスの必要性が無くなっている場合がある ▌代替クラウドサービスに移⾏できないか検討&移⾏できるなら移⾏ ▌新規に基盤が必要になった時もクラウドサービスで代替できないか検討 47

48.

運⽤コストを減らす取り組みをする ▌改善の⼼を忘れない、運⽤コストを減らすための取り組みにはしっかりと 時間を取る ▌運⽤コストを減らすための取り組み例 l Renovateによる依存関係更新の⾃動化 l 退職者が発⽣したらSlackに通知する l アラートへの対処⽅法をアラートに盛り込む l Terraformを使ったリソースのIaC化 48

49.

採⽤活動を積極的に⾏う ▌⼈が増えないとチームのキャパシティも増えない ▌採⽤活動のための時間を明⽰的に確保 ▌スカウトサービスの活⽤ ▌社外への露出を増やす l Productivity Weekly / Productivity News l 社外登壇 l 他社との交流 49

50.

社外への露出を増やす Productivity Weekly https://zenn.dev/topics/productivityweekly Productivity News https://www.youtube.com/playlist?list=P LPTndynQK4dyIV4LIENpxZ9bOuqEnpl-0 50

51.

少しづつタスク量とチームのキャパシティが釣り合うように ▌本当にやらなければいけない業務がだんだん残るように ▌だんだんエントリー数が増え、⼈も増えてきた やらなければ いけないこと できること 51

52.

課題︓過去に⽀援した場所が開発チームのボトルネックとなってしまう ▌チーム⽀援で開発した部分(CI/CDワークフローなど)が⽣産性向上 チームの持ち物と暗黙的に認識されてしまう CIが落ちたけど作ったの 俺たちじゃないからなんも わからん そこのコードは⽣産性 向上チーム管理だから 修正をお願いしよう 52

53.

課題︓過去に⽀援した場所が開発チームのボトルネックとなってしまう ▌頼まれてもすぐに対応できるわけではない ▌⽣産性向上チームが開発のボトルネックとなってしまう 他にもやることあるし すぐに対応できない.. この部分 直してください ⽣産性向上チーム 53

54.

なぜ︖︓過去に⽀援した場所が開発チームのボトルネックとなってしまう ▌⽀援箇所のオーナーシップを誰が持つかを明確にしなかった l 我々としては開発チームに持ってほしい ▌開発チームの技術スタックに合っていない技術を採⽤してしまった ▌開発して終わりとなってしまった l その後どう保守していくかを決めずに解散してしまった ▌などなど 54

55.

対処︓過去に⽀援した場所が開発チームのボトルネックとなってしまう 理想︓過去に⽀援した場所の改善・保守が開発チーム内で完結できる そのために ▌開発チームがオーナーシップを持つように働きかける ▌開発チームが継続的に改善や保守を⾏えるようにする ▌⽀援段階から開発チームメンバを巻き込んでいく ▌開発チーム内に⽣産性向上チームっぽい⼈を作る 55

56.

開発チームがオーナーシップを持つように働きかける ▌前提。これをやらないとすれ違いが起こる ▌⽀援の時点でオーナーシップを明確にし、伝えていく ▌相談やレビューは歓迎することも伝える l あくまで⽣産性向上チームは⽀援を⾏うだけ 56

57.

開発チームが継続的に改善や保守を⾏えるようにする ▌開発チームの学習コストが⼩さくなるような技術選定を⾏う l 学習コストが⾼いと⾃分達でやっていこうとはなりにくい ▌ドキュメントに残すべきものはしっかりと丁寧にドキュメントに残す 57

58.

⽀援段階から開発チームメンバを巻き込んでいく ▌百聞は⼀⾒にしかず、百⾒は⼀考にしかず、百考は⼀⾏にしかず ▌⽀援段階で開発チームのメンバにも⽀援箇所のコードを触ってもらう ▌開発チームメンバと⼀緒にモブプログラミングを⾏い、開発チームメンバに もドライバをしてもらうなど ▌(うまくいけば)⽀援途中であっても開発チームのメンバのみで残りの作 業を⾏えるようになり、⽣産性向上チームはフェードアウトできることも 58

59.

⽣産性向上チームのモブプログラミング ▌25分作業、5分休憩を繰り返す ▌4⼈以上参加できる場合は2部屋に分ける ▌(プログラミングとついているが)プログラミングに限らない作業を⾏う ▌1⽇の半分(約4時間)だけ⾏う、残り時間は⾃由 l モブばかりだと疲れるため l 全ての作業をモブで⾏うのは効率が悪いため モブプログラミング: 複数⼈で同じ画⾯を⾒ながらプログラミングすること(ざっくり⾔うと) 59

60.

開発チーム内に⽣産性向上チームっぽい⼈を作る ▌興味のある⼈に兼務やチーム体験に来てもらい、⽣産性向上技術やノ ウハウを持ち帰ってもらう ▌⽀援した場所を開発チーム内で保守・運⽤しやすくなる ▌⽣産性向上チームに兼務やチーム体験で来た⼈は、元々いたチームで も効率化・⾃動化を進める役割を担うようになるパターンが多い l 将来的にはどこのチームにも⽣産性向上っぽい⼈がいてほしい 60

61.

過去に⽀援した場所を開発チーム内で改善・保守できるように 改善・保守 過去に⽀援した場所 わからないことを聞く 不安な部分を相談 ⽣産性向上チーム 61

62.

紹介する課題(再掲) ▌依頼・相談が来ない ▌やることが無限に増えていき⾝動きが取れなくなる ▌過去に⽀援した場所が開発チームのボトルネックとなってしまう これらの課題は全て解決できた︖︖ 62

63.

紹介する課題(再掲) ▌依頼・相談が来ない ▌やることが無限に増えていき⾝動きが取れなくなる ▌過去に⽀援した場所が開発チームのボトルネックとなってしまう これらの課題は全て解決できた︖︖ → そんなことはない 63

64.

課題を解決できているわけではない ▌全ての課題を解決するのは困難 ▌課題をどう最⼩化していくか、課題とどう付き合っていくか ▌現在の取り組みが最適解かはわからない ▌まだまだできること、やりたいことはある l ⽣産性の定量的評価(ex. four-keys)、活発なチーム体験 (In/Out両⽅)、チーム分割など ▌もちろん今⽇紹介できてない課題もまだまだある l ガバナンスと開発のしやすさの両⽴など 64

65.

アジャイル的に課題に⽴ち向かっていく ▌こまめに振り返る、未来のことを考える l 週1でKPT l ⽉1で未来のことを考える会 ▌新しい取り組みが提案されたらなるべくTryする l 良ければ続ける。悪ければやめる ▌継続して改善し続けることが⼤事 65

66.

まとめ(というか⼀番⾔いたかったこと) ▌依頼されやすい環境を作る ▌⾃分達の持ち物をなるべく増やさない ▌⽀援時はオーナーシップを意識 ▌⽀援先で継続的に改善・運⽤できるようにする ▌何事も継続して改善し続ける 66

67.

追加情報 ▌サイボウズの開発者の⽣産性を上げる「⽣産性向上チーム」とは︕︖|Cybozu Developers|note https://note.com/cybozu_dev/n/n1c1b44bf72f6 ▌⽣産性向上チーム カテゴリーの記事⼀覧 - Cybozu Inside Out | サイボウズエンジニアのブログ https://blog.cybozu.io/archive/category/%E7%94%9F%E7%94%A3%E6%80%A7%E5%90%91%E4 %B8%8A%E3%83%81%E3%83%BC%E3%83%A0 ▌⽣産性向上チーム タグ - Slides | Cybozu Tech https://tech.cybozu.io/slides/tags/%E7%94%9F%E7%94%A3%E6%80%A7%E5%90%91%E4%B8 %8A%E3%83%81%E3%83%BC%E3%83%A0/ ▌資料内のアイコンには「ICOON MONO」さんを利⽤させていただきました。ありがとうございました https://icooon-mono.com/ 67

68.

追加情報 ▌開催時のTwitterハッシュタグを運営さんがまとめてくださいました︕ l デブサミ2022【B-4】⽣産性向上は⼀筋縄でいかない 〜改善を進める上で⽣じる課題との付き 合い⽅〜 #devsumiB #devsumi – Togetter https://togetter.com/li/1919271 68