Choosing the right technology stack

tags
Tech Stack
author
category
em
mainImage
文字メイン 29.png
publishedAt
Nov 22, 2022
published
published
slug
choosing-the-right-technoloy-stack
authorDisplayName
Rodrigo Ramirez
notion image
 
Hello! My name is Rodrigo Ramirez, I’m a Full-stack developer at ReiwaTravel, and I had the opportunity and responsibility of selecting NEWT stack. Specially for the Backend and Frontend.
 
notion image
 
 
Selecting the technology stack, especially for a startup, could be crucial to determine the success of the product and the engineering organization.
We need to prioritize the short-term goals but at the same time, we should keep the long-term vision by understanding how our current decisions will impact our future growth.
We don’t need to start with a micro-service architecture from day 1, but at least understand that what we are doing today, will need to go from point A to point B someday.
And our goal is to make that transition the most smoothly possible without carrying a big technical debt.
Let me focus on 3 main factors that I consider important when choosing a technology stack, especially for a startup in an early phase.
 

① Product & Team

 
The first one will be to understand the company situation, current resources, and the product you have to build.
 
Are you expecting to have huge traffic from day 1? Are there any critical parts of your product that depends on a specific technology to succeed? Example blockchain, A.I, etc.?
 
You can't start using new technology without trying it before. Having the confidence to deliver a product to your customers and solve any technical challenge is essential. Unknowns will slow down the development speed.
We can start looking at the current member's experience or do a quick PoC to prove that the technology can achieve what the product needs to succeed.
 

② Engineer Market

 
After you have an idea of the stack that may fit better with your current team to achieve what the company wants, we need to analyze the selected technologies' engineering market situation.
 
Future Proof:
  • Many people using it and supporting it?
  • The trends indicate that it will be there for a long time? or is another alternative replacing it?
 
Recruiting Engineers:
  • If you need to hire more developers that master that stack quickly, Will they be easy to find?
  • Selecting a technology that is losing popularity will make the company less attractive to engineers.
 

③ Technology Stack

 
Finally, let’s talk about the selected stack.
 
Development Speed
Will an engineer need to master more than one programming language to build your product?
In an early phase, reducing and simplifying the options will help increase the deliverability speed and quality and allow you to share knowledge between engineers more easily.
 
Scalability & Maintenance
It's important to release the product quickly, but will the current stack support the product’s growth? This may be also related to the programming language, the architecture and tools/services selected.
 
 

About NEWT Stack

The combination of all these 3 factors was important in all the decisions about the stack we selected for NEWT.
 
If you are interested in our specific stack, please take a look at the following blogs:
 
NEWT iOSの新規開発における技術選定 2021年版
はじめまして、令和トラベル iOSエンジニアの松井 (@ippo_012) です。 令和トラベルには、グルメECの TASTE LOCAL をお手伝いしていたのをきっかけに、2021年の5月に1人目のエンジニアとしてジョインし、NEWTのiOSを担当しています。インタビューしていただいたので、詳しくはそちらへ! NEWT(ニュート)は 「スマートに海外旅行を予約する」プロダクトです。一番最初はホテル・航空券・その他アクティビティや保険等を組み合わせた パッケージツアー(正式名称は募集型企画旅行) を提供します。 旅行予約領域にはShopifyのような便利なプラットフォームが存在しないため、基本フルスクラッチで検索、在庫管理、料金カレンダー、予約、旅程管理等を作る必要があり、なかなか大掛かりなプロダクトです。プロダクトの概要については 弊社プロダクトマネージャーのふじさんが紹介しているので、そちらもご覧ください。 この記事では、 NEWT iOSの新規開発における技術選定 について、紹介したいと思います。 技術選定の話をする前に、チームについて紹介させてください。NEWT iOSは2021年12月時点で、フルタイム 1名(松井)、PP(※プロパートナー)さん2名、合計3名のiOSエンジニアとプロダクトマネージャー、デザイナー、その他のエンジニアで開発しています。コミュニケーションツールは主に以下を使用しており、基本的にフルリモート体制で開発を行なっています。 デザイン, ワイヤーフレーム: Figma, Miro オンラインMTG: Zoom, Google Meet ※令和トラベルでは、副業など業務委託でジョインしている方をプロパートナーさんと呼んでいます。 詳細の説明をする前に現在使用している主な技術を一覧にしています。2021年12月時点で以下のような技術を使用しています。 フレームワーク: SwiftUI(一部UIKit) パッケージ管理: Swift Package ManagerAPI: GraphQL 認証: Firebase Authentication CI/CD: Bitrise, TestFlight NEWTは前述の通り、 「スマートに海外旅行を予約する」 プロダクトです。初期はパッケージツアーの提供だけですが、今後様々な機能を実装することを想定しています。そのため、技術選定にはスケールのしやすさ等も考慮に入れています。 またDX担当のまがらさんが紹介しているように、令和トラベルでは テクノロジーに投資すること を重要視しています。 アーキテクチャ設計やデータモデリングは妥協せず最善な形を探求する それでいて大胆にアップデートし続ける仕組みと勇気を持つ その上で今回は、次のような観点をもとに技術選定を行いました。 技術的観点 生産性が高いこと 保守性があること スケーラビリティがあること テストがしやすいこと 人的観点 社内のスキルセットに合っているか コミュニティが発展していくか、人材が増えるかどうか 技術的にチャレンジングかどうか その他に次のような条件があります。 選定時点で、iOS、Androidのフルタイムエンジニアがそれぞれ1名 + PPさんもそれぞれ1名ずつ在籍 今回は技術選定した中で、次の4つを紹介したいと思います。 完全に0からの立ち上げだったので、まずはネイティブとクロスプラットフォーム(主にFlutter)の比較検討を行いました。 Pros・ネイティブAPIや、新機能を自由に使用できる・OSに則したユーザー体験を提供できる・SwiftUIの登場により、Developer Experienceは良くなっている・Swiftは高機能な言語・公式であること Cons ・開発リソースが多く必要になり、開発スピードは遅くなる Pros ホットリロード等の機能により、Developer Experienceが非常に良い Cons パフォーマンスはネイティブに比較すると劣る(改善されており、問題になるのは稀) 動作は擬似シュミレーションのため、若干違和感がある(気付く人は稀) 前提、個人でFlutterの開発経験もあり、Flutterに対しては非常に好印象を持っています。開発体験は圧倒的に良く、開発速度、Flutter自体の成長速度も魅力的なのでFlutter案も濃厚だったのですが、 カスタマー体験を追求するために、要求された仕様に対して、制限なく実現できる状態にしておきたかった ...
NEWT iOSの新規開発における技術選定 2021年版

# Tech Stack