Anyone that knows me, knows that I am a huge Apollo space nut. That time in our evolution, we took a human from the earth to the moon, was one of the most intense technology advancements we’ve ever witnessed. Every thing they went after, had to be invented. There was no blueprint for anything. The computing industry was basically born in this era, with so many principles, algorithms and processes still in use today.
I have read pretty much every book written about that time, and one of the best (next to the Michael Collins and Jim Lovell books) is Gene Granz’s excellent “Failure is not an option” book. Granz charts the history of the space program right through to the fateful Apollo 13 mission, where everything that could go wrong, did go wrong. This is when he (played by Ed Harris in the movie) uttered those now immortal words “Failure is not an option”. What he was referring to was that he was not going to let 3 astronauts die in space on his watch – everyone had to be on the top of their game and work as a team to make it work.

Goosebumps moment.
What Granz was really saying, was that failure was not an option at that moment in time, for every other time, failure is most definitely an option. He actually talks of that in the early years of NASA as they had to figure out solutions to problems they didn’t know they had.
It is through failure, that we learn. We have to try things, to see if they work or not. We have to experiment, look at the cause and effect. Through our failure and observation we evolve.
Failure can have consequences though, the worse being loss of human life. There are certain circumstances where one has to be deliberate with our experimentations to minimize the fallout of it going wrong. Fortunately in our world of software engineering (for most of developers) nothing we will do will have a direct loss of life, so phew there. Therefore we should feel free to experiment a little, learn something.
You may have heard of the saying “don’t let perfection be the enemy of progress” (a Winston Churchill quote). This embodies the agile spirit – take small steps, learn, and adapt, and step again. Embodied in all of this, is failure, the ability to accept you won’t get it right first time and as long as you learn something from it, then you are making progress.
The key I have always said, is to be making different mistakes – if you keep making the same mistake, then you bump into that other famous quote often attributed to that clever Austrian fellow Einstein “Insanity Is Doing the Same Thing Over and Over Again and Expecting Different Results”. Each time you experiment you must change one thing.
Throughout my career I see developers/managers being afraid to make mistakes. They see it as a flaw in their character, especially when it comes to admitting it. I have seen too many bosses try to hide mistakes, or point blame, so they don’t look weak. How often have you heard someone hold their hands up and say “oops my bad”? It shows a strength of character, it shows an acceptance that no one is perfect. It inspires others.
Word of advice – failure does not mean throwing caution to the wind. It means you should try before seeking advice or help. Be mindful of what it is you are trying to do and minimize the fallout. For example, experimenting with the SQL DELETE command shouldn’t be done on a production table! However, creating your own local database, and running a whole bunch of tests, will yield far more than simply reading a blog/article on how to do it.
The art of discovery, trial and error, is what creates the connections in our brain. Always jumping to the solution, while tempting, is not how we learn. There are no shortcuts in obtaining intelligence (watch John Cleese talk about this in a short video on what creativity really is)
The next time you hit a problem, instead of getting frustrated or quickly reaching for Google, instead experiment. Try something different. See it as a personal challenge. You may surprise yourself.






