The weakest link
Tags: Management, Testing, Failure, Software Development

In modern software development tight deadlines are common place, and fitting quality in to the time frames given can often be a challenge. However as a developer, tester or any part of the machine you are also responsible for what is being created.

As our technological capabilities keep growing so does the complexity of systems which in turn increases the potential areas of failure. However there is a more insidious factor in play in major failures that is completely human.

First we will discuss the Mars Climate Orbiter disaster that costed years of work and hundreds of millions of dollars that spectacularly crashed into Mars. In the deep analysis of the disaster by IEEE we can observe how the people involved in the project had doubts early on that something was not right:

“NASA confirmed this navigational “unease.” According to Stephenson, within days of the activation of the small forces model, navigators began to suspect something was not quite right with the spacecraft’s ephemeris. “We even had a big meeting in Denver about this,” he told the press conference on 10 November. “But the issue was never resolved.”

Even having clear data indications of something being wrong the mission continued to its inevitable demise, for the strongest and the weakest links in the system were us humans as the closing statement in the report sums it all up:

“In that situation, managers chose to cling to assumptions of “goodness” even as engineers insisted the situation had strayed too far into untested conditions, too far “away from goodness.” The engineers were challenged to “prove it ISN’T safe,” when every dictum of sound flight safety teaches that safety is a quality that must be established — and reestablished under new conditions — by sound analysis of all hazards. “Take off your engineering hat and put on your management hat” was the advice given to one wavering worker, who eventually went along with the launch decision.”

Now this is not a singular point in our recent history where such devastating incidents have occurred, actually it is more common than we care to admit. For who could forget these incidents:

The common point of failure in all of these disasters is simple; humans. More specifically it is the failure of the management, and the people working in the projects not having enough will to push back against the management. An individual within the organization might not be enough always to fix an impending disaster, but one has to at least try. We all have a due diligence not to the stockholders or to the management, but to the people who are putting their lives into the hands of our products.

Machines work the way they are built and coded and we do make mistakes and bugs occur. We can however with enough time and effort engineer products that are safe and perform as intended. When we start chipping away from the these principles we start lowering our confidence in the end result. At this critical juncture we become the weakest link if we make the error of looking the other way due to pressure from “the top”.

Even the strongest tree will fall in wind if the roots are shallow.