profile

The Weekly Gist

Becoming a Locksmith: How to Problem-Solve Like a Pro


Helping you learn practical, straightforward methods to boost your soft skills and enhance your career as a software engineer.


Weekly Newsletter

December 17th, 2024

How to Problem-Solve Like a Locksmith

Let's start with a quick story:

A locksmith is called to unlock a car. She arrives, examines the door, and opens it in 30 seconds. Shocked at the bill, the customer protests, "That only took you 30 seconds! I'm not paying you $200 for that!"
The locksmith replies, "You're not paying for the time it takes to unlock the door. You're paying for the years I spent learning how to do it in 30 seconds."

Debugging can feel the same way. Watching someone solve an "impossible" bug in minutes looks effortless, almost like magic.

But it's not magic, and it's not just experience. Great problem-solvers approach uncertainty with a calm mindset and a clear, repeatable process.

Here is how you can improve your debugging (and problem-solving) skills quickly.

Why Problem-Solving Matters

Strong problem-solving skills make you more effective as an engineer and reliable to your team. As you master the process of problem-solving, you learn how systems work and identify ways to improve them. Here is why problem-solving is such a big deal:

1. People Rely on You

When things go wrong, the team needs someone to stay calm and find the root cause. Being that person earns you trust and sets you apart. Over time, others will start looking to you for solutions and direction during chaos.

2. You Learn How Systems Work

Every debugging session teaches you something new. You see how components interact, how failure points emerge, and how systems behave under stress. These insights make you better prepared for more complex challenges down the road.

3. You Improve Systems

Good problem-solvers don't stop at fixing the immediate issue. They ask, "What caused this, and how can we prevent it in the future?" By sharing insights, identifying patterns, and implementing improvements, you contribute to a more stable and resilient system. This kind of thinking drives long-term success for teams.

Why Debugging is Difficult for Most Engineers

Debugging is difficult because you are faced with a problem and have no clear path to the answer. Where do you even begin?

When uncertainty strikes, the instinct is often to panic or guess. You jump between areas of the code, trying random solutions in the hope that one works. But this approach wastes time and creates more confusion.

Instead, you need to trust the process. Debugging isn't about having all the answers upfront—it's about uncovering them one step at a time. With a clear approach, you can reduce uncertainty and focus on making steady progress.

The Problem-Solver's Mindset

If you want to become a great problem-solver, you need to hae the right mindset. Before diving into a problem, focus on the right approach. Debugging success starts with how you think:

1. Stay Calm and Curious

Panic doesn't help. A calm, curious mindset keeps you focused on gathering information instead of jumping to conclusions. Treat the problem like a puzzle. Ask, "What do I know so far? What's the simplest thing I can test next?" Each small step brings you closer to the solution.

2. Challenge Assumptions

Most bugs hide where you least expect them, often under assumptions you haven't verified. A variable might not have the value you think it does. An API might not return the data you assume it will. Instead of trusting something works, test it.

For example, instead of assuming an API call succeeds, log the response to confirm.

3. Take It Step by Step

It's easy to feel overwhelmed when looking at a big problem. Break it into smaller, testable parts and work through them one at a time. Each step eliminates possibilities, narrowing the problem down.

A Simple Process for Debugging

When you hit a bug, follow this process to work through it systematically:

1. Reproduce the Problem

You can't fix what you can't see. Start by trying to recreate the issue. This step helps you understand what's happening and sets the baseline for testing fixes.

  • What triggers it? Does it happen every time? Under what conditions?
  • Example: "The app crashes when uploading files over 2MB. Does it happen with smaller files? In all browsers?"

2. Define the Problem

Be specific about what is happening versus what should be happening. A clear definition saves time and ensures you're solving the right issue.

  • Bad: "The upload feature is broken."
  • Better: "The server returns a 500 error when files over 2MB are uploaded instead of showing a validation warning."

3. Break the System Down

Big problems can feel overwhelming. Instead of looking everywhere at once, isolate the system's components and test them individually. Start with what you know and trace backward until you find the issue.

Example: If the file upload fails, ask: "Is the problem in the front end, API, or database? Let's test each part one by one."

4. Ask, 'What Changed?'

Most bugs appear after something changes. Identifying changes can quickly point you in the right direction.

Ask yourself, "Did we deploy any new code? Did a library update? Did the input data change?"

For example, "The bug appeared right after a new version of the file-upload library was released."

5. Test and Verify

Once you have a hypothesis, test it. Debugging isn't about guessing; it's about proving what's true. Test assumptions rigorously and confirm they hold up.

Continuing our example, "Is the API receiving the correct payload? Let's log it and see exactly what's being sent."

It looks like we might have a culprit for the upload issue.

By following this process, you eliminate guesswork and steadily work toward the root cause.


Problem-solving can feel messy at first. It's full of uncertainty and false starts, but with practice, it gets easier. Like a locksmith, you'll develop a systematic approach—testing one part at a time, challenging assumptions, and finding the root cause.

The next time you face an "impossible" bug, stay calm. Break the problem down. Test what you know, and verify each step. The answer is there, waiting to be uncovered.

David Ziemann

Founder of MoreThanCoders.com
david@morethancoders.com

Related Articles

5 Tips to Improve Your Communication

3 Easy Critical Thinking Exercises


Follow MoreThanCoders

Was this forwarded to you? Sign up here.


113 Cherry St #92768, Seattle, WA 98104-2205

You're receiving this email because you signed up for the MoreThanCoders Newsletter. If you prefer to not receive these messages anymore, feel free to unsubscribe or update your preferences.

The Weekly Gist

Learn practical, straightforward methods to boost your soft skills and enhance your career as a software engineer because you are so much more than a developer.

Share this page