😌

開発組織にゆとり時間を導入した話

2021/12/01に公開

https://qiita.com/advent-calendar/2021/kaonavi

この記事は カオナビ Advent Calendar 2021 1日目です。

はじめに

はじめまして、カオナビCTOの松下( @matsukaz )です。

今年はカオナビとして初めて Advent Calendar をやることになりました!
メンバーが集まるか不安でしたが、プロダクト開発を担っているプロダクト本部全体に声をかけた結果、

  • エンジニア
  • EM
  • マネージャー
  • ディレクター
  • デザイナー
  • QA

と、幅広い職種のメンバーが参加してくれることに!
どんな内容を書いてくれるのか、今からとても楽しみです😆
Advent Calendarを通して、少しでもカオナビの雰囲気や取り組みが伝わると嬉しいです。

というわけで1日目、タイトルの通り「開発組織にゆとり時間を導入した話」をしていきます。

ゆとり時間とは

皆さんはエラスティックリーダーシップというリーダーシップモデルをご存知でしょうか?

https://amzn.to/3E5B2Hq

チームにはサバイバルフェーズ・学習フェーズ・自己組織化フェーズの3つのフェーズがあり、リーダーはチームのフェーズに合わせたリーダーシップスタイルを取る必要があるという考え方です。
書籍では、各フェーズから次のフェーズに向かうためのポイントなども紹介されているのですが、その中でもサバイバルフェーズから学習フェーズに向かうために必要な「ゆとり時間」について、以前から課題に感じていました。

カオナビでは積極的に業務の仕組み化・効率化を図り、残業を良しとしない働き方をしています。

https://speakerdeck.com/kaonavi/introduction-for-engineer

そのためカオナビでは残業はほぼありませんし、スケジュールもこまめに見直しているため、サバイバルフェーズには当たりません。
ただ、生産性の向上や成果を意識するあまり「ゆとり時間」がなく、学ぶ時間は業務外の各自の時間に委ねるしかない状態で、学習フェーズとも言えない状況でした。

スナバの導入

そこで、プロダクト本部では「スナバ」という制度を導入しました。
以下は、「スナバ」を導入した際の社内資料の抜粋です。

「スナバ」を導入した直後は、開発スケジュールの調整が上手な一部のメンバーしか活用できていませんでした。しかし最近では、チームとして開発スケジュールを調整できるようになり、活用しているメンバーも増えてきた印象です。
実は今回のAdvent Calendarも、みんなで「スナバ」の時間を活用して業務時間内に書いています。
素晴らしいですね😊

また要望の多かった、自由に利用できるAWSアカウントもスナバ用に発行しており、自己学習を支援する環境も合わせて整えています。

スナバの活用例

「スナバ」の具体的な活用例としては以下のようなものがあります。

  • 輪読会
  • 自己研鑽
    • 市場価値向上
    • 資格取得
  • エンジニア勉強会の資料作成
  • フロントエンドのテストを書いてみる会
  • サーバーサイド道場
  • 開発における基礎知識を言語化
  • 業務効率化の取り組みや開発・調査
    • 朝会のファシリテーターを自動通知するSlackApp
    • 勤務状況を自動報告するSlackApp
    • ブランチの自動マージ(最新化)
    • スナバ用AWS環境の日別のコストを自動通知するSlackApp
    • Zoomで開催した全社スプリントレビューの動画を自動共有
    • CIでOSSライブラリを管理
    • PHPのEnumからTypeScript用の対応する定数を自動生成
    • SonarQubeを利用したソフトウェアメトリクス測定&可視化ツール
    • CI/CD改善
    • 既存のシェルスクリプトのGo書き直し
    • Docke有償化に関する代替案調査

私自身も「スナバ」を活用しており、その一つの例としてMessage Screenというツールを開発しています。
Slackのメッセージが画面上にニコニコ動画風に流れるというもので、Zoomで画面共有しながら話す際に、視聴者の反応も共有しながら話せるというものです。

当初は同じような機能を提供している Comment Screen を利用していたのですが、センシティブな内容など投稿されると情報流出の観点で怖かったので、社内用により安全に利用できるものを自作してみました。

そのうちOSSで公開できればと思っていますので、せっかくなので利用方法とアーキテクチャを少しご紹介します。

  1. SlackアプリでMessage Screenのイベントを作成すると、専用のイベントID付きのメッセージがSlackに投稿される
  2. 画面共有する人は、Message Screenアプリを起動してイベントIDを指定して接続
  3. 先ほど投稿されたSlackメッセージにスレッドで返信すると、画面にメッセージが表示される

社内のエンジニア勉強会を中心に利用してもらっていて、スレッドへの返信が200件を超えるなど、なかなかの盛り上がりとなっています😊

アーキテクチャは以下の通りです。

  • デスクトップアプリ(Mac/Windows)
    • Electron
    • TypeScript
    • React
  • バックエンド・インフラ
    • API Gateway (HTTP/WebSocket)
    • Lambda (TypeScript)
    • CDK (TypeScript)
    • DynamoDB On-Demand

普段の業務では利用できない技術に触れたり、みんなで利用してもらえるツールを作ったりできるのはとても楽しいし盛り上がりますね!

他にも「スナバ」でPoCをしていた企画が本格的なプロジェクトとして立ち上がったりと、活用の幅も広がっています。

まとめ

カオナビでは「スナバ」を導入したことで、開発組織にゆとり時間を作り出すことができました。
結果、学習しながら業務をこなせる状態となり、学習フェーズに向かうことができてきたのではないかと思います。

一方で、業務時間が削られて生産性が低下したのではないかという心配もありました。
ただ、いまのところそのような問題は見受けられず、むしろゆとり時間ができたことで

  • 良い気分転換になる
  • フロントエンドからバックエンド、あるいはその逆で、得意領域を超えた技術を学びだす人が増えた
  • 他の人と一緒にスナバを活用することで、コミュニケーションの頻度が増えた

など、様々な良い効果も生まれたようです。

せっかく用意した制度なので、自ら活用方法を考えながら個人としても組織としても成長し、学習フェーズから自己組織化フェーズに向かっていけることを期待しています。

それでは2日目の記事もお楽しみください!!👍

Discussion