Finding the Solution to Crappy Software

Organizations are increasingly dependent on software to run daily operations and generate revenues and this dependence has served to heighten executive awareness about the need to improve software quality. It’s no surprise then that application development organizations have always sought ways to improve the scalability, performance, security, integrity and reliability of the software they deliver.

Applications that are created without foresight (or even regard) for functional and non-functional quality face a very real threat of failure. With technology’s increasingly strategic role within business, a software failure can take an organization down with it. The FAA’s software problems that lead to nationwide delays and groundings are a good example. This is just one high-profile example of software issues that are nearly unavoidable due to a reliance on antiquated software development processes.

The responsibility for effective software quality rests with CIOs. Quality needs be ingrained into the development culture every step of the way. As I used to tell my IT associates, our customers are not expecting that we produce junk for them to operate and manage the business.

The problem is that most software development organizations aren’t sure how to achieve this goal. As with most things related to application delivery, software quality is still viewed as a “black box”. Sure, there is testing as part of every software project but what is really going on under the hood? The path to improvement varies from business to business, so there are no clear business rules or principles to follow. As a result, CIOs inadvertently focus their efforts in areas that often yield little return.

For example, companies often make costly software investments in test automation tooling, but they don’t see expected quality improvements. Or they develop processes that pass capability maturity model integration (CMMI) appraisals, but don’t yield measurable improvements in delivered software. It’s no surprise then, for many companies, investing in quality improvement seems like an endless cycle of unproductive spending.

Finding the Solution

What organizations need are a set of principles to help identify the most critical steps to improving quality. By making process and automation choices that deliver tangible, measurable benefits and stem from a careful analysis of an organization’s unique needs, software quality can be quickly and significantly improved. The good news is there are identifiable, quantifiable stages and steps to the software delivery process that can guide an organization in transforming the quality of its software.

However, the first step is to understand where you are today. What areas are going well? Which are ripe for improvement? Only with this understanding can you identify where you would like to be regarding software quality and what it will take to get there.

To this end, I would like to introduce a framework that can help organizations identify the most critical steps to improving quality. It empowers you to make process and automation choices that deliver the most appropriate and impactful benefits based on a careful analysis of your organization’s unique needs. This “quality maturity curve” defines a clear path for lasting change by providing five stages that represent a template for gradual quality improvement.