The saying “fail fast, fail often,” is by no means a new concept to agile teams, but what does it really mean? The idea that failing often is a good thing can be tricky for people to wrap their heads around. After all, we live in a culture that demonizes failure and attributes negativity to it.
To some degree, this is true. If your company released buggy software, for example, it wouldn’t necessarily be a great thing. In fact, it would probably be pretty terrible. Revenue would be lost, money and time wasted, and reputation tarnished.
So, how and when can failure be a positive?
In business, agility is absolutely crucial. A company must be quick to respond to market and operational changes in order to stay on top. Through this process, however, mistakes will be made. Nothing in life is perfect, so expect failure and expect it to happen more than you’d like.
Even with that said don’t be afraid to fail! It takes failing sometimes to find success. What you don’t want, though, is failing just to fail. In other words, failing thoughtlessly. Failure can often be a good thing, so long as you and your team learn from it.
This is why you must test, test, test!
Having poor testing or no testing practices in place is a sure way for your company to find itself with a busto product. Think about it. When you’re creating a new product or feature, you’re essentially guessing. Yes, you may be using requirements as a guideline, but, ultimately, you’re playing the guessing game and mistakes will be made. The key here is to make those mistakes quickly and learn from them fast.
Additionally, bear in mind, that this doesn’t mean you test once your team has written the software. You need to test as you go – unit test the heck out of it.
Provide developers with a fail-fast environment by having a dedicated team of testers to build test cases, unit test code and develop the many user scenarios your software will encounter. This will ensure that failures are identified quickly and changes implemented swiftly, effectively shortening the feedback loop.
Furthermore, to complement testing strategies, supply your testing team with the proper tools and technologies to help speed the process of discovery. With Functionize, for example, our machine-learning platform automates software testing and takes away the bulk of difficulty when creating test cases. Whereas other testing products local server infrastructure, software downloads or custom script downloads, Functionize runs completely on your browser in the Test Cloud. This makes it substantially easier to create and maintain test cases much more quickly, as it doesn’t take any prior coding knowledge to use it and allows your team to run sets of tests as often as liked. Again, giving your testing and development team the ability to identify failures quickly, learn from them and execute change.
Ultimately, the quicker you can deal with failure, the quicker you can succeed. Just remember, however, to do it intelligently. Leverage your testing team’s skills and implement effective methods and tools to efficiently bring failures to light. In doing so, you will provide an opportunity for learning and improvement in order to establish a successful and resilient product.