#📚reference
A tech stack is a collection of technologies upon which a software product is created and deployed. It includes programming languages, front-end and back-end frameworks, databases, and third-party services connected via APIs.
Typically, the choice of technologies results from discussions between:
- product management team - outlines the business goals and the product roadmap.
- software development team - evaluates suitable alternatives with consideration for project requirements and the balance between proficiency in known tools and investment in potentially more efficient but unknown instruments.
Selecting the **optimal tech stack** for a project involves **balancing the following dimensions**:
1. Alignment with the project's goals and [[product specification#Requirements Document|non-functional requirements]] (such as performance, scalability, and resilience).
2. A trade-off between the simplicity of the initial implementation and the later challenges of scalability and maintenance (the [[maintainability]] problem).
3. A compromise between the proven reliability of familiar technologies against the potential benefits of adopting new, but untested, technologies.
---
<font style="color: #F86759">Contributors:</font> *[[Mykhailo]], [[Jaros]]
<font style="color: #F86759">Last edited:</font> *2024-04-13*