Solving problems is a fact of life. But those of us who serve in a technical role such as a programmer or database administrator face problems more than others. In my 10 years working in technical roles at different companies I've seen a lot of weird issues. Just today we had a situation where a customer was unable to fill out a form on our Web site. When asked what they meant they said they simply couldn't type into the form fields. It all sounded pretty bizarre to me. We eventually discovered a div layer was taking up more space than intended but only in Internet Explorer 7. The div took up so much space it trapped user clicks and wouldn't let customers interact with the form.
Tonight I was confronted with an entirely different kind of problem. My wife had a meeting to attend so I had our son all to myself. For dinner I made him a peanut butter and jelly sandwich, one of his favorites. He usually plays while I make dinner but tonight he decided to watch me spread the peanut butter and jelly on his bread. After finishing he said I wasn't supposed to spread the jelly on top of the peanut butter. I brushed off his comment and finished preparing our meal.
A few minutes into eating he reminded me how his sandwich wasn't right. He'd had a bit of an attitude since I got home from the office and his continued focus on the sandwich being wrong was frustrating me. All I could think about was how making him happy involved doing something I didn't want to do. I could take the bread from his sandwich, scrape off the peanut butter and jelly, and make it over again. This would be equivalent to refactoring bad code. Or I could scrap the whole sandwich and start over, much like throwing away bad code and starting from scratch. Since I'm not one who gives my son everything he wants - especially when it comes to something silly like a sandwich - I just ignored his commentary.
After a few minutes the best solution hit me like a ton a bricks. I think I even laughed a little. Looking at my son I said: "Just flip over your sandwich, then you'll be eating with the peanut butter on top." He thought about my suggestion for a moment and completely satisfied he flipped over his sandwich. His problem was solved and we finished dinner in peace.
Problem solving should always be that simple. As technical people we tend to match difficult solutions to difficult problems. Our ego gets in our way as we force ourselves to believe we must create crazy, overcomplicated solutions for the problems we face. Many times this way of thinking keeps us from solving a problem entirely, or it creates additional problems in the future. Neither of these things are good for our businesses or customers.
The next time you are up against a difficult problem try not to wander into analysis paralysis. Think about the problem in simple terms and who knows, maybe your best solution is a "flip of the sandwich" away.