3 Essentials for Releasing Software at Speed Without Losing Quality
How to reduce time to market while maintaining quality?
How long does it take at your company, from the time someone in sales or marketing comes up with an idea, to the time that it’s making money and adding value to your users? Let’s say it’s a simple change to your software or an added functionality in which everyone agrees that it would be an improvement. And, let’s say that the change would have to be able to support 100,000 users in a 100-minute window. You want to avoid any risk and also design and ship it so that it provides a great user experience. How long would it take to make that a reality? If you think it’s five days, for example, how much time could you possibly shave off that? A few hours? A day? Two days?
With any digital transformation, it’s essential to attain “quality at speed” to be able to provide quick solutions with a reduced time to market, but without sacrificing quality. In this hyper-competitive world, the difference is not in who has the best idea, but in who can implement it and bring it to market in the shortest time, in the best way, with appropriate quality.
How can companies achieve quality digital products at speed? Over ten years since founding Abstracta, my colleagues and I have noticed three team capabilities that play a pivotal role: the ability to leverage AI, to automate the build pipeline, and to cultivate a strong team culture that leans heavily towards Agile and DevOps. Here’s why!
1. Leverage Artificial Intelligence
According to the World Quality Report 2018-2019 by Capgemini and Sogeti, an average of 22% of IT budgets goes to AI projects—and it’s even higher in the high tech industry; 25%. Fortunately, today there are many AI-based tools from which developers can choose such the IBM cloud console, which allows you to enable voice recognition, image processing, and more very easily. Similar platforms have also been built by Google, Amazon, and Microsoft.
The Importance of Data Science Skills
Okay, maybe not just anyone can set up these tools quickly and it’ll be a challenge to actually create something of value with these AI tools. But, companies are realizing the ways in which they can solve problems and streamline processes.
In this regard, we’ve found at Abstracta that incorporating a data scientist is key, since this role is imperative for handling the use of today’s machine learning and artificial intelligence tools. I know that hiring a data scientist sounds intimidating, but we’ve found a practical, cost-effective way to do so.
A year ago, we realized we could benefit from creating an AI tool that would streamline aspects of our operations so that we could focus more of our energy on delivering better software testing services (instead of getting caught up in paperwork). At the time, we didn’t have anyone specifically trained in machine learning in-house, but one of our team members, Rodrigo Quintana, being highly mathematically-oriented, jumped at the opportunity for us to enroll him in the Coursera course, Data Science Specialization, by John Hopkins University. Today, Rodrigo is already collaborating in the research and development of our own tools and even contributing to the development of one of our most important client’s testing products.
With all of the online courses available today, it’s easier than you’d think to develop someone’s data science skills in-house, you just have to find someone who is motivated and give them the time and space to dive in.
According to this Sogeti article reflecting on the World Quality Report, Abstracta is not unique in incorporating this role,
“As AI in Testing and QA matures, three new roles will distinctly emerge: AI QA strategists, data scientists, and AI test experts.”
AI-Based Testing Tools
When it comes to AI specifically applied to software testing, it’s the newest generation of test automation tools that embraces AI the most, making tests even more powerful and robust, like mabl, Testim, and a visual regression testing tool developed by one of our own at Abstracta called Oculow. The AI aspect of these tools helps to facilitate test maintenance and speed up execution times even more than traditional test automation tools can. Read more about test automation and AI in this post.
To sum it up, using AI to enhance your operations and your testing toolkit will allow your team to focus on quality, move faster, and still detect major errors before go-live.
2. Set Up an Automated CI/CD Pipeline
It should come as no surprise that to facilitate agility and velocity, teams should adopt DevOps and set up a Continuous Integration/Continuous Delivery (CI/CD) pipeline for building products.
Ultimately, a scheme needs to be in place wherein whenever a developer makes a change, he or she receives an almost immediate notification about whether the change was approved or not, thus increasing productivity through continuous feedback and helping to detect errors nearly instantly, when they’re easier to fix.
In the graphic above, you can see this pipeline is built on top of an integration server. The most popular one in the open source world is Jenkins, but there are dozens to choose from.
So, what types of processes can be automated in a CI/CD pipeline? Actually, quite a lot!
Automated Regression Testing
One of the first things to consider are regression tests, first of all at the level of unitary code, then at the integration level, and finally at the UI level, a.k.a. end-to-end tests. As mentioned earlier, there are dozens of great tools meant for this type of test automation, some of which are enhanced with AI.
After setting up functional test automation, these tests can be enhanced with the help of the cloud, for example, testing in a device cloud, like AWS Device Farm which is great to scale or Saucelabs for executing on devices with different browsers and operating systems, thus achieving cross browser testing.
It’s well known that performance is another relevant aspect of software quality as users have less and less tolerance for long page load times. They want systems that are not only updated often, but have a great user experience.
With one client of ours, Shutterfly, we helped its performance engineering team to automate performance testing in its CI/CD pipeline which enabled its devs to know instantly and automatically when a new line of code caused Shutterfly.com’s performance to worsen. Read more about how exactly these tests were set up here.
Other Automatic Checks to Consider
Undoubtedly, this does not mean testers are unnecessary, but if teams decide to do everything by hand and not empower themselves with the right tools, they can hardly achieve the competitive difference that comes from releasing high quality software at speed.
3. Build a Strong Team with an Agile and DevOps Culture
Having the right capabilities and technology stack is important, but in order to truly achieve quality at speed, it’s essential to have a team that is highly Agile and engaged.
Don’t Do Agile, Be Agile
It may go without saying that in order to receive feedback and deliver value continuously, it’s absolutely necessary to follow agile practices combined with a DevOps culture. It’s also important not to just work in such a way on paper, but on the ground (which is much easier said than done).
If teams don’t fully embrace the values of the Agile manifesto, then applying methodologies like Scrum will be doomed to fail. Teams who are “being agile” embrace change, innovation, and learning and creating value as soon as possible.
Keep Team Members Engaged
To achieve your development and business goals, it’s essential that everyone on the team find meaning in what they do and feel connected with the company’s broader objectives. Without this, a high employee attrition rate may result, which will inevitably slow down development and negatively affect morale.
To boost engagement, we’ve been helping each of our employees to create a roadmap—a strategic plan—to achieve both their personal and professional goals. This transformative practice has given us the tools to gain greater insight into our employees’ desires, doubts, and concerns they may have about their position. Thereby, we’ve found new avenues to accommodate them and adapt to their needs, accompanying them every step along the way.
In the last year, we’ve seen greater overall levels of employee satisfaction and, as a byproduct, a 75% decrease in turnover from the previous year. With less employee churn, we’ve been able to improve the continuity of our testing services and better serve our clients, helping them release better quality software, faster.
Achieve Quality at Speed
Looking back to my question at the beginning of this post, in order to release a highly performant, reliable, and robust new product feature in less time than it normally would, what should teams do?
We’ve found from our experiences that teams need to be empowered in three ways: by leveraging AI, implementing an efficient, automated CI/CD pipeline, and building a great team with a strong culture around Agile and DevOps.
What are some other essential keys, in your opinion, to releasing the best software possible in ever shorter timespans?