Four Essential Steps To Take Before Making Any Technical Decision In 2025 🚀
Learn why good discovery and preparation are key for making the right decisions. (5 minutes)
Making technical decisions or architectural improvements is not easy.
It takes effort, preparation, conscious planning, thoughtful thinking, strategic approach, and considering many trade-offs.
All this because there’re no silver-bullet solutions.
Making the right choices can significantly impact the efficiency and scalability of your project.
It might set it for success or failure.
A good discovery and preparation are key.
In today’s article, I’ll share my four-step approach to guide you before making any technical decision.
Product for Engineers - Sponsor
Product for Engineers is PostHog’s newsletter dedicated to helping engineers improve their product skills.
Subscribe for free to get curated advice on building great products, lessons (and mistakes) they’ve learned building PostHog, and deep dives on the culture and strategies of top startups.
1. Understand The Business Domain And How It Operates
Before diving into any technical specifics, it’s crucial to have a solid understanding of the business domain for which the project is being developed.
Know the core processes, business operations, customers, and the everyday challenges the business faces.
This understanding ensures that the technical solution aligns with the business objectives and addresses real needs.
Building software for a small business is not easy
→ We must understand the business and its domain.
You can talk with the different stakeholders inside the business like finance, ops, marketing, compliance, etc., and see their everyday tasks, challenges, and the domain language they use daily.
This gives an additional context and understanding of the business and how to design the new project or architecture.
Strategic DDD and Event Storming
In my experience, I’ve found Strategic DDD and Event Storming as great tools to start the business domain exploration.
Strategic DDD
Strategic DDD is a subset of the Domain-Driven Design (DDD).
Strategic DDD consists of identifying two key things:
your Ubiquitous Language
your Bounded Contexts and the relation between them
Event Storming
Event Storming is an interactive workshop technique that brings together domain experts and development teams together to explore complex business domains.
2. Find Out What Are The Top Technical Challenges
The next step is to identify the major technical challenges and problems currently faced by the organization.
This might include scalability issues, technical debt, security vulnerabilities, or integration challenges with other systems.
Recognizing these problems early will help in prioritizing which issues need immediate attention and which architectural improvements can resolve these challenges.
Prioritization is key to successfully mitigate critical technical problems.
If the technical decision we aim to make doesn’t solve our top problems then what’s the point into taking it in the first place? 🤷♂️
Example
Here is an example from a discovery of a project I’ve worked on in the past.
As a first step, we listed the different technical challenges we had at that moment:
As a second step, we prioritized what are the most critical ones we should focus on first:
It’s important to mention that this step requires research, thoughtful thinking, discussions, and trade-offs.
We can’t solve all challenges at once. Clear priorities and order are crucial.
3. Decide On Your Architectural Quality Attributes
Architectural quality attributes define the non-functional requirements like performance, scalability, maintainability, reliability, security, etc.
Determining what attributes are most critical to your business goals will influence the architectural decisions you make.
For example, if reliability is a crucial factor for your business, you’ll prioritize solutions that enhance uptime and fault tolerance.
Example
Here is an example from a discovery of a project I’ve worked on in the past.
As a first step, we listed and prioritized the different architectural quality attributes based on their importance at that moment:
As a second step, we picked the attributes our technical decision must satisfy:
4. Have Clear Goals
Set clear and measurable goals for what the architectural improvement or change should achieve.
Whether it’s cutting down on maintenance costs, reducing server response times, or improving user experience, having specific targets will help you guide your decisions.
It will also make it easier to evaluate the success of the implemented changes.
We’re modeling software to solve complex real-life business problems.
This step will be much easier and transparent if you have already outlined the top technical challenges and problems as well as your architectural quality attributes.
📋 Recap
Technical decisions and architectural improvements require thoughtful preparation, strategic approach, and trade-offs.
First, understand your business domain and context.
Second, identify key technical challenges and problems.
Third, decide on critical architectural quality attributes.
Fourth, set clear goals.
By following this four-step approach, you can ensure your decisions lead to successful outcomes.
That's all for today. I hope this was helpful. ✌️
How I can help you further?
I wrote a book on React as a comprehensive guide on React Architecture, Design, and Clean Code.
The book consists of six chapters, containing 74+ principles and rules, described in 108 pages, including 80+ code snippets.
👋 Let’s connect
You can find me on LinkedIn, Twitter(X), Bluesky, or Threads.
I share daily practical tips to level up your skills and become a better engineer.
Thank you for being a great supporter, reader, and for your help in growing to 19.9K+ subscribers this week 🙏
You can also hit the like ❤️ button at the bottom to help support me or share this with a friend. It helps me a lot! 🙏
Nice one, Petar! Understanding the business domain is a non-negotiable. We can't start building the house from the roof