Have you ever had that feeling? You have all the motivation, all the ideas and all the enthusiasm in the world. You're finally ready to start on the project. You know the one. The one that you've always wanted to do. You've been thinking and planning it for months and now finally have time to get started. You set aside a few hours, away from any distractions and ... nothing.

Your fingers sit idly on your keyboard, eagerly awaiting the signal from your brain to produce this masterpiece of software. Nothing.

Your can picture it perfectly in your mind. Such an elegant work of work, the definition of software perfection. Each algorithm and data structure mapped out to perfection - and yet, nothing.

A greater feeling of frustration I have not known. Why is it that I can visualize my work so clearly, and yet be incapable of producing the finished, or even initial, version of the product? This thing called software development that teases me with glimpses of beautiful flowing code and yet frustrates me with inability to produce.

Not a mental block, no. My mind works, brilliantly. My hands and fingers equally so. Why then this lack of translation? The translation of vision to visibility, plan to product. How can one overcome this crippling sense of inability?

The answer, you ask? Start over.

Do you remember when you first started out in this field? Did you ever have trouble producing code of any kind? For me, the answer to that is no. The code I producded was often horrendous, shocking to the point that I hope to never see it again, but code none the less. Code which I wrote.

Why not go back to that time, for a time. Go back to not being afraid to write code. That's the key. It's ok to write bad code. You probably won't win prizes with it, your may not be invited to speak at conferences because of it, but that's ok. The most important thing is it will get you writing again.

Pick a new language, framework, concept and run with it. Follow the "Hello World" example/tutorial. Get your feet wet and write something silly. A random name generator, a calculator, a GIF generator. Whatever you want - let you mind roam free. Use this as an opportunity to contribute to that open source project you've been looking at for a while. It won't be long before you find that through writing "bad" code, that the good code will flow once more.

What have you found to help with getting back into the flow? Let me know on Twitter!

Programmer's block