Software developers are problem solvers, we are good at it, we have fun doing it, but solving problems is not always easy. Sometimes we hit road blocks, everyone does, no matter how experienced. Hitting a road block is not a big deal, what it is a big deal is what we do when that happens.
Developers I admire have something in common, they are constantly shipping. That’s not because they’re so good they never get stuck, it is because they are really good at avoiding it.
Being stuck is a terrible position to be in, kills our motivation and brings our pace down, it is easy to loose focus and start to procrastinate, that’s why we need to find ways to keep moving forward.
A few weeks ago I found my self in this situation. I got stuck and spent a couple of days trying to deliver a new feature with no success, it wasn’t until I took a step back that I realized I was going no where.
When hitting a road block we sometimes need to dig down a rabbit hole in order to solve the problem, but most of time that’s not necessary. It’s all about finding a way to move forward.
After thinking about how I finally solved the problem and talking to other developers about how they deal with this type of situation. A friend of mine shared with me the a list of steps intended for people learning a new craft which I found really useful.
The following is my adaption of those steps.
Define the problem. Read the error messages. Read them again. Understand the problem you’re dealing with, make sure to understand what’s going on.
Follow your instinct. You probably have an idea of what the problem is and maybe even how to fix it, try it out. Use the resources you have available. Don’t do this forever, be reasonable. Some people even put them selves a time limit.
Get a second pair of eyes. Ask a peer to take a look at the problem, explaining it to someone else helps more than would think. Try to find someone that knows something about the problem you’re trying to fix.
Re-define the problem. If none of the above worked, you need to change the problem. Split it into smaller problems, take a totally different approach. Take a step back and change the problem to one that you can solve.
Write your solution down. And then share it. Your solution might help someone else get pass the same problem, it might even help yourself in the future.
These steps work for me, they might work for you too. What matters is that you have a way to avoid getting stuck that works for you.
Keep this in mind: always be delivering.