フルスタックによって越境しやすく、意思決定も早く軌道修正も容易になり、人材流動性も高くなる
ライアントの考え方とAPI開発の考え方は全く違うので、それらは理解しなければいけないが 、少なくとも言語による演算記述の違いであったり、イディオムの特徴などは開発文脈に関係なく踏襲できるため、容易に読み解くことができる様になる。
言語が共通であることによって、頭の切り替えに必要なコストが激減する。筆者は昔クライアントをFlutterでDart、APIをRailsでRubyといった環境で開発をしていた経験があるが。その頃と比較すると、日々圧倒的な開発効率の高さを実感している。 言語統一の開発形態が生み出す恩恵は、思考のスイッチングコストやイディオム理解の効率性だけでなく、越境のしやすさにも大きく貢献している。 領域を越境できる1人のエンジニアと、各領域に張った3人のエンジニアが1つの機能開発に揃い踏みで取り組んだ場合を比較すると、前者の方が圧倒的に早く機能開発や改善のサイクルを回すことができる。それは調整コストがなく、意思決定を即断で行えて、軌道修正も容易になるからだ。 前提や背景にもよると思うが、開発効率の高さはソフトウェア開発の大きな武器であり、ソフトウェア企業における競争力の源泉になる。
言語統一開発という形態をつくることは、高いアジリティを生み出せる状態に繋がり、それは結果として事業自体の大きな競争優位性になるという点に、大きな可能性を感じている。
これは今後の開発形態のロールモデルになりうるだろう。
Ubie では、創業当初から Server-Side Kotlin を推進してきましたが、全社的な技術選定を再度行い、これからは Go と Node.js を中心とすることにしました。
これまで Ubie では技術スタックを発散させてきていて、現在は Kotlin、Go、Node.js、Ruby、Python のバックエンドサービスが動いています。以前は新規開発が多く、それぞれに携わるメンバーが技術選定をすることにより、最大瞬間風速を出せるなどのメリットがありました。しかし、現在では弊害が目立ってきています。
まず、事業成長に伴って運用の重要性が増しています。人材が潤沢とは言えないスタートアップにおいて、様々な技術スタックを安定運用することはコストが高すぎると感じています。ベストプラクティスの整備や開発支援の仕組みづくりのコストも高いです。
また、「プロダクト開発エンジニア」としてフロントエンド、バックエンドの技術領域を問わない形での新規採用を進める中で、その人材流動性も阻害してしまっています。 そのため、これからは技術スタックを収束させていくこととし、その選定を行いました。
アセンドでFullTypeScriptアーキテクチャを利用して感じるメリット、以下の3点を中心にご紹介しました。
モジュールの共有
フロントエンド/バックエンド間のコンテキストスイッチ負荷の軽減
エンジニアが不得意な領域の開発へ臨む際の学習コストの削減
しかし、それぞれそのメリットを享受するには気を付けなければならないポイントがあり、乗り越えるための工夫が必要です。当日はクローズな場で詳細にお伝えしましたが、本記事でも簡単に紹介します。
関連