As a simple experiment, open up your favorite development environment and write a unit test to do something trivial like reversing a string. Once you are done, run your unit test and verify that the test fails, i.e. make sure it is red.

Assuming you are playing along, I now want you to now sit back in your chair and, as hard as you can, I want you to wish, desire, hope, and pray for the test to pass. Try repeating back to yourself 15 times that this unit test well pass. Visualize the test going green in your head. Leave the test and go take a shower, let your subconscious chew on it for a while. Call up a friend and tell them that you're going to make the test go green. Whatever it takes, just want that damn test to pass!

Once your desire has been fully established go back and run the test again...

Did it go green?

If it did, please call up a paranormal investigator as your house may be haunted. I have a brother-in-law who may be able to connect you to one if you have no idea where to start.

It's okay if the test didn't go green this time. Maybe you just didn't want it bad enough. I suggest going out for a beer with your friends and sharing your disappointment with them.

A few days from now start thinking of this test again. Why won't it just pass? Think about that... you really want it to pass, right? Is there anything you can do? What is missing?

Alright... now that you've suffered enough go write the little bit of code it will take to make that sucker pass.

When you're all done run the test again...

Did it go green?

If it didn't, you may want to practice trivial code writing more often. Assuming it did pass, let me first congratulate you on this accomplishment, and, second, I want to you think hard about why the test failed to go green the first time.

You wanted it to go green, you immersed yourself in the desire, you hoped, you prayed, and yet it didn't pass. Why didn't it pass?

It did not pass because no action was taking to make it pass, i.e. you didn't write the damn code! So long as you did not dissociate yourself from reality too hard, you knew the entire time that modification of the code was required to make the test pass.

The same is true about any desire in life. Any unfulfilled desire is a test sitting red. It does not matter how much you want or wish for your desire to go green it will never happen without taking some action to cause it to do so.

Herein lies the answer to obtaining any desire... take action.

As the complexity of the desire rises the action to take becomes a difficult decision, and so many times action is not taken at all. You may want to start a business, but you don't know what type to start. You may want to write a book, but you can't decide on a genre. If you let excuses like these prevent you from taking action then you'll never go from red to green.

Instead of worrying about failure and what type of action to take, just pick something in the general direction and go with it. If it fails, pick something else and do that. Continually refactor your action until your test passes. Failure is a tool, the whole concept of TDD is built on this.

I'll end this here... this blog post is me taking action. I have tests sitting now in red. I doubt this post will cause them to go green, but that is not stopping me from taking some action.