You know what I love about programming? There are a lot of problems to solve.
Every step of the way, you're taking something that doesn't do what you want it to do and finding a way to make it work.
As I got better this I thought, "Cool, I'm getting to be a better programmer."
Lately, I've been realizing that the fundamental skills of coding reach far outside the digital world. In fact, programming has made me <em>a better person,</em> largely because it's taught me what to do when things aren't working.
The following applies to programming but I hope you'll see that you can use it just as much in your day to day life.
Sometimes while developing software you come across a bug that you just can't seem to figure out. You swear it must be a problem with the operating system or programming language and have to remind yourself that this is almost never the case - it's your problem to fix.
For a programmer, these really tough issues are, as Seth Godin puts it, <a href="http://sethgodin.typepad.com/the_dip/" target="_blank">the Dip</a>.
There are no clear, sensible paths to go down next. You want to give up because things just aren't working... but if you don't, success is just over the hill.
What I've learned is that in situations like this, the only important thing is to create motion by any means necessary. In other words, changing absolutely anything even remotely connected to what you're working on.
Delete pieces here and see what happens there, add lines of code even to check parts you assume are working fine.
Make changes that you know won't solve the problem because they still may lead you to the solution.
The only objective is to shake things up and unearth new pathways to explore.
When something isn't working, put the priority on trying new things quickly instead of finding a direct route to the solution.
I know this sounds crazy, but making unintuitive, "let's see what else breaks when I do this"-style changes is almost always what leads me to the hardest to find answers.
Best of all, this seems to be a universal tactic; it's improved every facet of my life I've had the insight to apply it to.
With the Wind or Against the Wind? Either is fine.
I'm no sailor but I know that when you're on the open seas and using the wind as your driving force, the problem isn't going into a headwind - even energy going opposite to your desired trajectory can be channeled in a useful way.
The problem is when there is no wind, no motion.
Next time you're completely stuck imagine a sailboat lost at sea, water stretched to the horizon in all directions, with no wind.
Except in this scenario, you're not the sailboat, you're the wind!
Start blowing any direction and let the boat harness that energy into moving the right direction.
When You're Stuck, Make Changes
We treat change as if it's something rare, precious and important to get right.
We believe that there's such a thing as 'good' change that works in our favor and 'bad' change that doesn't.
But, it's only when you make fewer changes that it becomes more critical for each of them to have positive effects.
When you, instead, start treating change as an ordinary reflex to doubt and stuckness, it has a new purpose. It becomes less about being right directly and more about exploring the unknown and discovering solutions to problems along the way.
All changes become good because all of them provide answers settling your doubts one way or another so that we can move forward.
Next time you're frustrated because you can't seem to figure out why your app is crashing or your server isn't responding...
Or why you can't wake up on time, or can't quite capture a character in a novel you're writing... or feel uninspired by your latest design or are just unsatisfied with some aspect of your life...
Start experimenting with changes.
Consider that it may be better to consciously make a few mistakes than to be stuck where you are.
You can't leverage stagnation but a gust in any direction can help you discover what you need to finally get things working.