Upgrade to Pro — share decks privately, control downloads, hide ads and more …

microCMSのエンジニア組織と文化

 microCMSのエンジニア組織と文化

microCMS

May 31, 2023
Tweet

More Decks by microCMS

Other Decks in Technology

Transcript

  1. #microcms_meetup
    大西 智也
    microCMSの
    エンジニア組織と文化

    View Slide

  2. 目次
    2
    ● 自己紹介
    ● 技術スタック
    ● チームと役割
    ● 雰囲気や文化、ワークスタイル
    ● 開発方針
    ● 生産性をアグレッシブに上げる取り組み
    ● 今後の展望
    #microcms_meetup

    View Slide

  3. 自己紹介
    3
    #microcms_meetup
    大西 智也 / Tomoya Onishi
    @Tomoya_Onishi
    エンジニアリングマネージャー/個人アプリ開発者
    iOS(Swift), React(TS), WebAPI(Golang)
    Appleプラットフォームが得意なエンジニア
    TomoyaOnishi

    View Slide

  4. 自己紹介
    4
    #microcms_meetup
    1位 未来志向
    2位 共感性
    3位 親密性
    4位 分析志向
    5位 回復志向

    34位 競争性
    ストレングスファインダー
    性格など
    ● 好きな食べ物:焼きそば
    ● 嫌いな食べ物:トマト
    ● 走れば間に合う電車には走らないタイプ

    View Slide

  5. 自己紹介(経歴)
    5
    #microcms_meetup
    ● 2013年 ヤフーに新卒入社
    ● 社内スタートアップを経験
    ● XP開発を経験
    ● CTO室にて技術の追求
    ● 2022年5月 microCMSに入社

    View Slide

  6. 自己紹介(経歴)
    6
    #microcms_meetup
    ● 2013年 ヤフーに新卒入社
    ● 社内スタートアップを経験
    ● XP開発を経験
    ● CTO室にて技術の追求
    ● 2022年5月 microCMSに入社
    ● SNSアプリ
    ● ヤフーメールiOSアプリ
    ● ライブコマース
    スモールチームでの開発経験
    企画、デザインも一緒に考える
    リードエンジニアとして様々なチームと連携

    View Slide

  7. 自己紹介(経歴)
    7
    #microcms_meetup
    ● 2013年 ヤフーに新卒入社
    ● 社内スタートアップを経験
    ● XP開発を経験
    ● CTO室にて技術の追求
    ● 2022年5月 microCMSに入社
    ● ヤフオク、PayPayフリマの開発
    ● アジャイル開発の一種
    ○ エクストリームプログラミング=XP
    ○ 企画から開発までのプラクティスの集まり
    ● ペアプロとテスト駆動、CI/CDなどの自動化
    ● テストの重要性と自動化、省略で生産性を向上
    ● コードレビュー省略による生産性の高さを実感
    一部の考え方を取り込んでいるので後ほど紹介

    View Slide

  8. 自己紹介(経歴)
    8
    ● 2013年 ヤフーに新卒入社
    ● 社内スタートアップを経験
    ● XP開発を経験
    ● CTO室にて技術の追求
    ● 2022年5月 microCMSに入社
    ● Web、アプリの技術トレンドのキャッチアップ
    ● 機械学習の実証実験
    ● その他
    ○ 企業内大学にて、リーダーシップや
    組織の知見を学ぶ

    View Slide

  9. 自己紹介(経歴)
    9
    #microcms_meetup
    ● 2013年 ヤフーに新卒入社
    ● 社内スタートアップを経験
    ● XP開発を経験
    ● CTO室にて技術の追求
    ● 2022年5月 microCMSに入社
    ● 開発本部の大まかな方針、ロードマップ
    ● 生産性向上の仕組み作り

    View Slide

  10. 目次
    10
    ● 自己紹介
    ● 技術スタック
    ● チームと役割
    ● 雰囲気や文化、ワークスタイル
    ● 開発方針
    ● 生産性をアグレッシブに上げる取り組み
    ● 今後の展望
    #microcms_meetup

    View Slide

  11. 技術スタック
    11
    ● インフラ
    ○ AWS
    ■ DynamoDB
    ■ Lambda
    ○ Amplify → Terraform
    #microcms_meetup
    ● Web API
    ○ Node.js → Golang
    ● Web フロントエンド
    ○ React

    View Slide

  12. チームと役割
    12
    ● プロダクト開発チーム
    ● バックエンド開発チーム
    ● Go移植チーム
    #microcms_meetup

    View Slide

  13. プロダクト開発チーム
    13
    #microcms_meetup
    ● 新機能の開発に特化したチーム
    ○ ストリームアラインドチーム
    ● 3.5人
    ● PdM、デザイナーと協業
    ● WebフロントだけでなくAPIも開発
    ● 複雑なものや中規模以上のものはペアで開発
    ○ リッチエディターv2は2人
    ○ 複数画像フィールドは1人
    ● 定例は週1のみ
    ○ 非同期ワーク
    ○ 自律した組織

    View Slide

  14. バックエンド開発チーム
    14
    ● インフラやWebAPIなど
    バックエンド開発に特化したチーム
    ○ プラットフォームチーム
    ● 1.5人...
    #microcms_meetup
    ● プロダクト開発チームの範囲外のほぼ全て
    ○ 開発環境の運用
    ○ 新機能のインフラ部分の開発
    ○ CI/CD
    ○ Terraform移行
    ● 他のチームを技術的にサポート
    ● 定例などはなく、自律してタスクを進める

    View Slide

  15. Go移植チーム
    15
    #microcms_meetup
    ● Node.jsで書かれたAPIをGolangに書き換え
    ● 副業で4人
    ● 設計や大まかな構造はバックエンド開発チームで整えた
    ● 定例などはなく、非同期コミュニケーション中心
    ● 半年〜1年単位の抜本的な技術改善

    View Slide

  16. 目次
    16
    ● 自己紹介
    ● 技術スタック
    ● チームと役割
    ● 雰囲気や文化、ワークスタイル
    ● 開発方針
    ● 生産性をアグレッシブに上げる取り組み
    ● 今後の展望
    #microcms_meetup

    View Slide

  17. ワークスタイル
    17
    ● 全社的に非同期コミュニケーションに比重を置いている
    ● タスク管理はClickUp
    ○ 誰が何をいつまでにやるかがわかる
    ○ 自分のタスクを自分で管理する意識
    ● 承認のようなものはない
    ○ チームで合意が取れれば問題ない
    ● microマネジメントしない(できない😅)
    #microcms_meetup
    自律した働き方が求められる

    View Slide

  18. #microcms_meetup
    雰囲気や文化的なところ
    ● バックエンド、フロントエンドのテックリード1名ずつ
    ○ 技術的な相談はいつでも気軽にできる
    ○ そういう雰囲気が醸成されている
    ● 勉強会や輪読会も活発
    ● もくもく会
    ● 買ってよかったものFM、AI FM
    18

    View Slide

  19. #microcms_meetup
    チーム間を超えたコミュニケーション
    19
    ● オープンかつテキストコミュニケーションに比重を置いているので問題を他人が見つけやすい
    ● 勝手にレビューされている状態に近い
    ● レビューや承認のようなものは最低限でいける

    View Slide

  20. 目次
    20
    ● 自己紹介
    ● 技術スタック
    ● チームと役割
    ● 雰囲気や文化、ワークスタイル
    ● 開発方針
    ● 生産性をアグレッシブに上げる取り組み
    ● 今後の展望
    #microcms_meetup

    View Slide

  21. 開発方針
    21
    ● 面倒な部分を省略or自動化して、楽しい部分を増やす
    ○ XP開発では、これを徹底していてモチベーションも生産性も高く、
    心理的安全性も高かった
    ○ プログラミングは楽しいが・・実際はそれだけではない
    ■ リリース作業、動作確認(N回)、コードレビュー、アラート対応、事故対応
    ■ 特にアラートや事故対応は精神エネルギーを使うので消耗する
    ■ 大きめの機能なら月曜日リリースでその前の土日から気がかりなんてことも...
    #microcms_meetup
    リリースに関するハードルは0にしたい

    View Slide

  22. 開発方針
    22
    ● 当然、単純にやらないにはできないので2つの取り組みで解決する
    #microcms_meetup
    ○ 自信を持ってリリースできるようになる
    (=心理的安全性の向上)
    ○ 必然的にシステムの安定性が向上する
    ○ 不具合やアラートが減り、事故対応が減

    ○ リリースの自動化
    ○ コードレビューをやめる
    ○ AI
    ○ etc…
    自動テスト 仕組み
    →楽しい時間が増える

    View Slide

  23. 開発方針
    23
    #microcms_meetup

    View Slide

  24. 開発方針
    24
    #microcms_meetup
    = 生産性の向上

    View Slide

  25. 目次
    25
    ● 自己紹介
    ● 技術スタック
    ● チームと役割
    ● 雰囲気や文化、ワークスタイル
    ● 開発方針
    ● 生産性をアグレッシブに上げる取り組み
    ● 今後の展望
    #microcms_meetup

    View Slide

  26. アグレッシブに生産性を上げる
    26
    ● 取り組み事例をいくつか紹介
    ○ AI
    ○ 自動テストの拡充とコードレビューの省略
    #microcms_meetup

    View Slide

  27. ChatGPT
    27
    ● ChatGPT
    ○ フル活用する
    ○ コードの自動生成
    ○ フォーマット
    ○ わからないことを聞く
    ○ 文章を考えてもらう
    #microcms_meetup

    View Slide

  28. ChatGPT
    28
    ● PRの概要を自動生成(Copilot for PRsリリース待ってます)

    View Slide

  29. ChatGPT
    29
    ● チームでプロンプトを緩く共有しベースラインを上げる

    View Slide

  30. GitHub Copilot
    30
    ● GitHub Copilot
    ○ コーディングは当然
    ○ フォーマットや文章を
    考える時にも使う
    ○ プライベートでも活用

    View Slide

  31. GitHub Copilot
    31
    #microcms_meetup

    View Slide

  32. GitHub Copilot Labs
    32
    ● Language Translation
    ○ Node.js→Golangへの書き換え
    ○ 性能が微妙だからと言って
    思考停止しない
    #microcms_meetup

    View Slide

  33. コードレビューをやめる
    33
    ● 発端はGo移植のコードレビューが溜まってしまっていたこと
    ● バックエンドの社員1人:業務委託4人
    ○ 一般的には社員がレビューしてリリース
    ○ 明らかに無理がある
    ○ 通常の思考だと開発チーム全員で分担やレビューの時間を決める
    ■ ダメではないが、違和感
    #microcms_meetup

    View Slide

  34. コードレビューをやめる
    34
    ● 実際指摘することって何かあるか?
    ● Go移植では設計や大まかなコードの構造は決まっているので大きくずれることはない
    ● レビューで動作確認まではしない
    ● レビューなしで生産性が向上することは体験していた
    ● 条件付きでレビュー不要とした
    ○ ユニットテストのカバレッジクリア
    ○ E2Eテスト
    #microcms_meetup

    View Slide

  35. コードレビューをやめる
    35
    #microcms_meetup

    View Slide

  36. 計測することも重要
    36
    ● 本質的なことではないが、効果があったのか
    なかったのか、説明できることも大切
    ● ChatGPTのおかげで低コストでできるように
    なった

    View Slide

  37. 目次
    37
    ● 自己紹介
    ● 技術スタック
    ● チームと役割
    ● 雰囲気や文化、ワークスタイル
    ● 開発方針
    ● 生産性をアグレッシブに上げる取り組み
    ● 今後の展望
    #microcms_meetup

    View Slide

  38. 今後の展望や考え
    38
    ● AIによって破壊的な生産性向上がもたらされた
    ○ ちまちま生産性を上げても仕方ない気持ちになったのでアグレッシブに考えている
    ● エンジニアリングマネージャーの仕事は多々あるが、引き続き生産性の向上を軸に
    ● 世間と同じことをやっていては同じ成長率
    ○ 他の会社の方が優れたエンジニアがいると考える方が妥当
    ● LLMの登場でプログラミングの部分では差をつけづらくなる
    ○ ワークフロー全体の効率化やこの組織ならいいものを作れるという気持ちの醸成などが
    より重要になる
    ● 組織が大きくなるとやりづらいことは経験しているので今のうちにトライ&エラー

    View Slide

  39. まとめ
    39
    #microcms_meetup
    ● 非同期ワークが浸透しており、タスク管理など自律したワークスタイル
    ● 新機能を開発するチームとそれを支えるチームで構成
    ○ ストリームアラインドチーム、プラットフォームチーム
    ● アグレッシブな生産性向上に挑戦している

    View Slide

  40. 採用情報
    40
    ● バックエンドエンジニア、プロダクトエンジニアを大募集!
    ● AWS、Terraform、Golang、インフラ、Web API、Webフロントが得意な人
    ● タスク管理など自律できる人
    ● フレックスタイム
    ● アディショナル休暇制度あり(法定有給に+10日)
    ● 経営陣も含めてプライベートも大事にするワークスタイル
    https://jobs.microcms.co.jp/

    View Slide

  41. Thanks :)
    41
    #microcms_meetup
    https://discord.gg/K3DPqw4EJ2
    @micro_cms

    View Slide