5.4K Views
May 30, 22
スライド概要
GitHub InFocus 2022 Day 4: Improve の発表資料です。
https://resources.github.com/webcast/jp-github-infocus-2022/
開発者の生産性向上を妨げる障壁と、それを乗り越えるためのサイボウズの生産性向上チームの取り組み、知見をまとめました。
開発者の⽣産性向上を妨げる障壁と サイボウズの⽣産性向上チームの取り組み GitHub InFocus 2022 Day 4: Improve サイボウズ株式会社 開発本部 ⽣産性向上チーム 宮⽥ 淳平(@miyajan) 1
⾃⼰紹介 ▌宮⽥ 淳平(@miyajan) ▌サイボウズ株式会社 n 2009年 ⼊社 n 2015年 ⽣産性向上チームを⽴ち上げ ▌『GitHub Actions 実践⼊⾨』執筆など 2
今⽇話すこと 3
開発者の⽣産性向上について ▌世の中に開発者の⽣産性を⾼めるツールやプラクティスは増えてきました ▌しかし現実の開発ではなかなか改善活動が進みません ▌どういう障壁があるのでしょうか︖ ▌また、その障壁に取り組んできた知⾒を話します ▌特定のツールやプラクティスの詳細を話す発表ではありません 4
開発者の⽣産性向上を妨げる障壁 5
理想の⽣産性の⾼い開発 CI/CD スクラム リーン開発 ⾃律したチーム DevOps マイクロサービス アジャイル モダンな技術 6
現実の開発 障害対応 緊急の割り込み 納期 他チームとの調整 脆弱性 巨⼤モノリス 技術的負債 レガシーから逃げられない 7
なぜ︖ 8
開発者の⽣産性向上を放置し続けた結果 ▌他の優先事項のために⼀時的な負債を選択するのは必ずしも悪くない ▌しかし、後回しにばかりしていると中⻑期的には⾟い現実が訪れる n ⼀回負債が多すぎる状態になると利息の返済だけで⼿⼀杯に n チームがスケールせず、ビジネス的に価値を⽣み出しづらくなる n 開発者体験が悪いと、開発者が流出、採⽤が困難に ▌改善する時間がない︖ n 改善しないから時間がないのです 9
開発者の⽣産性向上を妨げる障壁とは︖ ▌組織的な障壁 n 開発者⾃⾝の改善活動の優先順位が上がりづらい n チームをまたいだ改善活動を進めにくい ▌技術的な障壁 n 新しいツールやサービスの導⼊のハードルが⾼い n 改善活動のノウハウがない 10
組織的な障壁 11
開発者⾃⾝の改善活動の優先順位が上がりづらい ▌開発チームがやるべきことは多い n 新機能実装、不具合改修、障害対応、脆弱性対応、 依存関係のアップデート、定例、他チームとの調整、etc. ▌改善活動は重要性が⾼くても緊急性は低い(と考えられがち) n なにかのきっかけで炎上して緊急性が上がることはあるけど… 12
チームをまたいだ改善活動を進めにくい ▌ステークホルダーが多いと⾃チームで完結して動けない ▌全体最適よりも⾃チームに閉じた⼀時しのぎに流れてしまいやすい 13
技術的な障壁 14
新しいツールやサービスの導⼊のハードルが⾼い ▌いろいろな選択肢がある中でどれが⾃チームのコンテキストに合うのか︖ n 技術選定する⼒が求められる ▌サービス導⼊も考えることが多い n 予算確保、ユーザー管理、ガバナンス整備など 15
改善活動のノウハウがない ▌製品開発などに⽐べて改善活動を推進したことがある⼈は少ない n 共有もあまりされない ▌開発フロー全体の改善をするには幅広い知識が求められる n 設計、開発、運⽤、品質保証など ▌通常の業務の⽚⼿間で⾏うには開発者のキャパシティが⾜りない 16
サイボウズの⽣産性向上チームの取り組み 17
サイボウズの製品開発 18
⽣産性向上チーム設⽴以前 ▌各チームで改善活動は⾏われていた n テスト⾃動化 n CI 構築 n チームで輪講して⾃チームの改善につなげる 19
⼀⽅で問題に感じることも ▌もっと改善したいけど時間が確保できない ▌各チームが似たような試⾏錯誤をしているけどノウハウが共有されづらい ▌野良で運⽤される開発基盤 20
⽣産性向上チーム⽴ち上げ 21
組織横断の専⾨チーム ・・・ Garoon 開発 kintone 開発 Office 開発 ・・・ ⽣産性向上チーム 22
役割 組織を横断した 開発基盤の整備 開発チームに⼊って 改善活動の⽀援 みんなハッピー😆 ⽣産性向上技術の キャッチアップ・共有 23
開発基盤の整備 24
活動例(開発基盤の構築) ▌AWS マルチアカウント管理 n https://speakerdeck.com/hideki/odc2021-online ▌オートスケールする GitHub Actions セルフホストランナー n https://www.slideshare.net/miyajan/github-actions250042631 ▌cybozu.com のリリース管理・アーカイブ管理システム ▌etc. 25
開発基盤で意識していること ▌クラウドサービスを活⽤する n 開発者のリソースは常に⾜りないので、運⽤コストを下げる ▌⾜りないパーツを開発・運⽤ 26
GitHub の活⽤ ▌Enterprise Server と Enterprise Cloud の両⽅を利⽤中 n 社内ネットワークからしかアクセスできないインフラがあるため ▌バージョン管理に限らずソフトウェア開発のプラットフォーム n チケット管理、レビュー、ドキュメント、CI/CD、静的サイトホスティング、 セキュリティ、etc. ▌他サービスとの連携のしやすさ n API、スコープを制限できるパーソナルアクセストークン、Webhook、OAuth、 Actions の OIDC サポート、etc. ▌オープンなコミュニケーションとコラボレーションのしやすさが改善活動につながりやすい 27
改善活動の⽀援 28
活動例(改善活動の⽀援) ▌開発チームの CI 改善⽀援 n https://www.slideshare.net/YuyaKawabata/ci250042724 ▌開発チームの E2E テスト⾃動化導⼊⽀援 ▌デザインチームの採⽤サイトリニューアル⽀援 ▌etc. 29
改善活動の⽀援で意識していること ▌⽣産性向上チームがボトルネックにならないようにする n ⽀援先チームと⼀緒に進めて⽣産性向上チームに属⼈化させない n 最終的には⽀援先チームで改善活動が進む状態を⽬指す ▌改善活動を推進する旗振り役を⽬指す n 関係者が集まって話す場を作るだけでもいろいろ進み出すこともある n もちろん必要なときは⼿も動かす 30
⽣産性向上ノウハウのキャッチアップ・共有 31
キャッチアップする時間の確保 ▌毎⽇午前中はデイリーミーティング以外の時間は⾃由に探求する時間 n 新しいツールや技術の調査 n ちょっとした改善案の実践 n etc. ▌業務時間内で学習や成⻑のための時間を確保する 32
⽣産性向上に関する情報の共有・発信(1) ▌Productivity Weekly n 社内で週⼀で最近の⽣産性向上ネタを持ち寄ってワイワイする会 n 社外にも記事として発信 n https://zenn.dev/topics/productivityweekly 33
⽣産性向上に関する情報の共有・発信(2) ▌Cybozu Productivity News n Productivity Weekly の内容を⽉⼀でまとめて社外に動画配信 n https://www.youtube.com/playlist?list=PLPTndynQK4d yIV4LIENpxZ9bOuqEnpl-0 34
⽣産性向上に関する情報の共有・発信(3) ▌Productivity.fm n ⽉⼀で⽣産性向上チームの活動内容を社内に動画配信 35
まとめ 36
話したこと 改善活動の障壁 ⽣産性向上チームの取り組み 組織的な障壁 組織横断の専⾨チーム 開発基盤の整備 改善活動の⽀援・旗振り ノウハウのキャッチアップと共有 優先順位が上がりづらい チームをまたいで進めづらい 技術的な障壁 ツールやサービス導⼊のハードル ノウハウ不⾜ 37
⽣産性向上のような専⾨チームは必要︖ ▌それぞれの組織・チームのコンテキストによる n ⼩規模な内は推進⼒のある⼈がいればどうにかなる n ⼤規模になるにつれてスケールさせるために責務の分離も選択肢に ▌海外だと Engineering Productivity 系のチームはけっこうある n 国内でも増えてきている ▌専⾨チームがサイロ化しないよう注意 38
参考資料など ▌『サイボウズの開発者の⽣産性を上げる「⽣産性向上チーム」とは︕︖』 n https://note.com/cybozu_dev/n/n1c1b44bf72f6 ▌Meety やってるので直接話してみたいという⼈はどうぞ︕ n https://meety.net/matches/EsrUIngZNeUX 39