Apply the programmer's mindset to solving problems
October 14, 2025If you have time I would encourage you to watch the entire interview. They discuss a variety of tech and non-tech topics and David's takes are not only entertaining but also very informative. Here's my breakdown of this short 40 second nugget on how to apply a developer's mindset to solving non code problems.
I want you to become a
more competent human.
DHH
1. Understand the problem
Before you can solve problem you need to understand it. You can’t fix what you don’t understand. What is actually happening and ideally why does it need to be fixed. Dig into the problem, do you know what the problem actually is, sometimes it is not as obvious as it seems.
I always think of my kids when they were little saying they didn't feel good or something hurt. I had to slowly tease all the information out of them before we (mostly my wife) could fix the underlying issue.
2. Chunk the problem
A big problem can look and feel overwhelming but a bunch of smaller problems don't feel nearly as daunting. Break down a problem into small chunks.
I have tackled a few big home improvement projects over the years, the largest was finishing our basement from nothing but studs and a rough concrete floor to a nicely finished living space for guests to stay in. Between looking at a picture in a magazine of a beautiful guest space and a blank slate of a basement it would have been easy to get overwhelmed and call in the professionals. Instead I broke the project down into small bite sized chunks that I could tackle over time until the entire basement was finished.
3. Develop a plan and plan for pitfalls
Once you have the problem defined and broken down into some smaller pieces you can start planning. The important part is walking through the problem and possibly approach(es) to solve it before diving in. Think about how to solve it, think about what will work, what will be easy, what will be hard and what might go wrong. Depending on the problem have backups or some alternative ideas just in case.
I love going on back country camping trips, as far from people as possible. Planning is a huge part of any successful trip. Route planning, meal planning, weather planning, packing. All the prep work really pays off, especially when things go wrong, which does happen.
4. Figure out the variables
Knowing what is constant and what is changing is a critical piece to solving a problem. When you know what can change you can start to tinker with those pieces to get the solution you need.
As David mentions in the video, you can start to fix something like a home HVAC system once you know roughly how it works and what can change. Most things are not rocket science. In my house I have taken apart countless broken and malfunctioning things and gotten them running again. Take lots of photos, watch some Youtube videos, figure out what moves, what doesn't, what should and then work the problem to a solution.
5. Execute and iterate
The great part about computer development is that, for the most part, execution and iteration is relatively inexpensive and fast. Hypothesize, build, test, repeat. This isn't always easy in the physical world (ie pouring concrete) but if you can figure out a way, you can find a solution, and then, if the cost is low enough and the need is great enough, find an optimal solution.
A few years ago I decided I wanted to learn how to snowboard. Snowboarding is very unforgiving at the beginning. Little mistakes result in instant wipeouts. It was the perfect activity to practice "execute and iterate". Initially every attempt at going down the hill resulted in a wipeout. Each wipeout was a chance to evaluate what worked, what didn't and what I needed to correct to have a more successful run the next time. Thankfully I'm a quick learner and quite stubborn so eventually I was able to figure it all out (mostly) and I now I thoroughly enjoy ripping down the hills in the winter.
Wrapping it up
So there's five practical ways to apply a developer's mindset to solving problems in a variety of situations. Good luck and happy problem solving!