3 RIDICULOUSLY Simple Ways to Solve Complex Problems
You crack your knuckles, preparing to dictate your will line by line, transforming pure thought into the most brilliant code ever written. You think, "I am the master of my fate, I am the captain of my soul." As you ponder how you'll humbly accept praise as a team legend, you snap back to the present, gazing at your screen. A non-working idea arises, then another, and another. Brain-fogged and cotton-mouthed, you watch as hours drag you along. You stare at the code editor as it lay bare, staring right back at you, silent and ashamed.
It's normal to find yourself in this moment of defeat; we all get stuck at some point in our careers. Instead of a negative, try seeing it as an opportunity to learn and hone your skills as a developer
1 - Take a Break and Walk Around (Preferably Outside)
Software developers in a Univerisity of Zurich study said they often take a coffee break or do something entirely different to relax, finding it easier to solve a complex problem when they return to their seats.
Sitting for long periods is often compared to smoking for its similar effects on your health, contributing to heart disease and obesity. Prolonged sitting increases cortisol, a stress hormone that counteracts serotonin's creativity-boosting effects.
“All truly great thoughts are conceived by walking” - Friedrich Nietzsche
Researchers at Standford University demonstrated that taking a walk can significantly boost creativity with lasting residual effects. 81% of participants increased their creativity scores by walking and saw an additional bump during and after walking outdoors.
Participants who transitioned from sitting to walking showed the most significant increase in mean novel responses:
Just sitting outside provides positive effects:
“I took a walk in the woods and came out taller than the trees.” -Thoreau
Set a reminder to get up and walk for at least 2 minutes every hour. This doesn't have to be a strenuous activity; simply walking around your office or home for a few minutes will suffice. Staying active throughout your day guarantees improved health and coding skills.
2 - Explain the Problem
Software developers call this Rubber Duck Debugging, a practice of going line by line to explain a problem. While describing a problem to someone else, it's common that you'll suddenly have your eureka moment. Restate the problem in your own words; you may be surprised by what you uncover.
In 1989 researchers Chi, Bassok, Lewis, Reimann, and Glaser studied how "self-explaining" improves problem-solving skills. Students scored higher when they generated their own explanations, expanding on their given examples. A similar study found improvements in problem-solving skills by stating a problem out loud. Students who used "self-explaining" also performed better than students instructed to read through given problems twice.
The Feynman Technique, named after theoretical physicist Richard Feynman for explaining complex topics in simple terms, is another excellent approach.
Feynman proposed these four basic steps:
Write down everything about the chosen topic/problem based on prior knowledge or research.
Explain the topic in simple enough terms that a kid could understand
Review and identify gaps in your understanding or explanation
Simplify the language further or create analogies to understand the topic better
Repeat steps 2-4 until you understand the topic
3 - Ask for Help
In 2008 Microsoft published a research paper titled Struggles of New College Graduates in their First Software Development Job and found that new developers often struggle to know "when they don't know" something. They don't reach out for help but instead think they need to "perform" and hide their "deficiencies." This can contribute to wasted time being stuck, poor communication, and drawn-out onboarding. The developer suffers by waiting too long to seek help, trying to cover up issues they think they "should know."
Whether you're new or not, you should ask for help. Your manager and your team expect you to ask questions. Teams should anticipate this behavior and schedule time for Pair Programming, Mob Programming, and mentorship when bringing a developer into a new team or project.
Don't Give Up
When you're struggling to solve a software issue, it's easy to feel like giving up. Don't despair – with a bit of persistence and these helpful tips; you can conquer any problem. Remember, the first step to becoming a legendary problem solver is never giving up!