Design Patterns: You Use Them Even If You're Too Tired to Spell Them


Design patterns, those noble battle-tested solutions to common problems in software architecture. The kind of thing every job interview pretends you'll consciously wield like a master swordsman.
"Tell me about a time you used a design pattern," they ask, as if you didn’t just copy-paste that entire module from the project your last tech lead abandoned.
Let’s get this out of the way: design patterns are useful. They offer structure, maintainability, and a shared language. But let’s also stop pretending we consciously choose them most of the time. The truth? Most patterns sneak into your codebase like raccoons through an open trash lid. And just like raccoons, we usually notice them only when they start making a mess.
The Interviewer Illusion
Interviewers treat design patterns like a badge of seniority. If you can rattle off Observer, Decorator, Factory, and Abstract Factory without stuttering, you're considered a serious engineer. Bonus points if you throw in "Command pattern" like it's a secret cheat code.
But in practice? Most devs haven’t voluntarily used a Visitor pattern since they were forced to implement it during a college group project with someone named Chad who never showed up to meetings.
Ask any real-world engineer when they last chose a pattern, and they'll probably reply with something like:
"Oh yeah, I used MVC. Because... that's what ASP.NET does by default."
Patterns You're Already Using (Without Knowing)
Let’s break the illusion. You are using design patterns. Just not the way whiteboard interviews would like to imagine.
🔹 MVC (Model-View-Controller)
Where it shows up: Every web framework since 2003.
Did you choose it? No. You clicked “New Project” and it came with a folder called
Controllers
.
🔹 Singleton
Where it shows up: Your dependency injection container, your logging class, your config service.
Did you choose it? No. You used
AddSingleton()
because the tutorial said so.
🔹 Observer
Where it shows up: React state updates, event emitters, RxJS, C# events.
Did you choose it? Also no. The framework asked for a callback.
🔹 Strategy
- Where it shows up: You passed different functions to the same method. Congratulations.
🔹 Decorator
Where it shows up: Middleware pipelines, logging wrappers, chained HTTP handlers.
Did you choose it? Not unless you write raw JavaScript for a living and enjoy pain.
The Truth About Pattern Usage
Patterns are like gravity. They're always there, shaping things, even if you don't name-drop them. You build enough backend services, and you'll eventually end up writing something that resembles a Command pattern. Not because you're a Gang of Four purist, but because you needed to encapsulate some logic and didn’t want to write another 400-line method called ExecuteAllBusinessThingsAndThenMaybeLog
.
The more experience you have, the more you realize:
Patterns are what you name your code after it works.
You don’t refactor to a Builder pattern out of aesthetic joy. You do it because otherwise your object constructor looks like a Chipotle order form.
Also worth noting: patterns are not laws. They’re just labels we slap on solutions that tend to work well. You can (and should) adapt them. A Decorator can log. A Factory can cache. A Strategy can also send emails, if you’re feeling frisky. The books gave us definitions, but your code gets to break the rules if it still makes sense and works.
So, Are Patterns Useless?
Not at all. They're extremely useful once you understand them. They help you debug faster. They help you onboard new devs. They give structure to chaos. But we need to stop pretending they are sacred rituals we all follow from day one.
Most of the time, your framework determines your pattern before you even write a line of code. Laravel, Spring, Django, and ASP.NET all come with opinionated architectures that quietly introduce half a dozen patterns behind the scenes.
Conclusion
Use patterns. Learn them. They are good. But let’s stop romanticizing how they show up in the real world. In interviews, everyone acts like they auditioned patterns like Netflix genres before settling on the perfect one. In real life, we just needed something that didn’t crash and could be unit tested.
You didn’t choose the Singleton life. It came pre-installed.
And that’s okay.
Subscribe to my newsletter
Read articles from Walter Soto directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
