What is a tech stack? Simply put it is a set of software components – technologies, tools, frameworks, and services, on top of which, an end-to-end product can be built. A tech stack forms the backbone of a software platform, and typically includes servers (backend), storage (databases, etc), service and API frameworks and finally (one or more) client app frameworks (such as browsers or mobile apps).
There is a wide variety of tech stacks being used and their relative merits are not obvious to people without tech backgrounds. No wonder entrepreneurs and founders often struggle when choosing a tech stack. We recommend simplifying the decision-making process by considering the following key factors while choosing a tech stack.
Functional Requirements
While shopping for a tech stack, do not get distracted by hype around latest trends or impressive enterprise scale tech stacks. One should ask the question, what is the scale and complexity of the software that one needs to build? Is it a consumer facing MVP product with typically low to mid-level functional/feature complexity or a large enterprise scale platform? For example, a small to medium sized mobile or web-based product may not require hyperscale data manipulation or complex algorithmic implementation. So, stick to lightweight and convenient development models for the above. For more robust enterprise applications, multi-layered and complex stacks just as Java, or .Net should be considered.
Go to Market (timeline)
When development time is at a premium, choose a tech stack that enables ‘rapid development’. Although this may compromise robustness and scalability but can reduce costs and development time significantly. For faster GTM, always challenge product/engineering leaders to ensure they have given sufficient thought to this dimension.
Building products based on third party integrations and cloud platform-based services (e.g. AWS, Azure) is another popular modern tactic to cut development time without compromising on quality.
Skill Supply (developers)
A robust tech stack adds little value unless a skilled programmer can leverage its strengths to build high quality software. Moreover, learning a new tech stack is non-trivial, and has implications on cost and delivery time. Hence, it is easier and cheaper to hire programmers from mainstream tech stacks. We highly recommended that available skills and expertise be a key consideration while choosing your tech stack.
Architectural Requirements
Modern cloud-based software is architected in a fundamentally different manner compared to legacy software. For cloud-based architectures, choose tech stacks with proven support on leading cloud platforms such as Amazon Web Services (AWS), Microsoft Azure or Digital Ocean.
Conversely an enterprise or corporate type architecture demands an entirely different set of capabilities. A mature commercial tech stack such as Java, .NET or Oracle – with proven track record, customer support and acceptance within the developer community make excellent candidates.
Performance and Scalability
Your tech stack should be flexible so that it can evolve/adjust to the everchanging requirement as the business grows. Ensure that your tech stack does not become a bottleneck considering the following (hypothetical) scenarios.
- Launch the product in a new geography quickly
- Scale up to support 5x more user load
- Quickly ship new features demanded by a growing user base?
Most startup products depend heavily on excellent user experience (UX) to capture customer loyalty. Your tech stack should include frontend technologies that enable the development of high class user interfaces with ease. Another important component of UX is the performance and responsiveness of the software. Not all tech stacks are well suited to building super-optimized user experiences, so think hard before deciding on a tech stack.
Examples
Lets consider the following (GCC based) tech startups and their tech stack choices.
Mobimatter – a telecom products aggregator platform (www.mobimatter.com)
Mobimatter needed to develop a flexible and scalable telecom products aggregator platform, while keeping the development costs low. The platform would facilitate easy and fast B2B integrations with various telecom partners.
Mobimatter selected Microsoft .NET & React Native as the primary tech stack. React native minimized the overhead of developing parallel apps for iPhone and Android, and .NET (as the web and backend platform ) allowed swift and cost effective development by leveraging Microsoft Azure platform and its associated larger ecosystem.
Careem (www.careem.com) and ServiceMarket (www.servicemarket.com)
Careem is the dominant ride hailing and mobility platform in the GCC and Carswitch is the leading home services marketplace in the UAE. They may operate in different verticals and have different requirements for scale and functionality – still both chose Java/AWS & native mobile apps as their tech stack. Building their platforms using a proven technology like java allowed them to minimize developer skillset and Tech-Ops risks. Furthermore, leveraging the AWS and its rich set of platform services, they were able build their base platforms quickly, and focus their energies instead on delivering compelling customer experiences.
Carswitch – an online used cars marketplace (www.carswitch.com)
Carswitch is an innovative used car marketplace that takes away the hassle of buying and selling used cars. In their early days, Carswitch cofounders decided to build and release a rapidly developed, low cost MVP in 3-4 months. The engineering team selected the open source PHP stack and successfully launched the MVP in the slated timeframe. Furthermore, choosing a solid tech stack upfront enabled easy evolution of the platform, and fulfillment of growing business needs over the years.
Conclusion
While product engineers endlessly debate relative merits of popular tech stacks, we shy away from making firm judgement calls. We believe that product teams should perform deep analyses to understand their needs and then select a tech stack that best fits them.