#📚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*