There has been a lot of debate about whether Free Software is better or worse than proprietary software, or indeed as to whether the freeness of software is orthogonal to quality. Eric Raymond’s famous claim in The Cathedral and The Bazaar is that “many eyeballs squash bugs” - that a large educated user population with source access contributes to code quality.
Personally I think he’s missing the point - Free Software is better than proprietary software, but it is because of the emergent properties of the processes used by the development team, not because of anything inherent in freeness. The practices that emerge from a disparate developer team without formal leadership are those that naturally ‘work’.
Here are some practices that I think are good examples:
- Design Review: all designs are open to argument by anyone. No centrally appointed “architect”.
- No Code Ownership: it is common practice in proprietary development for classes to be “owned” by their author, and others are loathe even to look at them, let alone make changes to them. This is often caused by…
- Source Code Control Discipline: propertiary projects often have no SCC at all amazingly, or they use it just like a file system, without using the branching, merging and logging facilities.
- Code Talks: no complex UML design tools to communicate ideas - even the most illustrious team members are expected to put together prototypes when they’ve got a new idea.
Some of these processes are prevalent in corporates, but they generally use them not because they actually wish to improve quality. What happens is that a project goes badly wrong, and costs a fortune. There is a huge blamefest. Someone senior proclaims that Something Must Be Done.
More junior management are under pressure to fix whatever went wrong. However, they probably don’t understand what went wrong. Software projects are Hard. Sometimes the proejct was never, ever going to work anyway - the real brief was impossible. That is not a conclusion anyone will willingly come to. The idea that risk is inherent in these projects so sometimes you pay the price is anathema to management.
They latch onto the primary tool of management: Process. Process is an excellent tool to solve some problems. Unfortunately, the problems that make software projects go wrong are not those kind of problems. Since nobody understands what went wrong, the process implementation quickly becomes an exercise in avoiding blame.
On the surface, the techniques used sometimes even resemble those effective ones I listed above - Source Code Control for example is an obvious good move. However, when the purpose for using it is to avoid blame, it becomes an obstacle rather than an aid. Things like permissions and locking become the emphasis, things that are entirely unrelated to making good code.
So Winter’s First Law: Any Process Introduced Purely For The Purpose of Butt-Covering Will Have an Adverse Effect on Quality.
Recent Comments