Software bugs are called "bugs" for a reason: These pests have been around for a long time, they always turn up in code at the most inopportune times, and there's no proven way to eradicate their existence.
Today's brutal business climate-a dearth of time and staff as well intense cost pressures-have made "the need for speed" a more apt mantra for development teams rather than assuring that "quality is job No. 1."
But that doesn't mean those apps dev teams have to accept the way it is ("Software will always have bugs") and toss away any notions of improving the quality of their code.
A new Forrester Research report, Seven Pragmatic Practices to Improve Software Quality, by analysts Margo Visitacion and Mike Gualtieri, offers practical, reality-based ways teams can make progress on improving their code's quality. (Forrester defines quality software as: "Software that meets business requirements, provides a satisfying user experience, and has fewer defects.")
[ Go inside American Eagle Outfitters' 8-Day Website Nightmare and Zappos.com's $1.6 million pricing mistake ]
The analysts are well aware of the top issues that plague application development teams, which is why their nuggets of wisdom aim to minimize the potential costs and pain involved.
"Many enterprise application development teams invest in tools, processes and people, yet many still struggle to improve quality," write Visitacion and Gualtieri. Hence, the analysts claim their seven pieces of pragmatic advice won't break the bank, cause a revolt among team members, or slow down development processes.
"Quality cannot be sprinkled onto an application right before it gets exposed to your clients," the analysts write. "Rather, it must be a part of the entire software development life cycle (SDLC) from inception through implementation. As such, responsibility for quality falls squarely on the shoulders of the application development manager-it is not solely the responsibility of QA professionals." Here are brief encapsulations of the seven steps taken directly from the Forrester report:
Pragmatic Practice 1 Define Quality to Match Your Needs Impact on Quality: Meet business requirements; achieve a satisfying user experience. Benefit: Your ability to achieve quality is improved because the application development team is not charged with unrealistically perfect expectations. Rather, it is chartered with a definition of quality that fits the given time, resource, and budget constraints. Relevant Roles: Business stakeholders; entire application development team.
Pragmatic Practice 2 Broadcast Simple Quality Metrics Impact on Quality: Reduce defects. Benefit: Highly visible metrics keep quality top of mind for the entire team and expose when efforts fall short. Relevant Roles: Entire application development team.
Pragmatic Practice 3 Fine-Tune Team/Individual Goals to Include Quality Impact on Quality: Meet business requirements; achieve a satisfying user experience; reduce defects. Benefit: Team members perform according to their incentives, making quality improvement part of their goals reinforces desirable behavior. Relevant Roles: Management.
Pragmatic Practice 4 Get the Requirements Right Impact on Quality: Meet business requirements; achieve a satisfying user experience. Benefit: Less rework means less retesting and fewer cycles, which greatly reduces the overall effort. Relevant Roles: Managers, business analysts, user experience designers, architects.
Pragmatic Practice 5 Test Smarter to Test Less Impact on Quality: Reduce defects. Benefit: A focus on testing the most crucial and at risk areas ensures that they receive the lion's share of test resources and that any bugs that slip through are likely to be confined to the least-important features. Relevant Roles: Quality assurance, managers.
Pragmatic Practice 6 Design Applications to Lessen Bug Risk Impact on Quality: Reduce defects. Benefit: Simpler, cleaner designs result in code that is simpler, cleaner, and easier to test and rework-which means that the code will have fewer bugs and that those bugs will be easier to diagnose and repair. Relevant Roles: Architects, developers.
Pragmatic Practice 7 Optimize the Use of Testing Tools Impact on Quality: Reduce defects. Benefit: Automation frees resources from mundane testing to focus on the highest-priority tests and increases test cycles' repeatability. Relevant Roles: Quality assurance, developers.
Visitacion and Gualtieri conclude that software quality is a team sport, and everyone needs to play.
"Quality must move beyond the purview of just QA professionals to become an integrated part of the entire software development life cycle to reduce schedule-killing rework, improve user satisfaction, and reduce the risk of untested nonfunctional requirements such as security and performance," they write. "Managers must make quality measurable and incent all roles on the team to improve it."
Do you Tweet? Follow me on Twitter @twailgum. Follow everything from CIO.com on Twitter @CIOonline.
Read more about applications in CIO's Applications Drilldown.
Join the CIO Australia group on LinkedIn. The group is open to CIOs, IT Directors, COOs, CTOs and senior IT managers.