見出し画像

サイボウズの開発者の生産性を上げる「生産性向上チーム」とは!?

こんにちは。生産性向上チームの平木場(@korosuke613)です。最近はよくプラモデルを作っています。

今回は、生産性向上チームという一風変わった名前のチームについてご紹介します。


生産性向上チームとは

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

業務内容

主な業務内容は以下になります。

  • チームを横断した開発効率を高める基盤の整備

  • 開発チームの業務の自動化や効率化の支援

  • 最新の生産性向上に関わる技術のキャッチアップ、探求

などなど、一言でいうと「サイボウズのエンジニアがつらいと思っている部分を最高にしていく」ために活動しているチームです!

ユーザ(社内エンジニア)との距離が近いため、活動に対するフィードバックを受けやすい、他チームの開発を改善することにより、たくさんの生産性向上ノウハウを得られる、といった特徴があります。

誕生の経緯

生産性向上チームは 2015 年に誕生しました。

サイボウズではそれまで、各プロダクトチームで改善活動(デプロイパイプラインの構築や自動テスト)を行っていました。改善の仕組みはうまく回っていたのですが、開発チームで活動が閉じてしまっており、チーム横断の開発基盤を整える必要性を感じていました

例えば、当時は複数の開発チームが 1 つの Jenkins を共同で利用しており、各チームが自由にその Jenkins を変更していました。このため、任意のチームが新しいプラグインをインストールすると、他のチームの CI 実行が失敗するようになってしまうという問題が起きていました。また、厳密に管理している人がいなかったためバックアップも存在しておらず、Jenkins が稼働しているマシンに何か問題が生じると、二度と復旧できなくなるリスクを抱えていました。

また、あるチームで培った改善のノウハウが他のチームに共有される機会がなかったため、自動テストを CI 上でどんどん実行できているチームがある一方、他のチームではテストの自動化がまったく進まないという状況が発生していました。

開発基盤や改善の取り組みはプロダクトの進化につながり、お客様に価値を提供していくためには重要です。しかし、そこに時間を割けている人はいませんでした。そういった問題意識から、生産性向上チームが誕生しました。

画像1
5 年で 5 倍になりました

日々の業務

探求タイム [毎日]

午前中に、個人で自由に探求する時間を設けています。特にテーマに縛りを設けず、知見を広げることによって、よりよい方法で問題解決ができるようにすることがねらいです。各メンバーが取り組んでいる内容は kintone のスレッド上で共有するようにしています。

デイリーミーティング [毎日]

昼前に、前日に行ったタスク、今日行うタスクを簡単に共有し、各メンバーのスケジュールを確認します。兼務メンバーが多く予定が不定なため、このデイリーミーティングでその日のモブプログラミングの予定を入れ、作業可能な時間を把握するようにしています。

モブプログラミング [毎日]

モブプログラミングとは、複数人で同じ画面を見てプログラミングを行うことです。ドライバーと呼ばれる人が操作をし、ナビゲーターと呼ばれる人がドライバーに指示を与えます。

生産性向上チームでは、タスクをモブプログラミングで進めます。作業が完了するとその場で Pull Request を出し、CI によるテスト通過後に、生産性向上チームで判断できる場合はマージまで行います。 また、チームメンバーの働く場所がそれぞれ異なるため、コミュニケーションロスが無いように、各自の席でウェブ会議ツール(Zoom)の画面共有機能を利用してモブプログラミングしています。25 分作業→5 分休憩→ドライバー交代を繰り返します。

画像2
モブプロの様子

Productivity Weekly [毎週]

毎週水曜日に生産性向上に関する記事や、GitHub、AWS、CircleCI などの更新情報などを見ていく会です。参加メンバーは自由なので、さまざまなチームの人たちでワイワイやっています。事前にみんなが気になった情報を kintone 上に共有し、生産性向上チームが持ち回りで進行を行います。

ここで得た知見は Twitter の #cybozu_productivity_weekly ハッシュタグおよび Zenn で発信しています。

ふりかえり&プランニング [毎週・毎月]

毎週金曜日に、その週のふりかえりと翌週のプランニングを実施しています。対応したタスクを振り返ったり、KPT で気づきを共有したり、チームの今後について話し合ったりしています。振り返りで出た改善案はとりあえずやってみるの精神で実践してみて、良さそうなら継続していくようにしており、チーム改善に対するフットワークがとても軽いです。そのため、生産性向上チーム自体の生産性を継続的に向上させることができています

例えば、上記で説明したモブプロはもともと 5 人全員で行っていましたが、ふりかえりの場でタスクの消化速度を上げたいという意見から、2 〜 3 人ずつに別れ、25 分ごとに人をシャッフルするように改善しました。それにより全体的なタスクの消化速度は上がったのですが、今度は交代時のコンテキストスイッチにかかるコストが大きくなり、1 つのタスクに対してタスク開始から完了までのリードタイムが長くなってしまいました。そのため 25 分ごとに人をシャッフルしていたところを 1 日ごとに変えることで、コンテキストスイッチによるコストを減らしてリードタイムを短くできました。

このように、トライアンドエラーを繰り返してフィードバックループを回すことで、そういった細かい改善を継続的に行っています。

もくもく会 [毎月]

毎月最終月曜日に、他チームともくもく会の時間を設けています。もくもく会とは、普段の業務から一歩離れて技術を探求したり、業務の延長で自由に改善活動を行ったりする会です。最後は全員で何をやったか共有します。

開発チームの支援

開発チームから相談を受け、知見を共有したり、実装を手伝ったりします。いくつかの例を以下に示します。これ以外にも多くのチームとの関わりがあります。

開発基盤の構築・運用

生産性向上チームでは、さまざまな開発基盤の構築・運用を行っています。いくつかを以下にあげましたが、ここに載せてないものが他にたくさんあります。

AWSマルチアカウント管理

社員が利用する AWS アカウントの管理を行っています。また、マルチアカウント構成によるシングルサインオンとチームに委譲できる権限管理のしくみを開発・運用しています。

オートスケールする GitHub Actions セルフホストランナーの構築・運用

オートスケールする GitHub Actions セルフホストランナーを構築し、運用しています。

CircleCI Serverの管理

サイボウズではクラウド版とオンプレ版の CircleCI を利用しています。 オンプレ版である CircleCI Server のメンテナンスを生産性向上チームで行っています。

リリース管理システムの開発・運用

各プロダクトのリリースを管理するシステムの開発・運用を行っています。

勉強会への参加・登壇

社内外の勉強会への参加・登壇も業務として扱います。登壇資料の作成なども業務中に行い、チームでレビューします。

その他

他にも色々活動しています。詳細はブログやスライドをご覧ください。

We're hiring!

生産性を上げることが好きな方をお待ちしております!Zoom でのコミュニケーションがメインなので、働く場所は関係ありません!どこでも歓迎です!

カジュアルにお話しが聞きたい場合は、お気軽に Twitter などでご連絡ください!

記念撮影