How to Solve Any ProblemI like to solve problems, which is convenient, because that's also my job. My first love was coding, and it taught me to think about problems in a logical way. In the 30 years since then, I've been amazed at how often that approach has applied to the rest of my professional life (and frequently my personal life).
Here are four things I've learned about solving just about any problem:
1. Replicate ItThat's fancy programmer talk for "make it happen again," or, as they might say where I grew up in Illinois farm country: "If it ain't broke, break it." You know this story: one morning, your car starts making some noise like a rabid woodland creature. It's about to drive you insane, you take it to the mechanic, and poof! - no noise. The mechanic can't fix a problem he can't find. Some problems are always evident, but others have a way of hiding. Try turning on the lights to find a chirping cricket, and you'll see what I mean.
Tony Hsieh created Zappos' reputation for customer service by requiring all of his employees (even the top brass) to go through a month-long boot camp, starting with call-center duty. If you really want to solve a problem, you have to experience it firsthand.
2. Isolate ItWhether you've got a bug in your code, your website sales are dropping, or you're trying to stop a flu pandemic, you've got to track down the source of the problem. Dive in deep, narrow your focus, and segment, segment, segment (as my friend Avinash would say). Big problems become a lot smaller when you can finally break them down to their core. Solving small problems not only costs a lot less, but it prevents collateral damage. Unleashing Godzilla might solve your city's traffic problem, but adjusting the timing of a few lights is easier to clean up.
3. Ask for HelpI once attended a lecture by the world's foremost authority on how pigeons open their beaks in response to food. After that lecture, I realized that I probably knew more than 99.9999% of the people on earth about the subject of pigeon-beak mechanics. I'm not sure if that's a good thing, but the point is this: someone, somewhere will always know more than you about everything.
Sure, it's hard to hear, but suck it up - these people hold your answers. Some problems are hard, and you're going to need an expert. In graduate school, I spent half my day walking through the halls talking to people and asking them questions, and every minute of it was time well spent. Thanks to the internet and social media, finding and befriending experts is easier than ever. All many of them ask in return is that you pay your own expertise forward.
4. Just Fix ItWe've become a culture that spends most of our time looking for shortcuts. We think that, somewhere out there, there's a Web 2.0 tool or iPhone app to magically solve our problems. I once found a friend of mine working on an Excel spreadsheet to automate his class grading. He finally admitted that he spent the entire day on the spreadsheet and could have done the same thing in 30 minutes by hand. Sure, the right tool or automation at the right time can be a life-saver, but we've tipped to the opposite extreme, where we spend more time hunting for tools than actually using them. If we were cavemen, we'd have gone extinct looking for a wheel instead of just carrying our food home.
Consider a couple of extreme examples. How did magician David Blaine make it look like he was holding his breath for 17 minutes? He held his breath for 17 minutes. How do Penn and Teller do the trick where it seems like they're eating handfuls of ants? They eat the ants. Our grandparents had this thing called "elbow grease" - you apply it to a problem and the problem goes away. Shut up and do it.
I've found that many times, replicating a problem is as simple as "copy & paste", at least where code is concerned. In fact, that is where I find 95% of my issues.
Many's the time, where I have spent 30 minutes tracking a bug, only to realize it was merely a misplaced semi-colon.
Dr. Pete· Monday, April 12
@Kurt - I've lost far too much of my life to the quest for errant semicolons. My wife actually decided NOT to be a comp. sci. major because of one of those hunting episodes. She thinks coders are crazy :)
She's right, coders are crazy.
The "Ask for Help" point can't be stressed enough. Sometimes it isn't even getting help from someone who knows more - just a 2nd set of eyes can make the difference.
Dr. Pete· Monday, April 12
@Mike - Theoretically, that's the whole basis of usability. Sometimes, we all need a fresh perspective. I'm amazed how often a 10-second Tweet to the right audience can save me 2 hours of pounding my head against the desk.
Agreed on all these accounts: Sometimes I call in one of the other developers to look too: amazing what a fresh set of eyes can find.
Simple yet compelling... thanks!
so easy when it's told loke this... but not so easy in real life
This is just suitable for everything. Thanks for your helpful article.
Sometimes the hardest thing about a problem is your first point: Replicating it.
It becomes really hard when you can't even reproduce it.
Simple compelling but it is not so easy in real world.
The problems means for me, more google search. But sometimes i take support to other developers.
You'll never know what problems you have and don't have if you don't track your key indicators. The best way to replicate an issue is by having the data that shows where the problem is.
Simple yet compelling... thanks!
I personally feel that problems are never stay for ever and each problems will have some solutions. So, just keep confidence in your abilities and keep working in right direction, the problem will definitely solve sooner or later.
I found your article inspirational. It helped me confront an issue related to my site. Thanks.
Very interesting method, thank you. I hope this will be useful for me.
Great post, I'm going to forward this onto our designer. He needs to read this post (no doubt). Thanks for sharing.