In software development we’re often given advice in absolute terms:
“Service Objects are an anti-pattern.”
“Keep your controllers skinny.”
“Vanilla Rails is enough.”
In the Ruby on Rails community, we all know DHH has a reputation for writing with strong conviction. His blog posts, tweets, and writing often spark intense debate, and many people mistake them for dogma. If you only engage with his writing at a surface level, you might be fooled into thinking he’s advocating for a single right way to do things.
But dig a little deeper—watch his videos, listen to his interviews, or pay attention to how he actually builds software— and you’ll find a surprising amount of flexibility. He has strong opinions about how software should be written, but he’s also pragmatic. He understands that best practices are situational, and that real-world constraints often demand trade-offs.
This isn’t an article praising DHH - but rather a reflection that behind every bold statement, there’s always an implied asterisk, quietly reminding us:
* This might not apply to every situation