Why Do We Keep Having the Same Software Problems?

The thirty years I have spent in software have bridged a period of remarkable and ever accelerating change. Mercifully, coding an online system on a black and white CRT that accesses an IMS database is mostly a quaint memory. Technology, tools, and processes have all evolved. Why is it, then, that we continue to have the same problems we experienced in the Information Technology Dark Ages? Here are the symptoms:

  • Software projects that continue to overshoot their schedules
  • Quality problems neither disappeared nor lessened to an acceptable level
  • Budgets are regularly exceeded: sometimes wildly
  • Project estimates are inaccurate

I see two principal reasons. I’m certain there are others.

Our Focus on Technology

We are not Luddites resisting change; we love technology and embrace it wholeheartedly. We have a rich array of programming and testing tools at our disposal. Why, then, have problems with cost, schedule, and quality persisted?

One reason is that we focus on technical solutions to problems with many non-technical components. Suppose you have the choice of coding a project in COBOL or Visual Basic. (Suspend your disbelief for a moment and accept that both languages are suitable for the task at hand.) You will produce far less code in VB than in COBOL. You may see some slight reduction in cost and schedule; but it will not approach the 40 – 50% reduction in code that will be seen if you choose VB over COBOL.

The reason is fairly simple. On a project of any size, coding and unit testing is not where most effort is expended. One number that is touted puts coding/unit testing at 30% of total project effort. This means that a 50% reduction in coding effort yields only a 15% reduction in project effort. While we want and need more effective tools for coding and testing, they have little impact on the remaining 70% of project effort.

Research done by QSM in 2006 for IT projects and repeated in 2011 for Engineering Class projects found that the key differentiators between low cost, quick to market, high quality projects and their opposites were how well these projects dealt with the human factors of software development. As a side note, the choice of programming language was poorly correlated with success or failure.

Human factors are fuzzy – unlike the choice of a tool – and it can be hard for those of us who enjoy technology to admit that non-technical factors have a greater influence over our projects than technology. But take a step back for a moment and remember a project where the project manager was ineffective, planning was poor, and team cohesiveness non-existent. It wasn’t a pleasant experience, and very likely the project wasn’t fast to market and high in quality and productivity.

Deliberate Ignorance

There is an old myth about King Canute and the sea. One version of the story portrays the king as very full of himself and his authority. Canute had his throne placed on the seashore and commanded the tide not to come in. The tide ignored him and the king nearly drowned.

Software has been studied for a long time now, and we know quite a bit about how it works:

  • We know that the relationship between cost/effort and schedule is non-linear. Within a given range, the optimal team size and schedule can be determined.
  • We know that adding staff to reduce schedule is ineffective and costly.
  • We know that organizations have characteristic staffing and productivity patterns that define their current capabilities. Unfortunately, we also know that this information is frequently ignored.

The reasons are many; but ignoring past experience only guarantees that projects will continue to fail.

“Facts do not cease to exist because they are ignored.”  (Aldous Huxley)

Want more information on the leading application development solutions?
We’ve compiled top product reviews, blog posts and premium content on the application development resource page. To find the best QA testing software or defect tracking solutions, download and browse one of our free Top 10 Application Development reports.

Donald Beckett: Donald Beckett has more than 15 years of experience in software process improvement, software metrics, and productivity and quality analysis. His responsibilities at QSM include mentoring new customers on the use of QSM software tools, consulting to QSM clients, customer support, research, function point analysis, and estimating. Don is a respected presenter and published coauthor of the book, IT Measurement: Practical Advice from the Experts. Don has helped many organizations tie their process improvement efforts to measurable gains in productivity, quality and predictability. Recently, Don has done in depth analysis on the productivity of Agile development and estimating and monitoring large ERP implementations. Don comes to QSM with an extensive background with EDS, now HP, where he led both the function point and software estimation communities. His work also includes extensive baselining, benchmarking, and outsourcing and marketing support. He has completed more than 2,000 SLIM estimates since 1996. Don speaks Spanish fluently and can conduct business in that language. Don is a graduate of Tulane University and a former Peace Corps volunteer. For more information, please visit: www.qsm.com.