Fail Fast

Failure is something humans don’t emphasize from day to day. Winners write the history books. We don’t keep track of the Guinness Book of World Failures or have Hall of Fames for the worst players. We don’t dwell on the failures, because we are taught that there is a right and wrong answer, so only keep track of what you did right.

I’m not sure where I first heard the concept of “Fail Fast”, but it has been stuck with me for some time now. I’ve come to reference the concepts when writing code as well as starting new ideas. Lately I’ve been seeing articles about why people should not try to “Fail Fast” and it’s made me think about just why I believe it is so important to create anything important.

Don’t let the fear of striking out keep you from playing the game. – Babe Ruth

Babe Ruth is well known for being one of the best home run hitters in Baseball, but did you know he has one of the highest records of striking out too. Baseball is an intriguing sport, because a player that fails to hit a ball 70% of the time is considered one of the best players. These professionals are getting payed well to fail a lot.

Since I was in High School and grades started to mean something, I realized my mentality going into a test of project easily determined the outcome. If I went in with confidence, I did great and when I went in with doubts, I’d do poorly.

The word fail doesn’t mean catastrophic situations that cause your company to close it’s doors, but instead a mistake that was all apart of the game.

You’re not moving fast enough, if you’re not failing the build.

An important aspect of Agile development includes the use of automated tools to detect errors before and after changes have been made. These tools allow the team to move quickly and catch any mistakes along the way. Without these tools the team would either learn about mistakes later on or have to move slowly along to prevent them.

It might be weird to think about why race cars have brakes, since we know they have to stop, but wouldn’t it make more sense to lose the weight of the braking system and just drive it better? Race drivers need to make small corrections all the time, sometimes it’s a turn of the wheel and sometimes they need to apply the brakes. These professionals make small mistakes all the time, but it doesn’t prevent them from racing and winning.

It is important to keep moving forward fast, but sometimes it requires using the brakes.

Get Feedback As Soon As Possible

I’ve been on projects that spend six months, a year, or even longer to get a product out the door, and when the project is met by the public, the fan fair is so small it feels like we failed. Afterwards we blame it on the marketing or PR teams for not getting us more attention, when really it just takes time to get people’s attention.

I’ve worked on many teams that have required parity across platforms, yet inevitably there is a feature that requires no work for one platform and the other platform requires mountains to be moved. What’s even worse is after we’ve moved those mountains, it turns out the feature wasn’t really what the customer needed.

You never can be 100% certain that features will be praised or shunned by your customers until the product is shipped. Most major web application teams will ship features incrementally, but desktop and mobile application teams are still stuck in the mindset that they have to ship big updates.

Stop wasting time guessing if you have the perfect product, get it in front of other people and see if they want it.

Don’t Hide Your Mistakes

One approach to handling errors in software development, is to just let the application crash, “Fail fast and loud”. Although it is the worst scenario for the customer, if it’s an unknown error you can do more harm than good if you try to recover. By making it clear that the mistake occurred, it is possible to get the best solution to the customer.

*****
Written by Mark Schall on 10 September 2015