Customers, Save the software systems - put your foot down

In this article we will try to understand the importance of customers role in solving the various problems related to the success of software systems. We believe that customers are the only stakeholders who can force the software development companies to change their business attitude.

I will start this article by asking you think about the following real world situations.

Lets say you want a custom mechanical component to be developed like a die for a plastic product for which you visit a local engineering workshop. You provide an engineering drawing for the mechanical product to the workmen. Lets say after a few days your component is ready and you are supposed to collect it from the workshop. While you are accepting the mechanical component will you accept the developed mechanical component if it varies even a fraction of mm from the desired specifications provided in the engineering drawing. I hope you will agree no one will accept the same even if the error is just a fractional difference from the desired specification because even a small fractional difference will render the mechanical component useless.

Leave alone mechanical engineering... will you purchase any electrical /electronics /mechanical product which has a scratch on the same at the time of purchase or a product in which one of the functionalities don't function properly?

I am sure you all know the answer .. no one will purchase the a system which malfunctions.

Or will you purchase a product wherein only the most frequent logical boundary conditions are tested and supported. For all the other possible conditions which are not supported , you are fine will the product malfunctioning at the occurrence of those conditions.

If today we will not accept a system if it malfunctions for the smallest or the most trivial functionalities then how can you expect the customer to accept a software system wherein bulk of the scenarios are neither supported nor tested for.

I hope you will remember , a functionality can have hundreds of logical scenarios which are possible with different business logic that need to be supported. But we also know that it is manually not possible to find out all the logical scenarios as well.

Most of the time when I discuss about this limitation, engineers understand the problem and they also understand that if we use a bit of engineering techniques these problems can be resolved, but the way the management reacts is very interesting.

Usually the project managers of a software development company argument is that it is not practical for us to consider and support every other case because if we start supporting every other scenario it will take us years to develop the system.

But my argument out here is just because it will take a huge amount of time and resources to take care of every scenarios you wont support the same? Think about if the same argument was given by the company who had supplied your Car, TV, Refrigerator, AC, Mobile Phone etc that we are not supposed to take every other possibility into account..... and we are not responsible for the system malfunctioning in certain situations would you have purchased the system?

First of all, today we will not purchase a system with defects... and second there are consumer forums across the world wherein we can sue the company if any product has any defect.

The important point that I want to communicate out here is... "we as customers are intolerant to defects in every other system or product (except for custom made software products) and hence the respective manufacturing companies are forced to ensure that there are no defects in the system".

The same people who refuse non software based products if there is a smallest possibility of malfunctioning, but for the software systems they develop they justify the defects within the software saying that it doesn't address their project management parameters.

I personally believe in no situation can anyone justify the defects in the system because the customer is paying for the system and if the system malfunctions, it is tantamount to cheating the customer.

There are multiple reasons why software development companies indulge in such practices.

  1. Software development companies are able to get away with systems of poor quality or with defects because we as customers accept the same without complaining about the same. The day we as customers put our foot down saying that we will not accept any software systems with defects we will not accept the same, the situation will be very different.
  2. A misconception that software systems/products are different from products belonging to other streams of engineering. As I have discussed, software system are automation systems like any other automation system which is supposed to automate the complexities of real world systems by using the hardware resources in the most optimal manner there by adding value to user in terms of managing the scale and complexity.
  3. There are no formal forums like consumer forums for software systems wherein the issues wrt software system failures and defects can be addressed and software development companies can be made accountable.

To continue with the example of mechanical component and workshop

In India mostly the workmen (the operators who operate lathe machines, Shaping Machines, Gear cutting machines) in mechanical workshops are semi skilled or every little educated people. They don't have any formal technical education. Although they are not technically educated but still when it comes to working on a mechanical component , they know one rule very clearly that they are not supposed to make any mistakes during processing because if they commit any mistakes, the customer might loose heavily and hence their rejection rates are very miniscule.

As their customer demands minimal tolerance to defects the implementation company and the workmen are forced to ensure that they don't land up making any mistakes.

The point I am trying to communicate is, if an ill literate person knows that he is not supposed to commit mistakes or defects then how come professionally educated software engineers are allowed to make mistakes and justify the defects in the system. I personally believe software systems can be equally reliable and be of the highest quality if the customers starts demanding the highest level of quality and forcing the development companies and their engineering teams to follow the highest level of discipline.

During my interactions with a lot of customers I have found out quite a few interesting points that will help us understand the crux of the problem.

  1. Customers don't know much about software systems and they feel software systems are special , complex and different as compared to other systems.
  2. Most of the times customers don't realize the actual need of the software system. I have seen they are asking for something just because others in the market are doing or because their competitor is having the same.
  3. Even if they are irritated by the quality and defects of the software system the customers have given up the hope that the software systems will ever become as reliable as other streams of engineering as they consider software systems to be different.

Many a times when we show them the actual reasons for the same they understand the problems and its solution.

There are numerous reasons for failure of software systems which are described in detail in other related articles. In a nutshell most of the problems are because of human limitations and strategic and behavioral issues which can be addressed by the software development companies by the usage of engineering best practices and discipline if the software development company wants to solve this problem.

Customers if you cannot accept any other system in this world with defects , then why settle in for a software system with hundreds of defects in them. If you realize that a software system is just a automation system like any other automation system, then no logical argument can justify the defects in software systems.

I will be conclude this article by saying that the customers hold the key to the success of software systems. The day the customers put their foot down against software systems with defect or low quality, the software development companies will be forced to change their business strategy. The day software development companies are taken up by governing authorities for developing systems of poor quality , the change will start.

So customers... put your foot down and be the change agent.

Hemant Jha
Founder - VPlanSolutions
Researcher, Trainer