Breaking Down Problems Is the #1 Software Developer Skill
Learn the most important software developer skill there is, and that is how to break down problems into smaller problems.
It doesn’t matter if you’re into Ruby, Java or Turbo Pascal. There’s a whole bunch of traits that all software developers share. A lot of these traits can also improve your life even outside of software development.
In this article I want to talk about the art of breaking down problems into actionable steps to finish anything. In my opinion, this is the most important thing you can learn as a software developer and maybe even as a human being.
Why Is Breaking Down Problems So Important?
It is the often the bottleneck for both starting and completing a project. No one wants to start working on a vague project with no direction, and it’s very tough to see a project through until the end when there’s no end in sight.
If you spend just a little bit of time up front breaking down problems into smaller problems then you will finish things faster and you will also be less inclined to procrastinate because it is very easy to complete a bite sized focused task. You just knock it off the list.
Can You Explain Tying Your Shoes?
When you’re younger, there’s a very good chance that someone taught you how to tie your shoes. There’s even many ways to do it. Personally I was taught using the “bunny ears” method.
Tying my shoes isn’t really something I think about. I just do it. I’ve done it enough times that my brain says “relax buddy, I got this!” and like a magic trick my laces are tied seconds later.
I like magic, and being able to do something without thinking is nice but what happens when you haven’t memorized how to do it yet, or even worse – you want to explain how to do it to someone else (or a rubber duck).
Here’s How an Engineer Might Explain Tying Their Shoes
- Pick up left shoe with hand
- Shift shoe position in fingers
- Pick up right shoe with hand
- Walk over to a common chair
- Place buttocks on said chair
- Place the soles of both feet on the floor
- Put shoes on the ground
Wait, let’s just stop there for now because this could easily be 150 more steps.
Tying your shoes suddenly opened multiple cans of worms, because now you need to know about:
- How to pick up an item with your hand
- How to walk
- How to sit down
- How to work your knee caps
- …and hundreds of low level things
You could say our underlying main goal here is to tie our shoes but there’s a bunch of sub-tasks and steps that need to be learned and complete before we achieve our goal.
Put It on the “Done” List and Out of Mind
Once you’ve sat down and your shoes are on the floor, you can consider those sub-tasks completed. You just knock it off the list, easy peasy!
You’ve also made measurable progress in the quest to tie your shoes. If someone asked you how far along you were, you could tell them “well I did this and that, and now I’m working precisely on the next thing”. You have an actionable plan from start to end.
Even a 5 Year Old on the Sugar Rush of His Life Can Finish Easy to Do Steps Without Distraction
I don’t know why he’s eating candy through his nose, I just bought a Huion H610 Pro drawing tablet and wanted to try it out (plot twist: I’m not an artist).
Focused Baby Steps Allow for Easy Progress
The great thing about highly focused simple steps is they are simple to do. I don’t know about you but I would much rather crank through 50 simple focused things instead of 5 very vague and difficult things.
The key here is, often times those 5 difficult things aren’t really difficult. It’s just without breaking them down into smaller problems you usually have no idea what you’re even trying to accomplish because the problem isn’t defined well enough.
Vagueness Is a Productivity Killer
Breaking down problems is great and all, but at the end of the day to reach your main goal you need to actually do “stuff”. Without focused simple tasks in front of you, you’re going to have a hard time even starting the project.
The next time you’re working on a project, think about explaining how you tie your shoes to someone. Break down everything to the point where things are simple then just goto town on that list of steps.
Post a comment below with how you’ve used this strategy out in the wild.
I’ve been a software developer for ~20 years and I still break things down into bite sized tasks because in the end, it saves a ton of time in the long run.
If you’re interested, I have a 30+ page free PDF guide that shows you exactly how to break down a real web application project. You’ll never be stuck again. Grab it below: