In the article, "Psychology and the Agile Methodology
," the concept of embracing failure was put under the microscope. In summary, although agile encourages failing fast and often, this can be a difficult concept for people to accept. This predisposition is due to modern expectations and the barriers pre-built into human nature. Most educational systems indoctrinate their students with the mental equation "hard work + time = success" and the "failure is not an option" mentality. There are many positives to this approach, but it can create unintentional mental roadblocks towards failure. In this article, let's look at failing fast from a slightly different angle. This refreshing direction might help some understand and embrace one of Agile's core concepts a little easier.
Telling someone that failure is a great way to succeed might sound like a fools proposition. This is due to the negative memories and emotions that failure rekindles. Some of the most unassuming products were a result of failure. The following list highlights a few:
- It took Thomas Edison thousands of failed attempts until he found the correct filament for the light bulb.
- Kleenex tissues were originally created to help women remove make-up.
- WD40 gets its name from the number of attempts to get the water displacement formula correct.
- Post-It notes were invented to replace bookmarks. Their idea was a failure.
How did the previous list of products succeed? They learned from their failures. The phrase "Fail Fast, Fail Often" is unfortunate because it sets the wrong tone. It should be "Learn Fast, Learn Often." It's not about failing. It's about learning. The purpose of failing fast is to learn and adjust course more quickly. This saves time and money. The Lean methodology take this concept one step further with the statement "Think big, act small, fail fast; learn rapidly."
Fully embracing this concept is not easy, but the rewards are palpable. Try it, have fun with it, and don't forget to learn/grow. Although books might help a programmer expand his or her knowledge, failure creates seasoned programmers. This makes them more valuable to their company and the industry. Experienced developers are hired not for their skill alone, but for their vast knowledge from prior experience. Being able to avoid pitfalls and provide expertise to others is where developers can flex their muscles.
As failure is embraced it has a tendency to find its way into programming architecture. Companies such as Google took this concept and used it to become very successful. In the early days, they purchased thousands of old computer parts and built make-shift servers out of them. This idea was unheard of at the time. They built these servers with the assumption that many would fail. But armed with this knowledge, the software team created a "fault tolerant" system that recognized failure and gracefully continued without impact to its customer base. They solved an expensive problem with a cheap solution. They used failure to their advantage.CodeProject