Customers - Dont get fooled by the definition of CMM

In this article, I will discuss about a very interesting aspect about CMM.

We have seen most of software development companies being CMM certified and every year they keep upgrading to the next level of CMM certifications.

In reality these CMM certifications are used to lure the customers to assure them of highest level of quality.

But the moment I ask my participants of my training programs, that "Because their company is CMM level 5 certified... does it mean that their company always create highest software?"

Initially they don't reply... and after sometime they start smiling and laughing...

I feel most of us know the reality... forget about the highest quality software... most of the times when we send the release to the customer, the bulk of the functionalities don't even function properly... which the software development companies call as known bugs...

Most of my participants feel very shy to share this reality... to which I say that they should not be shameful about the same... there should be no shame to say a company is not creating the highest quality system even if they are CMM Level 5 certified.

To understand the reasons behind the same, we need to understand a very important non functional requirement called as "Cost".

"Cost is one of the monetary requirements which can single handedly change the Architecture/Design/Project implementation plan of the system, irrespective of whether the functional requirements are the same or different."

Every Functionality/Subsystem will hog certain set of resources and will have its associated cost.

Let us understand the same with an example.

Let's say Euro Rail, Canadian Rail and Indian Rail all want a passenger railway reservation system with nearly the same set of functional requirements for the system.

All of them have the same set of functional requirements, but Euro rail is willing to spend 10 million dollars for the same, Canadian rail is willing to spend 5 million dollars and Indian Railways is only willing to spend 50,000 dollars for the same.

The fact that each of them is willing to commit different amounts of money, will ensure that the system that we will deliver to Euro Rail will be different from the system that we will deliver to Canadian rail and from the system that we will deliver for Indian Railways. This is irrespective of the fact whether the functional requirements are the same or different.

As Euro Rail is willing to shelve 10 million dollars we will deliver a system which of the highest level of quality. To the Canadian railway we will deliver a reasonably good quality system while a average level quality system to Indian Railways.

The Design/Architecture/Project implementation plan for each of these systems can be or will be completely different.

This example gives us a very good idea about how cost can single handedly change the dynamics of the system.

Let us understand "Quality of a system is strictly dependent on the cost a person is willing to pay for the same."

Let me give you one more example, there are lots of trainers who can train engineers on UML and Design Patterns with the same course contents but with the training fees per day varying from INR 10,000 per day to INR 50,000 per day to even higher amounts per day.

We need to understand that although all the trainers are teaching the same subject with similar course contents but their rates per day vary by a great margin. what do you feel is the difference?

The answer is... Quality.

Coming back to CMM...

You all know what CMM is? I am sure some of you must be working for CMM Level 5 Company. Most of the technology service providers are CMM Level 5 certified.

What do we understand by a company being CMM Level 5 certified?

CMM stands for Capability Maturity Model and when I say that a company is CMM Level 5 certified, it means that the Company has the capability of developing systems which are of a particular level of maturity or are capable of developing systems which are of a particular level of quality.

Different levels signify different levels of maturity or different levels of quality.

There are many Technology Service Providers who are CMM Level 5 certified. Because they are CMM Level 5 certified do you think that they always create high quality Software/System?

The answer is "NO" and the definition of CMM takes care of the same.

The definition of CMM strictly says that the company only has the CAPABILTY of developing systems of a particular level of quality but it doesn't guarantee that the company will always deliver high quality software/system.

Whether the company will deliver high quality system/software actually depends on the amount the customer is willing to spend for that particular system.

I will deliver high quality system if the customer is willing to pay the associated cost.

If CMM as a standard was forcing the companies to create high quality systems irrespective of what the customer was willing to pay, then the definition of the standard would have been flawed and it would have never worked.

I have come across a lot of customers who get trapped by the definition of CMM. They think that just because a company is CMM Level certified it means they will get a high quality system.

This shows how standards like CMM takes care of the fact that cost can single handedly decide the resultant system irrespective of the functional requirements of the system.

So customers... beware don't get fooled by CMM certified Software Development Companies.

Hemant Jha
Founder - VPlanSolutions
Researcher, Trainer