02 Dec Are You on the Verge of a Software Crisis?
“The term “software crisis” refers to a set of problems that highlight the need for changes in our existing approaches to software development.”
– Randall W. Jensen: ‘Why Do We Still Have Software Development Problems?’
New technologies have streamlined business processes; from retail software that makes restocking as simple as a click of a button, to invoicing tools that make billing a breeze.
But this new found connectivity does have the potential to break down.
Is Your Business in danger of a software crisis?
In the 1960s, at a Nato Conference on software development, the term ‘software crisis’ was coined.
Now, over 40 years later, the same problems still persist.
According to Jensen:
“At this conference (Nato), a list of software problems was presented as the major development concerns. The problem list included software that was:
- Delivered late
- Prohibitive in terms of modification costs
- Impossible to maintain
- Performing at an inadequate level
- Exceeding budget costs
The points raised are good ones to consider. Developing software is a costly, time intensive process, and far too many businesses are not reaping effective rewards from their investments.
Considering Jensen’s list, the issues of poor budgeting, unreliable project management, and software that performs below expectations, are clear hallmarks of a potential software crisis.
If the foundation of the software that your business relies on is shaky, then the future is one of micromanaging, alongside a decrease in efficiency on the part of your employees.
What to do
It seems that most software projects struggle to stay within budget, and to meet their intended outcomes.
This level of uncertainty, alongside the spiralling cost of implementing such software, makes it less likely for businesses to adopt new technologies.
But, in the long run this harms a business, its infrastructure, and the efficiency of its workforce.
Jensen’s suggestion involves adopting an overarching process, a piece of software that monitors the software project itself.
The bigger the size, the more complex it becomes. According to Jenson, realistic monitoring, alongside actionable targets, ensure that a software project is more likely to be successfully completed.
It seems though that we’ve still got a lot to learn from the past.
In 1975, Fred Brooks in ‘The Mythical Man-Month’ summed up the ‘usual’ problems of project management and development:
- “More software projects have gone awry for lack of calendar time than for all other causes combined. Why is this cause of disaster so common?
- First, our techniques of estimating are poorly developed. More seriously, they reflect an unvoiced assumption which is quite untrue, i.e., that all will go well.
- Second, our estimating techniques fallaciously confuse effort with progress, hiding the assumption that men and months are interchangeable.
- Third, because we are uncertain of our estimates, software managers often lack the courteous stubbornness of Antoine’s chef.
- Fourth, schedule progress is poorly monitored. Techniques proven and routine in other engineering disciplines are considered radical innovations in software engineering.
- Fifth, when schedule slippage is recognised, the natural (and traditional) response is to add manpower. “Like dousing a fire with gasoline, this makes matters worse, much worse. More fire requires more gasoline and thus begins a regenerative cycles that ends in disaster.”
Brooks considers the legacy of poor time management. We overestimate how easy a project will be, and we fail to react strategically when a problem occurs.
A good approach to take in the early stages would be to consider all potential outcomes. Think deeply on the areas that could wrong (they probably will!) and have contingency plans in place.
I think, personally, that Brooks fifth point is the most prescient. The old adage ‘too many cooks…’ springs to mind.
We need to use skilled software developers to work through problems. It doesn’t help if we add more people to the mix – it only hastens the demise of a software project.
Successful Software Development (Avoid a Crisis!)
Most (if not all) research suggests that successful software development is down to logistics. Good communication, effective collaboration, and an intelligent strategy to deal with problems that arise is the key to simplifying the process.
I think it’s worth considering Jensen’s conclusion to his essay:
“Managing, as well as estimating, is magic for most estimators and managers. Well-known science fiction author Arthur C. Clarke’s Third Law states:
- Any sufficiently advanced technology is indistinguishable from magic.
This illustrates one of the primary problems with software management today. The ‘magic’ creates an unreasonable trust in the development technology and environment and a lack of rational thought, logical or otherwise.”
It’s a good point, and one that I feel needs emphasising. Creativity in whatever form may appear like magic, but it’s not. It comes from hard work, careful thought, and effective use of trial and error.
In software development we need to apply basic and rational reasoning to the process, and we can’t become overly reliant on technology to do the thinking.
You need to factor in human error when planning your software development strategies. Everyone makes mistakes, but it’s what we learn from them, and how we react that defines our later efforts.
Contemporary Software Crises
The reason that the software crisis occurred in the 1960s was down to the huge improvements in hardware. All of a sudden there were computers that could handle complex problems, but there was a lack of software to use.
Now, the software crisis is a frequent battle. With every leap forward in technology, more and more business software becomes outmoded and outdated.
We have to approach software development with clear and realistic goals. We need to know what we want to achieve, and how we’re going to get there.
Really, though, the problem is that we don’t learn from the past.
In 2015, Professor Martyn Thomas talked about ‘The Current Software Crisis’ and what we can learn from it.
His talk is illuminating, and it should help us all to plan ahead better, and to be more effective when it comes to implementing new software.
And we need to think ahead strategically. As St Andrews University states:
“Future computers will consist of thousands or even millions of processors, which poses a real problem to traditional programmers. The sheer complexity of these systems means that powerful tools are needed to develop software that runs stably and efficiently while making the most of the ability to process in parallel.”