🐕

チーム横断で1つのプロダクトを良い感じにしていくためにやっていること

2023/08/17に公開

はじめに

株式会社CastingONEでソフトウェアエンジニアをしている @takashabe です。普段はHR領域のSaaSをGoで書いています。
今回は複数チームで1つのプロダクトを作るにあたり、チーム全体で設計ポリシーを揃えるであったり、スキルの底上げをするための活動について紹介します。

開発体制について

前提として弊社ではLeSSを採用し、1つのプロダクトを複数チームで開発しています。

https://less.works/jp/less/framework

LeSS自体の詳細は割愛しますが、例えばマイクロサービス開発で見られるような「チームAはこのマイクロサービス専任」といったことはなく、各チームが全体をまんべんなく開発する方針となっています。
(これは現状システム自体がモノリスであることからも必然ですが、別途モジュラモノリス化を推進していたりするのでそれはまた別の機会に)

このことから、例えばシステム全体に影響があるドラスティックな設計変更や開発を加えたいとなったとき、チーム全体である程度合意が取れていないと進めづらくなってしまいます。

Modernize Backend会の取り組み

今回はバックエンド領域に閉じた話をしますが、チーム横断で Modernize Backend会 と称した会議体を開催しています。ここではまさに前述した以下のようなトピックについて話されてきました。

  • メインDBをMySQLからPostgreSQLへ移行
  • ソフトウェアアーキテクチャ
  • モジュラモノリス化
  • モノレポ化
  • GCPプロジェクトの再設計

ここで挙げたものは一部ですが、いずれもシステム・開発体験全体に影響を与える内容であることが分かると思います。

進め方

何度か進め方は変えてきていますが、現在は以下のような形です。

  • 参加者
    • 各チームのテックリード
    • 話したいトピックがある人
    • 興味がある人
  • 話す内容
    • 事前にアジェンダを用意し、話したいトピックがある人が書き込んでおく

以前は全員参加で、アジェンダは用意しつつもその場でトピックを募ったりしていましたが、開発者の人数も増えてきたこともあり、このような形に落ち着いています。

こういった取り組みにおいて大事なのは、形骸化しないようにすることだと考えています。特にトピックが全くない状態が続くのは、健全に意見が出せていないか、システムが安定して枯れているかのどちらかでしょう。
当然後者ではないので、なるべくトピックを出してもらい、それについて興味のある人に参加してもらえるような価値ある場としたいと思っています。

とはいえここについては泥臭く以下のようなことを行っているだけです。

  • 常にアジェンダを先に用意してSlackで告知する
  • トピックになりそうなネタを日頃からアンテナ貼って打診
    • これについては立場上 1on1 などで拾っている部分もあります

それでもかれこれ1年以上は会を継続しながら、冒頭書いた大きめのトピックについてもコンスタントに議論出来ています。
ありがたいことに事業が伸びてきているので、そういったフェーズなのかなという側面と、何より改善したいと思っている人たちが集まっていて最高という気持ちです。

勉強会の取り組み

またこちらは様々な組織で行われていると思いますが、社内勉強会や読書会を定期開催しています。
一例までに以下のようなものを取り上げてきました。

  • React
  • github.com/OWASP/Go-SCP
  • github.com/ServiceWeaver/weaver
  • Effective Go
  • Domain-Driven Design with Golang
  • ソフトウェア設計のトレードオフと誤り
  • GoでUnix系コマンド実装しようの会

勉強会については当然ぼくだけが主導しているわけでなく、各自興味のある(布教したい)事柄を適宜開催してもらっている状態です。
例えばモジュラモノリス化の布石として、ServiceWeaverのソースコードリーディングを行ったりしていました。

読書会では多様なバックグラウンドを持ったメンバーが集まっていることもあり、これまでの経験を元にディスカッションを行えて大変有意義です。一例までに読書会はこんな感じで読書メモと雑談を取って進めています。

読書会の一例

また全体的にやはり業務に関連した内容が多く、実際に設計の議論中に、取り上げた書籍の内容を引用したりといったことも行われるようになってきています。

まとめ

LeSSによる開発体制の紹介と、それにより複数チームで1つのプロダクトを作る上での横断の取り組みについて紹介しました。
ここで紹介したものはいずれもボトムアップで生まれてきたものであり、この記事を書いていて改めて良い開発組織だなぁと思っていました。

いつもの

株式会社CastingONE ではシステム全体をドラスティックに良くしていきたいソフトウェアエンジニアを募集しています。もし興味があればTwitterからでも構わないのでお気軽にご連絡ください!

https://casting-one.jp/recruit/engineer/

Discussion