The term 'Software development process' has one word that business and customers do not understand and care less about. That word is 'process'.
Every software development model has some kind of process defined that pretty much decides if that particular development model can be applied for a given project.
-
Waterfall model works with a sequential approach wherein one phase follows the other. Requirements are well documented followed by design, implementation, verification and maintenance. In my experience, it is a good candidate for software upgrade/migration kind of projects. Typical examples will be switching technology of an already implemented project from perl to J2EE or upgrading a SAP version.
-
The other category of models is the iterative models wherein a product is delivered in iterations with each iteration being a small portion of the final product. Various models like the Rational Unified Process(RUP), Agile and Cleanroom etc fall in this category and propose a variety of iterative methodologies.
The Human Process
All the above processes and methodologies are well defined and widely talked about in software development forums. What is not discussed is the process of interaction between key IT teams that get together to create a product. That process is called communication.
All products require expertise of professionals in the various teams of an IT department in an organization. More commonly these teams can be classified as:
-
Business specialists - Business analysts and product managers that define product specifications.
- Software development - Software design and development experts.
- Quality Assurance - Testers responsible for approving that the software conforms to specifications.
- Technology Operations - Systems engineers, database services and deployment engineers
- Project Management - Project managers who set milestones and assess risks
The success of interactions between the above teams determines the success of a project. This is particularly true when success is measured in terms of quality of final product and speed to market. In my view, the managers of the respective teams determine the protocol that will enable them to work more efficiently and deliver quicker projects. Because there is no set pre-defined model to follow, this process is the most challenging to establish.
IT teams at various companies I have worked and consulted for follow communication protocols that are either extremely formal or extremely informal. The driving factor behind what protocol is followed is the nature of business and the past experience of individuals. IT managers who have worked in more conventional businesses are more likely to be extremely formal in their interactions with other teams while managers that are technologists are likely to be on the other extreme.
I will take up a practical example to demonstrate how the two cultures differ:
Problem - Development is behind schedule and so quality assurance is hard pressed for time and project schedule is at risk.
Solutions -
-
IT management in company A - Development manager works with QA manager to find a viable solution to meet timeline. The solution can be assigning some extra resources from development to qa for a brief period or to deliver to qa in self sufficient modules that can be tested while others are being developed. The two managers 'accommodate' each other.
-
IT management in company B - A meeting of all team managers is called and project management questions delays, creates a risk and status report and/or decides to delay the project. All managers try to save their backs in the big meeting and finger pointing results. These reports are submitted to higher management and situation gets out of control.
A key difference between two approaches is that in an informal environment two managers can find a solution accommodating each other while in a formal environment the same managers are hesitant to think outside the box and take risks.
Project Management has a critical role in determining the culture of any IT department. If project managers let team managers find solutions on their own and are only concerned with results, the environment automatically becomes accommodating. On the other hand if project managers micro manage the project and position themselves such that they become a means of raising grievances and red flags for other managers, red tape sets in and people become mired in processes and projects suffer. Project management should be a facilitator and project driver and not a department with all concerns and no solutions.
Software development lifecycle should follow a well documented model, be it RUP or Waterfall but people are better off leaving a formalized process out of their communication. If having formal communication was good between peers, there would have been communication processes defined and debated in software development forums just like software methodologies.
Being a technologist managing other technologists, I am a big proponent of the informal interactions between various teams responsible for delivery of projects. The goal is to bring results which can be better accomplished if there is trust amongst IT teams and managers stand up for each other which will only happen when interests of managers are aligned with each other and that with interests of the company. "Over process" is an overkill that can severely affect our ability to deliver. Isn't process all about delivering..??