Don't be stuck in analysis paralysis or miss important aspects of your tech stack. Use the canvas as a checklist and the process below as a quick way to decide what technologies to use in your product.
Have all relevant technologies of your stack documented on a single page. Document the planned technologies for a new project but also document the status quo of existing products.
Use this alongside other canvases such as the business model canvas to communicate a comprehensive picture of your endeavour to employees, stakeholders and investors.
main objectives this project tries to achieve
that influenced decisions, such as number of users, requests per second, data volumes
that influenced decisions, such as availability, fault tolerance, learnability, adaptability
languages, tools and frameworks used for developing the user interface and user experience
technologies used for server-side processing, data management, and business logic implementation
technologies used for data storage, retrieval, and processing
platforms, tools, and services used for hosting, deploying, and managing the application
tools and services used to monitor the application's performance, track user behavior, and gather insights for optimization
tools and processes used to facilitate efficient development and collaboration among team members
third-party services used to extend the functionality of the product or service
tools and methodologies used to test the application's functionality, performance, and security
tools, practices, and standards implemented to ensure the security and privacy
Click on each box to learn about details.
When you are a startup or starting a new venture inside a corporation it is not uncommon, that you have to create a tech-stack from scratch. There is a lot of new trends to be considered but also a lot of constraints given the experience you have in your team. To create your own tech-stack in a situation like this we recommend a workshop which usually takes one or two days. The steps for filling the canvas will look like this:
Make sure everybody in the workshop understands the Tech Stack Canvas and its elements. Use the element description above. Also clarify questions about elements of the tech-stack and why you would need them.
The three canvas elements on the left are special in that they do not describe the tech stack itself but the main reasons why it is like it is. Every project has business goals and those goals should be clear to all participants of the workshop. This is what you are discussing in this step first. Write down the three main goals for this project. We strongly recommend, that you identify the business goals before starting the workshop. A good starting point would be filling out a Business Model Canvas or a Lean UX Canvas.
Sizing numbers and Quality attributes can be discussed if obvious. Usually it is complicated to focus on the most important ones here. You should brainstorm them here and keep them on post-its. Then fill the canvas fields retroactively when discussing the other elements where it will become obvious which numbers and attributes are really important for decisions.
Discussing and documenting each remaining element of the canvas focussing on a number of questions.
Many projects, especially a startup can’t effort to find the optimal solution for the requirements it needs to find a solution that is possible given the existing constraints. As an example even if python would be the optimal language for an AI solution but you can’t get any experts it might be better to choose a different language.
So constraints follow questions like:
Based on the constraint it will probably be easy to write down available Options. If this would still be to many it might make sense to discuss requirements first in order to narrow down the list of options.
After we know the available options we can have a look at the requirements for our project. Those can now help to determine which option to choose. This reasoning should be written down. Sometimes it might make sense to look at other elements of the stack before the final decision as they might influence it. Quality Attributes and Numbers that are used often to decide between options are good candidates to be included in the respective areas on the canvas.
Every decision for a certain technology has some consequences. Examples would be license costs or dependency on a specific vendor. Those should be considered and also documented.
The answers to those questions will result in a documentation of the reasons for every element in the canvas. This is comparable to Architecture decision records (ADR).
After all elements are initially filled it needs at least a sanity check whether the whole picture still makes sense.
Here is an example of the creation process that we did for an internal application. Use this to get an idea what belongs where and what the detail level can be. This specific canvas has been documented after the system already existed. This took no longer than 30 minutes.
Trying to create this canvas all on your own can be difficult. You might miss some important options. We recommend that you get help for creating the canvas in two ways:
The moderation part can for instance be done by agile coaches in your organization. The sparring partner can be an experienced CTO from an accelerator or an experienced consultant.
You can of course also ask us!
With our experience in many different projects we can be your sparring - partner in choosing the right options. We can also help you in moderating the process of creating this canvas.
This canvas is good if you want to document what technologies you are using to create your product. You might also want to document how you create your product by documenting your software architecture. There is a canvas for this, too. You can find it at https://canvas.arc42.org/.
A lot of people helped with the creation of the canvas, provided feedback and created templates.
Many thanks go to: Anca Trusca, Benjamin Wolf, Christiane Mezger, Daniel Westheide, Gernot Starke, Jörg Müller, Markus Harrer, Michael Krauße.
This work is licensed under CC BY-SA 4.0
Listing 3 main objectives that this project tries to reach, such as reducing costs by automating processes, reaching more customers, support a whole new business model
Listing some crucial numbers that give an idea of sizing and that influenced technology decisions. expected number of users, requests per second, expected data volume.
Quality attributes that influenced decisions. Examples are response times, adaptability, availability requirements.
There are different approaches to document this. One is to list the ISO-25010 criterias that are most important.
The tools and frameworks used for developing the user interface and user experience, such as programming languages (e.g., JavaScript), libraries (e.g., React), and frameworks (e.g., Angular).
If you are developing a mobile app this would be the place to put the technologies used for it such as iOS, Android, SwiftUI, Flutter etc.
The technologies used for server-side processing, data management, and business logic implementation, including programming languages (e.g., Python, Java), frameworks (e.g., Django, Ruby on Rails)
The technologies used for data storage, retrieval, and processing, such as relational databases (e.g., MySQL), NoSQL databases (e.g., MongoDB), and data warehousing solutions (e.g., BigQuery)
The platforms, tools, and services used for hosting, deploying, and managing the application, including cloud providers (e.g., AWS, Google Cloud), containerization tools (e.g., Docker), and deployment tools (e.g., Kubernetes).
The tools and services used to monitor the application’s performance, track user behavior, and gather insights for optimization and improvement, including application performance monitoring (APM) tools, log management solutions, and analytics platforms (e.g., Google Analytics).
The tools and processes used to facilitate efficient development and collaboration among team members, such as version control systems (e.g., Git), project management tools (e.g., Jira), and communication platforms (e.g., Slack).
The application programming interfaces (APIs) and third-party services used to extend the functionality of the product or service, such as payment gateways, email services, or social media integrations. This could also include Integrations with internal solutions.
The tools, practices, and standards implemented to ensure the security and privacy of the application and its data, including encryption tools, security frameworks, and relevant regulations (e.g., GDPR, HIPAA).
The tools and methodologies used to test the application’s functionality, performance, and security, including automated testing frameworks (e.g., Selenium), continuous integration and continuous deployment (CI/CD) tools, and performance testing tools.