見出し画像

ROUTE06の開発環境

リモートワーク前提の開発組織として創業から2年半が経過し、メンバーも順調に増えていく中で、利用する技術や開発体制、開発の進め方などを試行錯誤し続けています。この記事では、現時点におけるROUTE06の開発チームの環境、利用技術やチームの体制などをご紹介します。

リモートワークを前提に、GitHubを活用

ROUTE06では、創業時より全社でリモートワークを採用、東北から九州まで日本各地のチームメンバーがオンラインでソフトウェア開発を進めています。
全社ワークスペースとしてGitHubを採用、SlackやFigmaなどのオンラインコラボレーションツールを活用し、社内全体での情報の見通しの良さとオンラインでの非同期コラボレーションを大切にしています。
根底にある考え方として、開発者にとって働きやすい、適度な遊び心と効率化が共存した状態は、多くの人にとっても働きやすい環境であると考えています。

あらゆる産業の大手企業向けに提供する、自社プロダクトの開発

詳しくは後日公開予定ですが、ROUTE06では自社プロダクトの開発を進めています。
創業から2年間の実績とインサイトから、プロダクトのコンセプトを設計し、ソリューションの方向性を決定して、実際に自社プロダクトとして開発していく方針が整いました。いわゆるHorizontal SaaSのように、あらゆる産業の大手企業で活用される、商取引を支えるプラットフォームを目指しています。
今後は自社プロダクトの開発と、それを広く利用していただくための一連の取り組みが主な活動となります。

利用技術

以下の内容は全て本記事公開時点でのものであり、より良いツールや言語・フレームワークがあれば柔軟に相談しながら適材適所で入れ替えていきます。

開発言語・フレームワーク
Kotlin、Spring Boot、TypeScript、Next.js

これまでは開発プロジェクト単位での裁量が大きく、開発をリードするエンジニアが選定していました。Ruby on Railsで開発していたプロジェクトもあれば、NestJSのプロジェクトもあります。
自社プロダクトの開発が本格開始し、今後組織が拡大した場合に学習効率やチームのパフォーマンスを考えたときにある程度収束させた方が良いと考え、言語の特性や将来性などの観点で評価した結果、現時点ではこの組み合わせでの開発を進めています。
他の言語やフレームワークでは経験があるものの、上の言語やフレームワークでの開発は未経験のメンバーもいるのですが、みんなで学習しながら開発しています。

クラウド環境
主にAWSを利用していますが、一部ではGCPも (主にBigQuery利用のため) 利用しています。

エディタ
原則自由、会社で購入補助もあります。Springでの開発に合わせて、IntelliJ IDEA Ultimateを試用中です。

課題管理
GitHubとZenhub
プロダクトマネージャーを含めた全員がアクセスし、仕様に関する議論をIssueで行ったり、仕様をテキストでリポジトリ管理し、Pull Requestで改善するなど、日々活用されています。

ブランチ戦略
GitHub Flowが多いですが、一部のプロジェクトではリリースタイミングをコントロールしたい関係でGit Flowに近いものを採用しているケースもあります。

開発・レビュー体制

アジャイル開発を基本としつつ、スクラム開発を採用している開発プロジェクトもあります。
レビュー体制に関しては、開発プロジェクトの規模、開発内容、プロジェクトチーム内のニーズにあわせてそれぞれで異なっています。中にはスピードを優先してレビューを最小限にし、少人数でプロトタイピングを行うプロジェクトもあれば、複数人でレビュー体制を組んでいるプロジェクトもあります。最近では、Pull Requestベースで複数人でのレビューを行うプロジェクトが増えています。開発仕様書のMarkdownファイルをGitHub上で管理、エンジニアだけでなく全員でPull Requestを送ることなども。

テキストベースで会話するほかに、議論についてはGoogle MeetやZoomでのオンライン会議、Slackのハドルミーティングも積極的に活用することで、同期・非同期のコミュニケーション手段を適切に使い分けるよう意識しています。

チームでの連携

一般的なSaaSとは異なり、ROUTE06が開発するプロダクトはカスタマイズを前提とした部分が含まれます。また、大手企業の事業内容や現場のオペレーションに深く入り込むため、長期に渡り伴走し続けるという特徴があります。関わらせていただく事業のフェーズも、スタートしたばかりのものから成熟したものまで様々です。

必要な知識やスキルが開発プロジェクトによって異なるからこそ、最も力を発揮できる働き方を個人としてもチームとしても大切にしています。例えば、仕様検討の段階から早めに情報が得られた方が嬉しい場合は、プロジェクト初期から会議にオブザーバー参加いただくこともできますし、要件が固まった段階で集中的にコードを書く部分から関わっていただくこともできます。まだまだ少数のため、明確な役割分担は行っていません。
開発規模に応じてエンジニアメンバーがアサインされますが、その際にも志向性を踏まえて相談しながら役割を決めていきます。

個人とチームの両方が最も力を発揮できる関わり方を

挑戦したいことに対してやりたいと手を挙げて実際に取り組める、チームとしてのあるべき姿に合わせて自身の関わり方が提案できる、両方が実現されて初めてチームとして、個人としてのパフォーマンスが発揮できると考えています。
顧客と直接話したい、コードに集中したい、人の成長に関わりたい、自身のスキルアップに集中して取り組みたい、バックエンドに集中したい、フルスタックでやりたい…など、志向性は様々です。自分自身が苦手だと感じることは、他のメンバーにとっては得意なことかもしれません。チームの生産性や成果の最大化を考えると、自ら関わり方を提案していくことが他の人への機会提供になり、適切なコラボレーションを生むことがあります。
仮に一時的にチームのパフォーマンスが下がったとしても、長期的に見るとチーム全体のためになるような選択を取れるように、余白のある組織でありたいと思っています。

どんなバックグラウンドの人がいるのか

スタートアップからメガベンチャーまで幅広くいろんな経験者が在籍しています。事業会社経験のあるメンバーも多く、入社理由を聞いてみると「0→1の開発ができる」「いろんな技術を使って開発ができる」ということで、ものづくりに関心の強い方が集まっています。
実際の業務でも、事業の立ち上げ初期、要件定義の段階から関わりつつ、リリース後のグロースも含めて事業の立ち上げに伴走し続けるため、事業会社での経験が生きる機会が多くあります。 一方で、顧客企業を巻き込みながら推進していくところで受託開発の経験も生きることから、あらゆる人にとって活躍の機会があります。

開発組織としての課題

世の中のニーズに対してエンジニアが不足、それに起因して課題が生まれているのが現状です。品質を改善して安定稼働するシステムの開発、新しい技術への挑戦、リサーチ、より良いアーキテクチャの設計、事業に深く関与、グロースのための提案など、取り組みたいことはたくさんある一方で、現在の規模では対応しきれていないのが現状です。
適度な余白、ゆとりを保ちつつ、最大限楽しく開発していくために。チームとして成長する組織を一緒に作っていただける方、新しい機会を探している方、ぜひ一緒に開発しましょう。

最後までお読みいただきありがとうございます。
ROUTE06の最新情報をTwitterで発信しています。ぜひチェックしてみてください!


# カジュアル面談 
ROUTE06についてより詳しく話を聞いてみたい!という方がいらっしゃいましたら、ぜひカジュアル面談でお話しましょう。
以下「ルートシックスラジオ」ページ内にて詳細をご確認いただけます。

#その他の記事