Thursday, February 4, 2010

Software Quality shouldn't it be a way of life ?

I was reading this post by Vijay Ghei which talks about humanizing the IT industry. This post while being thought proving brings me to have the courage to write about my favorite topic on whether it is time to totally revamp our software quality processes . This is controversial and bound to get a few raised eyebrows, but I thought I should go ahead and write it..

Essentially as we know our software processes closely follow the manufacturing industry. We sort of rely on extreme documentation with the idea that when we interact with customers or replace our "resources" our documentation comes handy and acts as the final word.. Which is fine but this goes with the underlying principle that one "resource" is the same as another and is inherently interchangeable.So as per our processes if we have the documentation in place then we can replace one JAVA programmer with another JAVA programmer of same experience  and get the same results. In a manufacturing industry this logic is perfect as one machine can be replaced by another.

But we are not cloned machines yet and each of us brings in our individuality to the project. The success or failure of any project completely depends on whether all these individual minds are harnessed productively for the benefit of the project. A successful project naturally has to have a high quality deliverable , because it is not possible for any customer to accept a working software if it has quality issues. If I were a customer I would definitely reject software which does not meet my needs no matter how matured the process used to produce such software

So we have projects which are declared as totally without process but highly successful from the customer perspective and vice versa. We also have members who request to be kept out of quality processes and left to concentrate on development :-) We have a organizations  who decide that they have to start following agile processes to reduce turnaround time and so on...

Quality is a way of life and has to be the life's breath of every developer or team member. It has to be ingrained into all daily activities. I am all for making the best quality software possible and having in place whatever environment it takes to ensure that. One thing is sure  good software means good quality..

Do these thoughts make me anti process / an agilist or anti establishment ??? Most Probably..

I would like to sign off this post by pointing you all to article titled "Software Engineering : An Idea whose time has come and gone"   by Tom Demarco considered the father of software engineering and who is famous for this  book "Controlling Software Projects: Management,Measurement, and Estimation"The books opening statement is the famous line: “You can’t control what you can’t measure.”

BTW this is article is not freely available. Hence if you are interested pls write to me and I can send you the pdf. I tried to embed it . I don't know if  you will be able to access it..

SW_Engineering

3 comments:

Mahadevan Padmanabhan said...

1. Only last week I was thinking on the same line - are we trying to fit a round peg in a square hole - trying to tailor our process from other industries. Unlike other industries we are not in the stage where we can compare numbers/norms and conclude. We have to start from ground up to make it productive.
But till that time we may have to go with what is available..

2.Most of the project doesn’t have a Technical Documentation Specialist - the cost will not allow.
Programmers and developers don’t have the inclination and time to write self understandable document- because of which document cannot substitute a person.Docmentation will be the last thing someone will read to understand a system, our first step will be to search for the Developer or person who knows the software.

Vijay Ghei said...

I'm happy you found the courage to express yourself. This is indeed an important debate - of whether software engineering is a science or an art. Nobody doubts that writing software is a creative process and not a mechanical one. This means it will always be person dependent - to an extent, and why there are huge differencves in productivity from person to person even within an experience band. That's the reason why people have still not been replaced by automation in the development process and there is projected exponential growth in demand that the global educated population will not be able to meet.

The tough decision facing us is the fine but elusive balance between making a process repeatable, reliable, manageable, and predictable on the one hand, and leveraging the intrinsic creativity of an excellent designer or developer.

We, as a business need the former, our customers pay us for the latter.

Lata said...

Thanks for your comments. In fact you have put my thoughts into words for my next post is to be on whether it is possible to achieve the fine balance between our business and the customer..