As our team gets closer to launching our latest start-up, I wish to pass on a piece of advice that has been a tough lesson for me to learn. Working on the business side of the shop, I have fought against automated tests for a while. That all changed recently. My epiphany came after dealing with a few problems, doing some research and receiving sage advice from multiple people while working on Printchomp. The conclusion I reached was that automated tests save developers time and let you deliver more. This was a painful admission, but a correct one. Let me explain further as to how I came to this realization:
1. Time it takes to do QA (Quality Assurance) without automated tests – I have been in multiple start-ups where automated tests didn’t exist, and let me just say the QA overhead was astronomical. Every time a new feature was rolled out we would have to check the code in multiple browsers in painstaking detail to see if a user could still make it through the checkout process. Due to the fact that basic testing flows weren’t in place, we would waste countless hours every time a new change or feature was introduced.
2. It keeps the locus of control of the QA process closer to developers – I have advocated for a long time that there needs to be closer ownership of code by developers themselves. I have seen many instances where code was checked carelessly, and then tossed over the fence for the QA and business folks to find and fix the errors. With automated testing, developers can run more localized testing and make quick fixes that don’t involve monopolizing QA. Running unit tests ahead of code check-ins are an invaluable step to save headaches later and reduce stress between stakeholders.
3. You build faster – While it seems counter-intuitive, building tests saves you time in the long run. The knee jerk reaction is to spend your time building new features. I have had this reaction many times, but I realized I needed to change it. The best way, I think, is to think of your product as the Starship Enterprise. Scotty, an engineer, can only check so many things at once. An automated test multiplies the ability of Scotty to diagnose and test multiple things. As Captain Kirk, your goal is to keep the Enterprise going forward. Something as simple as automated testing can keep you going at light-speed. One of the biggest time sinks in development is finding the problem. With proper tests in place you can isolate and figure out where the issue is.
4. Ramps up training of new developers – With automated tests in place, it is easier for new developers coming into the system to understand code that they didn’t write. There is no one, probably not even your CTO, that will know every line of code in your system. If you have mechanisms in place for people to review and test, new users can quickly learn how the system works, key break points and key flows.
5. Listening to wise people – whether it is from my CTO, Declan Whelan (an agile-ista), or getting amazing knowledge from people like Joe Stump, you need to listen to the smart people around you and let them put in place an infrastructure for success. It also empowers you to give you the courage to go quickly, and push a feature that will work. Automated tests ensure that you can be confident that the feature you just pushed will work and you don’t hold your breath waiting for something to fail.
In conclusion, automated tests save time and help you get to market faster. If your goal is to rush to MVP without putting in place a scalable infrastructure that allows you to grow your code base, you are not only making a technical mistake but a business mistake. All startups that have dreams and design to grow and scale fast should be actively considering testing against all their main user flows. Those that don’t will do so at their own peril.