Gaudiy Tech Blog

Gaudiyの技術、開発組織、カルチャーについてお伝えするブログです

Gaudiyのエンジニア組織の「今」を紹介します!(2023年6月時点)

こんにちは!ファンと共に時代を進める、Web3スタートアップのGaudiyでエンジニアをしている勝又(@winor30)です。現在は、代表Dev(技術責任者)として、エンジニア組織全体の体制づくりや技術選定などを担っています。

Gaudiyの開発組織では、ビジョンである「ファン国家」を実現していくために、技術革新と最高のユーザーエクスペリエンスの追求を目指しています。

この記事は、Gaudiyという社名はなんとなく聞いたことがあるけど、エンジニア組織についてはよく知らない人に向けて、組織体制や開発指針、開発カルチャーなどをご紹介してみたいと思います。

Gaudiyに興味を持ってくださった方や、エンジニアの組織づくりを担っている方に、ご参考になれば幸いです!

1. Devチーム(エンジニア組織)概要

Gaudiyの開発組織には現在、フルタイムで約20人のエンジニアが在籍しています。バックグラウンドは多種多様で、フロントエンド(FE)寄り:バックエンド(BE)寄り:Unity = 3:5:1 くらいで構成されています。

チーム内には、Goやデザインエンジニアリングなどの特定領域にスペシャリティを持ったエンジニアや、プロダクト開発のためならなんでもやります!というスタンスのフルスタックなエンジニアまで幅広くいます。

私たちが取り組んでいる技術領域は、主に以下のようなものです。

  • 通常のフロントエンド(FE)Next.js、バックエンド(BE)Go x gRPC & TypeScript x GraphQLを中心としたWeb開発
  • より新しいファン体験を実現するための、以下の技術領域を使った開発
    • Unity、WebGL
    • Blockchain(Solidity、wallet)
    • Generative AI

この規模のスタートアップにしては、幅広い技術領域に携わっている会社だと思います。これらの技術を駆使しながら、ユーザーに新しい体験を提供する「Gaudiy Fanlink」というファンコミュニティプラットフォームを開発しています。

2. 最も大切にしていること:複雑性への挑戦と品質の追求

Gaudiyのエンジニア組織では、複雑性への挑戦と品質の追求を最も重視しています。

なぜなら、中長期的に開発組織の総生産力を最大化するためには、複雑性に立ち向かいながら、ソフトウェアの保守性と堅牢性を向上させることで、質とスピードを両立させることが不可欠だからです。

もちろん、プロダクト開発組織として最も大事なことは「プロダクトへのアウトカム最大化」だと考えていますが、このアウトカムを最大化するためには、エンジニア組織として「開発生産性を最大化すること」が重要です。その実現には、複雑性への挑戦と品質の追求が必要だと考えています。

元々は、プロダクト開発組織という一括りになっており、一定の規模感になるまでエンジニア組織が明確に存在していませんでした。その結果、技術負債や複雑性に対するマネジメントが、エンジニア個々人の努力でなんとなく成り立っている状態でした。

ですが、この複雑性がエンジニアのELTV(Employee Lifetime Value)を下げてしまったり、ソフトウェアの内部・外部品質の低下やDeveloper Experienceを下げてしまったりと、問題になっていました。

そこでエンジニア組織が明確にできたタイミングから、ソフトウェアの複雑性への対処に責任を持ち、ソフトウェアの品質を向上させることをエンジニアの行動指針として取り入れました。

3. 複雑性に立ち向かうための2つの指針

まず、そもそも複雑な前提・仕様だと複雑性が高くなってしまうため、前提を疑い、時には仕様を変えたり、削ったりして、前提となる複雑性を下げることが重要です。本質的な複雑さはドメインの複雑さに起因するため、複雑でないドメインにすることが、結果的にソフトウェアの複雑性を下げることにつながります。

次に、複雑なドメインを保守性・堅牢性の高いソフトウェアに落とし込めるように、エンジニアとしての技術力を高めることが大事です。

前提の複雑性を減らしても、プロダクトのアウトカム最大化を優先に考えると、複雑なドメインをソフトウェアに落とし込むケースは存在します。その場合は、エンジニアとしての技術力や設計力が「質とスピード」の両方を高めていく重要な要素になってくるため、それらを向上させることが重要です。

これらの方針は、エンジニア組織だけではなく、プロダクト開発組織やビジネス組織にもその重要性を理解いただいてるので、会社全体としての優先度も非常に高くなっています。

4. 開発組織のチーム構成

次に、Gaudiyの開発組織の体制についてご紹介します。現在、下図のように「フィーチャーチーム」と「開発横断チーム」の2種類で構成されています。

4-1. Feature Team

Feature Teamは、機能開発を行い、ユーザーに価値を提供することを目的としたチームです。フルサイクルエンジニアをベースとし、設計・開発・運用・QAなどのサービスライフサイクルを1つの開発チームがすべて担当します。

クラウド化やコンテナ技術、開発系ツールの進化、DevOpsの浸透などによって、1人のエンジニアが対処できる範囲が急速に広がっているため、Gaudiyではアジリティの高いチームを増やすために、フルサイクルエンジニアが重要であると考えています。

特に、最近のGitHub Copilotを始めとしたAIを使ったツールによる開発生産性の向上は強烈なポテンシャルがあり、Gaudiyはこのテクノロジーの可能性を信じてフルサイクルエンジニアを推進しています。(よければ、こちらの記事「GitHub Copilot 導入して1ヶ月経ったので振り返ってみた」をご参照ください。)

また、Feature Team内では、サービスライフサイクルを円滑に回すために「役割」を設定しています。各サイクルに対する責任者として、以下の役割を設定しています。

  • Dev Leader:Build(設計)とDeploy(デリバリ)に責任を持ちます。システムの複雑性を増加させ、チームの開発競争力が落ちることを防ぐ責任も持っています。
  • ScM:アジャイルメトリクスの可視化と問題検知、開発プロセス全体の問題検知と改善サポートを行います。
  • QA Lead:QAの結果に基づき、ソフトウェアが仕様通りデプロイされることに責任を持ちます。
  • Metrics & Ops Lead:Opsプロセスで発覚した問題をチームでもれなく処理し、ソフトウェアメトリクス・ログが正しく取得されていることを保証します。

また、各チーム内のサイクルの責任者(Dev Leader、ScM、QA Lead、Metrics & Ops Lead)に加えて、各チーム横断のリーダーも存在しており、各サイクルでの改善や課題がチームにサイロ化しないような組織構造となっています。

4-2. 開発横断チーム

開発横断チームは、開発生産性を向上させることを目的としたチームです。

Feature Teamは、工夫をしないとただ役割をたくさん持ったチームになるため、設計・開発・運用・QAなどの各サイクルをより円滑に回せるようにするツールやプロセスの洗練が必要です。

これらの構築・改善に責任を持つ役割として、開発横断チームが活動しています。

開発横断チームは、以下のような取り組みを実施して、開発生産性を向上させます。

  • 各Feature Teamが使用する共通のツールやライブラリの開発・メンテナンス。これにより、各チームが効率的に開発を進めることができます。
  • 開発プロセスの改善やベストプラクティスの導入のサポート。各チームが円滑に開発を進めることができる環境が整えています。
  • ナレッジ共有を促進し、各チーム間での情報交換の促進。チーム間での連携を向上させ、全体としての開発力を向上しています。
  • パフォーマンス改善やセキュリティ対策など、全チームで共通の課題に取り組むことができます。

開発横断チームの活動によって、各Feature Teamが高い開発生産性を維持し、より質の高いプロダクトをユーザーに提供できるようになります。

このように、Gaudiyのエンジニア組織はFeature Teamと開発横断チームの2つのチームで構成され、それぞれが異なる役割を担っています。これらのチームが連携することで、複雑性への挑戦と品質の追求を目指しています。

5. 開発文化・制度

続いて、開発文化・制度をご紹介します。

Gaudiyではリモートでのペアプログラミングや各技術領域の勉強会をよく実施しています。こうした取り組みを通じて、エンジニアの基礎力を向上させ、複雑なドメインにおいても堅牢性・保守性の高いソフトウェアを開発することを目指しています。

5-1. Gaudiyらしいエンジニア組織カルチャーの構築

Gaudiyには「Fandom」「New Standard」「DAO」という3つのバリューがありますが、エンジニア組織としても、Gaudiyらしい組織文化の構築に注力しています。その取り組みとしては、採用活動やクレドなどが挙げられます。

カルチャーマッチを重視する採用活動では、スキルレベルだけでなくカルチャーマッチも選考基準として考慮しています。また、Gaudiyで特徴的なのが「お試し入社制度」です。Gaudiyのカルチャーとミスマッチがないかを、Gaudiy側と採用候補者側の双方で確認しています。

また、どのような価値観や行動がGaudiyらしいかをクレドとして明文化し、相互理解を深めることを重視しています。

例えば、「たのピンチ」というクレドは、挑戦を続ける中で避けられない大きなピンチや問題、課題に直面した際に、それを楽しんで解決に取り組むことが重要であり、それがより良い結果・成果につながるという考え方を示しています。

5-2. リモートでのペアプログラミング

Gaudiyでは、VSCodeのLive Shareを使用してリモートでペアプログラミングを実践しており、1日中ペアプロを行うチームも存在しています。ペアプロを積極的に使うことで、エンジニア同士のスキル・コンテキストの共有や、コード品質の向上ができる上、チームワークも強くなると感じています。

5-3. FE、BE、Blockchainの勉強会

Gaudiyでは、フロントエンド(FE)、バックエンド(BE)、ブロックチェーン(Blockchain)技術に関する勉強会を、それぞれ週1のペースで開催しています。それぞれ強みの違うエンジニアが、互いに知識やスキルを共有することで、組織の技術力向上を目指しています。

具体的には、業務を通して学んだナレッジを資料やモブプロを通してシェアしたり、新しく調べた技術や手法に関してシェア・ディスカッションなどを行っています。

例えば、「gRPC × Go × Node.js におけるエラーハンドリングの実現方法」という記事は、実際に勉強会で取り上げられた内容を元にしています。

6. Gaudiyのエンジニアとして働く魅力

最後に、エンジニアメンバーに聞いたGaudiyで働くことの魅力をご紹介します。

ひとつめは、エンタメ領域でファン活動を最大化するような革新的なプロダクトを開発できることです。

ファンとクリエイターの間のつながりを強化し、エンタメ体験をより楽しく、魅力的なものにするプロダクトが作れます。特にエンタメ領域が好きで、こういった世界を実現したいと思う方は、この部分に強い魅力を感じて入社を決める人も多くいます。

ふたつめは、様々な技術領域を活用してプロダクトを開発できることです。

Gaudiyでは、Web技術だけでなく、Blockchain、Generative AI、WebGLなどの先端技術を組み合わせて、世の中にまだ存在しない新しいプロダクトを生み出すチャンスがあります。これによって、エンジニアは自分の技術力を高めると同時に、業界に革新的な影響を与えることができます。

3つめに、多様なスペシャリティやバックグラウンドを持った人が、エンジニアだけでなく他職種にもたくさんいることです。

なので、メンバー同士が領域をまたいで互いに学び合い、刺激を受けることができる環境があります。また、異なる視点やアイデアを持ち寄ることで、より優れたプロダクト、ソリューション、制度などを生み出すことができると考えています。

それぞれの興味ポイントにもよると思いますが、エンタメ領域が好きだったり、先端技術や革新的なプロダクトへの興味関心が高かったり、自己成長したい人にはおすすめの環境かなと思います。

また、Gaudiyの環境を通じて、業界に新たな価値を提供し続けるエンジニアになれることが、Gaudiyで働くエンジニアの真の魅力だと考えています。

7. まとめ

今回は、Gaudiyのエンジニア組織について紹介させていただきました。

まだまだ課題だらけではありますが、複雑性への挑戦と品質の追求を指針に、エンジニア1人1人が自律的に改善に動く文化があります。

開発体制や技術、カルチャーなど、少しでも興味を持っていただいた方は、ぜひ一度カジュアルにお話しさせてください!

site.gaudiy.com

site.gaudiy.com