I am trying to understand the difference between the Quality and Process, which we very often use in an interchangeable manner. After few years of my experience in different roles of Project Leader and Technical manager, now i am in a position to understand the REAL difference.
On a global perspective, the “Process Orientation” is the buzz word in the corporates. ISO 2000 certification, CMM Level2-Level5, Six Sigma, Agile Methodology and TSP/PSP are some of the well known processes in the implementation. Of course many corporates implement a subset of these processes also and might not really call with the real names.
“Process is a sequence of steps to achieve a Task“, is the simplest definition i have. I strongly believe in this definition by my heart and sole Now i have seen many guys who have really used Quality and Process as a single word. Some of the irritating dialogs i come across were….
#1 There is not quality in the software (They meant, Process implementation is bad)
#2 You have not implemented Process, Stop the delivery to the customer (They think, process non-conformance means LOW in quality)
#3 This month your Process Implementation index is 100% (some times this is because, there is no software delivered or developed)
#4 We produce a very high quality software (but at the customer’s site, the software bombs)
I am sure that all of us would have had a chance to hear this and then wonder, what the senior manager is talking about.
The real problem i see is the lack of awareness and education in the developers, middle managers and finally the senior managers. The people who pester us to implement the process, would have never implemented a single line of code nor the process. In my view a software practitioner is the best person to decide, which process is suitable for the project. He is the one who can say Why, When, Where, What and How. The Quality department just need to assist mainly in What and How.
We need to really distinguish between the Heavy processes and Lightweight processes. In my experience, i categorize ISO 9002, CMM as heavy weight processes; Agile Methodology and PSP/TSP as Lightweight processes. As a general convention, many Service Based Software industry follows ISO and CMM and Product Based software industry follows light weight processes (like Extreme Programming).
Coming to the Quality, i define it as the factor which determine closeness to the requirements, features and the customer/end user expectations. Of course this drills down to the different factors like
#1 How well do we understand the requirements
#2 Translation of the Customer Requirements to the System Requirements
#3 Analysis of the Market/Competition/TargetIndustry/TargetEndUsers, etc…
#4 Good Design Practices (specific to project)
#5 The right-passionate team to do the development
#6 Good coding practices
#7 Developer Documentation, End user Documentation
#8 Aesthetics of the Software (Not only limited to the UI)
#9 End user support
In my view Process is the one which assists to achieve a good quality software. It does not mean that Quality is not attained with out Process. This is a common conception amongst many of us. In small teams, the steps taken for a development project are pretty straight forward and simple. Get the requirements in any format you want (as long as its understood by many of us), design of the module is a very simple process (some times its in the developers brain), coding is done to meet the requirements, simple user documentation, deliver. I have seen all these phases as simple as i have written in some projects. And it works perfectly in some scenarios.
The same scenario, when transposed to a large organization with multiple projects, distributed and cross-functional teams, things gets complicated. This scenario requires a more formal way of managing the Contracts, Work Orders, Reporting Formats, Monthly Reports, Project Plans, Project Management Tools, Requirements, Design, Coding, Testing, Documentation, Delivery and User support, to mention a few. Now the challenging issue is to get all the teams to follow the same process and similar steps to achieve the goal of the organization.
Finally…. Quality is in People, The Software we write, Innovative Thinking and the Ability to Deliver the right things perceived by the customer.