Skip to content

How Can I Force Myself to Stop Thinking in Technical Solutions?

Henry Ford is often quoted as having said, "If I had asked people what they wanted, they would have said faster horses." The line is probably apocryphal, but the picture it paints is accurate. People describe solutions, not problems. They say "I need a queue" when what they mean is "things keep getting lost between two systems." They say "we need a microservice" when what they mean is "this part of the codebase is painful to deploy." The technical answer arrives before the question is even formed, and that is true for product owners, business stakeholders, and developers alike.

This is the trap every thoughtful developer eventually wants to escape. After a few years, you start to notice that the systems you build are answering the wrong questions. You read about Domain-Driven Design, you learn the words "ubiquitous language" and "bounded context", and you decide that from now on, you'll think about the business first and the technology second. Then you walk into your next meeting, and within ninety seconds you're already drawing tables on the whiteboard. You wanted to stop. You couldn't. This post is about why, and about the only thing we've actually seen work.

Wanting to Stop Isn't Enough

The honest, uncomfortable truth about technical thinking is that it isn't a habit you can wish away. It's a reflex. Reflexes don't change because you decide they should. They change because something in your environment makes the old response harder to reach for than the new one.

We've been working with Domain-Driven Design and Event Sourcing for close to fifteen years now. These days, when a product owner walks up with a feature request, the first question we ask is almost always the same: "What is this for? What problem does it solve? Who actually needs this, and why?" That sounds like a sensible default, and it is. But fifteen years ago, we were the first people in the room to suggest a queue, a cache, a Redis cluster, or a clever schema. The question came later, if at all. The shift from technical reflex to domain question took years, and we built the habit one interrupted meeting at a time.

The reason is structural. Developers are problem-solvers by training. We see a vague situation and our brain starts pattern-matching against solutions we've already built. That's not a flaw, it's the entire reason we get hired. The trouble is that the same instinct fires whether the problem is technical or rooted in the domain, and it fires fast. By the time you've thought "wait, what's the actual business question here," you've already mentioned the queue out loud, and the rest of the meeting is going to be about the queue.

The Shapes of the Fallback

If you watch a team that genuinely wants to model the domain, but keeps slipping, you'll see the same five patterns again and again. Not because anyone is being lazy. Because the reflex finds whichever opening is closest at hand.

You name things technically. Entities become User, Item, Record, Entry. Events become Updated, Changed, Modified, or worse, row-updated. The names look like data operations, not like things that happen in the domain. If a domain expert sits next to you and doesn't recognize what you're naming, the model isn't grounded in the domain yet, no matter how much DDD vocabulary surrounds it. As Naming Events Beyond CRUD lays out, the names you choose decide whether the system tells a story or keeps a secret.

You reach for the tool before the problem is named. "We'll put it in Kafka." "We'll cache that in Redis." "We'll handle it with a Lambda." Tools are answers, and answers without questions are guesses dressed up as decisions. The moment a tool name appears before anyone has described what the system actually has to do, the conversation has left the domain.

You design the architecture before you know the behavior. "This will be a microservice." "We'll split this into two services with an event bus between them." Architecture diagrams appear before anyone can tell you what the software is supposed to accomplish. The shape of the system is fixed before its purpose is, and from then on, every domain decision has to fit a structure that was chosen for technical reasons.

You model the database before you model the domain. Out comes the ER diagram. Tables, columns, foreign keys, all sketched on the whiteboard before a single sentence has been written about what actually happens in the business. But tables are an implementation detail. They're a way to store the consequences of behavior, not the behavior itself. As Your Aggregate Is Not a Table argues, projecting database thinking onto your domain model is one of the most reliable ways to flatten a rich domain into something forgettable.

You import constraints from implementations that don't exist yet. "That won't work, because REST doesn't support it." "We can't do that, because the database has a single writer." "We'd have to redesign the schema, so let's pick a different approach." Each of these constraints is real if the assumed implementation is real. But the implementation is still hypothetical. You're letting an imagined technical reality veto a domain question that hasn't even been answered yet.

None of these patterns is malicious, and none of them is unique to junior developers. We've seen each of them in senior architects with twenty years of experience, often inside the same modeling session.

Why Discipline Won't Save You

The natural reaction, once you notice the reflex, is to look for tricks to suppress it. Wait five minutes before proposing anything. Forbid certain words in modeling sessions. Put a coin in a jar every time someone says "Postgres." We've tried versions of all of these, and they fail for the same reason: in the heat of a real conversation, the rules go out the window. The pressure to move forward, the desire to look competent, the simple momentum of a meeting that wants to end on a decision, all of it overrides the meta-rule you set for yourself an hour ago.

The deeper problem is that self-discipline is the wrong tool for this. Discipline assumes you have the attention to notice yourself slipping. But the whole point of a reflex is that it fires before attention catches up. By the time you remember the rule, you've already broken it, and the conversation has moved on. You can't supervise yourself out of a behavior you can't see in real time.

This is also where simple advice like "just ask the domain expert" reaches its limits. As we wrote in It's None of Your Business, asking instead of guessing is the right starting point. But it assumes you'll remember to ask, that you'll phrase the question in domain terms rather than technical ones, and that you won't quietly translate the answer back into your favorite tools the moment the domain expert leaves the room. All three of those assumptions break under pressure. The willingness is there. The attention isn't.

Someone Has to Pull You Back

What we've seen actually work, repeatedly, across very different teams, is unglamorous and slightly humbling: you bring in someone from outside, and you let them interrupt you.

That person doesn't need to be smarter than the team. They don't need to know the domain better. They don't even need to be a senior consultant. What they need is one specific thing: they're not in the same current the team is swimming in. They hear "we'll just use a queue" as a foreign object in a domain conversation, because they have no investment in the queue, no preferred database, no codebase to fit it into. They notice the technical drift the same way someone walking into a smoke-filled room notices the smell, while the people who have been there for an hour don't.

A good moderator does four things the team can't reliably do for itself. They hear the technical vocabulary earlier than anyone inside the conversation, because nothing in their head is racing ahead to implementation. They're willing to interrupt, because they aren't part of the hierarchy and have nothing to lose by pausing the room. They ask "why?" and "what does that actually mean in the business?" without being labeled as the person slowing things down, because that's the role they were brought in to play. And they tolerate the silence and discomfort that comes when a team is forced to stay in the domain question instead of escaping into a familiar technical answer.

That last point is the one most teams underestimate. Staying in the domain question is uncomfortable. It feels unproductive. There are no diagrams forming, no decisions being made, no tickets being closed. An internal team member who tries to hold that space gets pushback within minutes, sometimes from their own peers, sometimes from management. An external moderator can hold it longer, because their job in that moment is exactly that, and everyone in the room knows it. As It Was Never About the Database keeps reminding us, the hard part has never been the technology. The hard part is the conversation, and the conversation needs someone to protect it.

From Outside Help to Inside Habit

The good news is that this isn't a permanent dependency. The point of bringing someone in isn't to outsource the thinking. It's to give the team a working example of what a domain conversation feels like when it doesn't get derailed.

What happens, in practice, is something close to apprenticeship. The first session, the moderator does most of the interrupting. The second session, one or two team members start asking the same kinds of questions before the moderator has to. By the fifth or sixth session, the moderator is mostly quiet, and the team is policing itself. They've internalized the role, not by reading about it, but by watching it work in their own meetings, on their own problems, with their own colleagues. As Great Minds Should Not Think Alike, They Should Think Together points out, the precision a team needs doesn't come from individual brilliance. It comes from the way the group talks, and that's something you can learn by example.

This pattern matches what we've seen when teams introduce DDD itself. As Introducing DDD to Your Organization describes, the cultural change is the hard part, and culture doesn't change by sending everyone to a workshop. It changes when people see a different way of working actually produce better outcomes in their own context. A moderator who keeps pulling the conversation back to the domain is, in the most concrete way possible, that different way of working. The training material is the meeting itself.

There's another reason this works better than self-discipline. When the team eventually internalizes the moderator's role, they don't internalize a list of rules. They internalize an instinct, the same kind of reflex that used to drive them toward technical solutions, but pointed in the other direction. Reflexes can't be installed by reading. They're installed by repetition, in real situations, with real consequences. You don't talk yourself out of technical thinking. You practice your way out, with a partner who keeps you honest while you do. The fundamentals matter here too, and DDD: Back to Basics is a useful reference once the room is calm enough to revisit them.

What Sticks, and What Doesn't

If a single idea from this post sticks, let it be this. The question "how can I force myself to stop thinking in technical solutions?" has a more honest reframing: you can't, not alone, and the people who seem to have managed it usually had help, even if they don't always say so. The fifteen years of practice that let us start a conversation with "what is this for?" weren't fifteen years of self-discipline. They were fifteen years of being interrupted, by clients, by colleagues, by ourselves catching each other, until interrupting became the default move.

That's also why we don't believe in clever individual tricks for this problem. The five-minute waiting rule, the forbidden-words list, the cognitive reframing techniques, all of them assume you'll remember to use them at the exact moment you're least likely to. A reflex needs another reflex to push against it, and reflexes are built socially, not privately. Your team's first job isn't to model the domain perfectly. It's to make domain conversation a habit that survives the pressure of a real meeting, and that habit almost always starts with someone from outside the team holding the room steady long enough for the new pattern to take root.

If you're at the point where you've read the books, you've understood the ideas, and you still find yourself sketching tables when you meant to talk about the business, the missing piece is probably not more reading. It's probably someone in the room who isn't you. If you'd like to dig further into the side of this that's about asking instead of guessing, It's None of Your Business is a good next step. And if your team keeps slipping back into technical solutions and you'd like someone from the outside to keep pulling it back into the domain, reach out at hello@thenativeweb.io. That kind of moderation is exactly what we do.