Metaphysics of Software Development
Some insights on the software development craft, from a philosophical viewpoint.
Wednesday, November 9, 2011
A mature process?
"We have a mature software process. We are now going to invest on the quality of our products."
There is an irony in intellectual debates. Fallacies and incoherent reasoning are much easier to express in a concise way than the truth. Take the statement above. There are several fallacies compacted inside these two nice little sentences. But it will take many more words than that to refute them. So, let’s do our job:
- The process does not really matter. People are the important element of a successful (or unsuccessful thereof) software project. The Agile movement has been emphasizing this for over a decade now and managers still do not get it. But even if there were no movement shouting this truth out loud, it would take only a bit of common sense to realize it. Think of it: the most complicated problems in a software project can only be solved with a good dose of creativity. After all, a project is, by definition, the effort to develop new things. As such, new problems will arise and will require dedicated, talented team members to solve. No process could possible take care of this.
- Similarly, no process can ever be mature. The specific conditions will always change from project to project, from team to team. Technologies (like programming languages, database systems, operating systems etc), performance requirements, the application domain all affect how a certain team will work on a certain project. And this will change over time, too. As a team’s knowledge increases, their approaches to problems will change accordingly.
- The whole idea of a process is to have a fixed set of procedures and rules in place, so that no matter who gets to be working on the project, the results will always be the same. This is completely illusory, since it is people that are important (cf. item 1), but that is, at least, the reasoning behind the idea of a process. So, the question that must be answered at this point is: if the process is mature, why does it not automatically produce quality products?
- The order is inverted. The first concern should be exactly the quality of the products. This is what the customer pays for and this is the end of the software development activity, after all. Should the need arise to implement some kind of process, so be it. But keep in mind that the process is the means and the product is the end.
Subscribe to Posts [Atom]