If every year seems like it brings a whole new ballgame for software development, you’re not imagining it.
The latest winning strategy? The increasingly pivotal role of quality in the software development lifecycle.
Whereas quality assurance used to be a siloed stage at the end of the development process, there’s now a push for QA to be integrated throughout the development lifecycle. This push includes both ensuring QA activities occur earlier and more often and making quality everyone’s responsibility. Today’s most innovative organizations are integrating quality by aligning developers and testers as a single, cohesive unit that is jointly responsible for delivering high quality, stable, secure software.
Take Google for example. Rather than having a large testing department, Google makes all developers responsible for writing tests for the code they submit. Because quality is integrated into the development process, it becomes a preventive measure rather than a last step that delays deployment. According to the company’s Director of Test Engineering James Whitaker, that’s because “quality is a development issue, not a testing issue.”
In a series of posts on the company blog, Whitaker explains the reasoning behind this strategy. “To the extent that we are able to embed testing practice inside development, we have created a process that is hyper incremental where mistakes can be rolled back if any one increment turns out to be too buggy,” Whitaker says. “We’ve not only prevented a lot of customer issues, we have greatly reduced the number of testers necessary to ensure the absence of recall-class bugs.”
How Software Development and Quality Assurance Trends have Evolved to Meet User Expectations
For Google, embedding quality into the development process is essential to success. Millions of users rely on Google’s software to get through their daily lives. But any organization developing software stands to gain by paying attention to the increasingly central role of quality within the software development lifecycle.
Companies like Google that deliver high-quality software to a large number of users have set the standard for what today’s consumers and business users expect from their software, including regular, bug-free updates. And given how much we now depend on software for a variety of purposes, the impact of poor quality software can be quite significant.
As Kevin Dunne noted in a QASymphony blog post, the stock price for companies experiencing a news-making software failure fell about 4 percent on average in 2015 and 5.7 percent when they suffered multiple failures, adding up to $2.7 billion in lost market capitalization.
In response, many teams are changing the methodology and tools they use to bring new software to market. Specifically, there’s been a shift from Waterfall to DevOps, and the number and types of technologies used throughout the development lifecycle have exploded.
It’s no surprise DevOps is everywhere today. The methodology, which promotes developer-tester alignment and integrated QA practices, hit 74% adoption in 2016. There is significant evidence that the integrated approach works. According to McKinsey, taking a DevOps approach has helped teams reduce the time to move from code to production by as much as 74 days.
Meanwhile, the number and types technologies used throughout the entire development lifecycle have grown exponentially. A market once dominated by major players is now saturated with hundreds of niche providers. In fact, at our last count, there are just shy of 1,500 different tools available to assist across the seven major phases of the software development lifecycle.
Three Ways Evolving Software Development Trends Have Affected Quality
These trends indicate that quality can no longer be an afterthought in the software development lifecycle. Three critical changes to quality assurance efforts demonstrate this shift:
1. Quality Objectives Have Changed
The adoption of agile and DevOps methodologies has highlighted the importance of quality, but the truth is, it was always important. The biggest change here isn’t that quality has become a priority, it’s a change in the objectives tied to quality.
Consider the 2017 World Quality Report finding that the No. 1 objective for CIOs and senior technology professionals today is to “increase the quality of [their] software or product.”
Next on the list are the related objectives to “ensure end user satisfaction” and “implement quality checks early in the lifecycle.” Notably, “detect software defects before go live” dropped significantly in importance compared to 2016, largely because teams aim to avoid having these defects in the first place by bringing QA activities into the process earlier.
Other changing objectives that support this emphasis on quality and speed to market include optimizing overall software development costs and allocating funds toward the highest risk areas.
2. Quality Has Shifted Left
To meet these new objectives, quality has shifted left in the software development lifecycle.
But what exactly does it mean that quality has shifted left? If we think of the software development lifecycle as a linear process that moves from left to right, quality assurance has traditionally lived all the way to the right, at the very end of the process. These efforts are now shifting left, meaning they are taking place far earlier in the process than they once did.
This shift left is important for two reasons:
First, putting QA at the end of the process makes quality an afterthought. At that point, testers may very well be handed defect-riddled software, forcing them to go on a treasure hunt to find and diagnose problems in a short period of time.
The shift left makes quality a priority from the very start, which allows the software to be developed from day one with quality in mind, therefore moving the emphasis from defect identification and resolution to defect prevention. This defect prevention and overall emphasis on quality is essential given the heightened stakes of delivering poor quality software.
Second, the increased speed of releases today increases the risk of defects. Embedding QA throughout the development process can help create a checks and balances system so that the team doesn’t get too wrapped up in delivering a speedy release, often waiting to perform QA until it’s too late.
3. Quality Team Dynamics Have Changed
In order to accommodate this shift, team dynamics must also change.
The software development lifecycle was traditionally siloed by business planning, development and testing, but that dynamic will no longer work.
Today, teams are moving toward smaller and more nimble cross-functional teams composed of business stakeholders, developers and testers. This new team structure allows every voice to be heard at every stage of the process in order to ensure that each group’s objectives are met throughout the entire lifecycle. Specifically, this change in dynamic allows for stronger collaboration across the three groups to help satisfy business goals faster and more accurately while guaranteeing quality at every step of the way.
Quality Assurance Plays a Starring Role in the Future of Software Development
Quality has always played a role in software development, but it’s never been more integral than it is today. That shift comes as a direct result of software development trends around speed to market and changing user expectations.
And as quality continues to increase in importance, software development teams recognize that it can no longer be an afterthought in the release process, and stakeholders across the business must work together to ensure everyone feels responsible for bringing only the highest quality software to market.
We just need a little info from you.