Your tech business is booming.
Leads and sales are constantly growing.
New products and features are providing your customers with real value.
And then, you face an economic decline. Times get rough.
Sales have dwindled.
Your internal resources can’t support the same level of production as before.
You Need To Focus During Hard-Times
During times of economic abundance, it’s easy to diversify the efforts of your tech business.
You have time and resources to allocate towards all the “extras”.
However, when faced with an economic decline it becomes obvious that you won’t be able to diversify as much.
You need to decide what activities, products, features, etc. take precedence.
You need to figure out what parts of your tech business are the most important and critical!
Who Should Decide?
It isn’t only business owners or CEOs that need to decide what to keep and what to cut.
All leaders within a tech business will need to make these decisions: CTOs, engineering leaders, product leaders, sales leaders, marketing leaders, etc.
Technology leaders need to decide what development practices should remain and which ought to go. Do they focus on improving processes for the moment or building out that new product users have been waiting for? They will have to build some sort of strategy for the future.
Marketing leaders will need to decide what marketing channels are critical and which ones are secondary. Will they need to cut some or all of those secondary channels?
Generally speaking, a basic formula for comparing these activities might be:
Effort + Expected Revenue = Rating
If something takes a lot of effort but isn’t expected to make much revenue, then it’s probably not worth investing in.
Are there any tools that can help us make these kinds of decisions?
How Domain-Driven Design Can Help
Domain-driven design is characterized as a software development methodology.
Domain-driven design (DDD) is an approach to software development for complex needs by connecting the implementation to an evolving model.https://en.wikipedia.org/wiki/Domain-driven_design
That is true. (But, hold on a minute…)
There are two categories of tools that domain-driven design offers: tactical and strategic tools.
Tactical tools are technical. They are about how to translate what the business needs into working software.
However, strategic tools are not about technology.
Strategic tools are about discovering how your business works and what pieces matter the most.
Strategic Domain Exploration
These strategic tools help software and business professionals discover the true nature and needs of a business.
This collaborative process helps enable tech businesses to discover better ways of creating products, features and discovering what outcomes to focus on.
Some questions that these strategic tools address include:
- Where does our business make money?
- What are the bottlenecks in our business?
- Can we categorize our business in a way to more effectively allocate resources (e.g. money, people, teams, etc.)
- How does our business work right now, anyway?
- Can we make it more productive?
Imagine your tech business was facing an economic decline. Wouldn’t these be critical questions to answer?
Domain-driven design recognizes that businesses have multiple domains.
A domain is basically an independent part of your business, or an entirely different business altogether.
For example, Amazon’s business is about e-commerce. Within that context, there are different domains or sub-domains: inventory, shipping, billing, user management, etc.
All of these have their own business “quirks” and operate under different rules, regulations, expectations, etc.
In domain-driven design, one of the first steps is to discover what these various domains/sub-domains are.
Then, we can figure out what domains are essential to our business. Those that differentiate us from everyone else.
These are called Core Domains.
Next, we can figure out which parts of our business are secondary.
These are usually called Generic & Supportive Domains.
Prioritize Core Domains During Economic Decline
Do you think a business ought to focus on the parts that are essential and differentiate itself from the competition?
Or, do you think it should focus on the supportive and secondary parts?
Of course, we should focus on core domains.
Take an example of a vehicle. Its main purpose is to enable a person to travel from point A to point B. Everything else is secondary.
Pieces like the engine and transmission (i.e. drivetrain) are essential to this purpose. They are core.
Things like the radio, cd-player and leather seating are secondary.
Many businesses or domains have multiple core domains. In our vehicle domain, safety is definitely an essential and necessary piece. There are critical regulations and ethical consequences around safety:
During times of economic struggle, mapping out the domains of our business and classifying them can help us gain insight into what matters.
Event Storming To Find Value
Another tool that comes out of the domain-driven design community is event storming.
It’s a collaborative and flexible workshop to help quickly distill knowledge about the domain. One of the approaches you can use is to map where value and revenue are made.
For example, we might map out the following events inside of the domain of groceries. Here’s an excerpt from the sub-domain of customer purchases:
Next, we can map where the money is made:
Now that we’ve laid everything out, we can more easily and collaboratively see where there are bottlenecks:
In a more realistic scenario, we would map out events that also cause the customer to by-pass the revenue-generating events:
Now that everyone involved has a clear view of where the money is made and what is potentially blocking it, we can make more intelligent decisions.
Looking at approaches to improve the purchase lane wait times would directly impact customer experience close to where the money is made. It could help customers get out of the store quicker and more conveniently.
We might look at options to pre-pay for items that are out of stock?
During economically difficult times, we might choose to place more resources at the bottlenecks.
For example, if we usually have greeters at the door, we might want to allocate some of those people to the checkout lanes to reduce the overall bottleneck for the short-term.
Based on what domains are core vs. secondary, we can choose to allocate more/fewer resources to some of them.
Also, based on where we discover bottlenecks, we might want to take action:
- Reduce production for the time being
- Hire and fire
- Allocate money
- Collaborate on innovation
Domain-driven design is more than merely a technical set of tools.
More than that, it helps modern businesses to focus on what matters the most for their customers!
Do you believe that domain-driven design is a proven approach to designing and building high-quality software that meets the needs of your business? But, you're just not sure where to begin? How do you start introducing DDD into your growing tech organization?
Get in touch with me to see if I can help!