All articlesEngineering

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)

Petar IvanovPetar Ivanov
••5 min read
On this page

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.

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:

  1. your Ubiquitous Language
  2. 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:

List of technical challenges.

As a second step, we prioritized what are the most critical ones we should focus on first:

Prioritized list of critical technical challenges.

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:

All architectural quality attributes.

As a second step, we picked the attributes our technical decision must satisfy:

Prioritized list of all architectural quality attributes.

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.

Related articles

Whenever you’re ready, here’s how I can help you:

  1. 1.

    The Conscious React: React architecture, design & clean code — 100+ production tips across 6 chapters, updated for React 19, plus 4 companion repos you can clone and run.

  2. 2.

    The Conscious Node: Node.js architecture, design & clean code — 157 production tips across 10 chapters, from module boundaries to the transactional outbox and zero-downtime deploys.

  3. 3.

    The JavaScript Architect Bundle: Both books + all React companion repos + CLAUDE.md rulesets + both playbooks. The complete path from developer to architect.

  4. 4.

    Free Resources: Architecture playbooks, cheat-sheets, and the JavaScript Architect Roadmap — practical guides for leveling up to senior.

The T-Shaped Dev

Join 30K+ engineers leveling up to architect

One practical tip on JavaScript, React, Node.js, and software architecture every week. No spam, unsubscribe anytime.

Petar Ivanov

Written by

Petar Ivanov

Software engineer, author, and speaker. I help JavaScript developers grow from Mid → Senior → Architect — production-grade React, Node.js, and AI systems.