"The Christian must discover in contemplation, and in the giving of his life, those symbolic actions which will ignite the people's faith to resist injustice with their whole lives, lives coming together as a united force of truth and thus releasing the liberating power of the God within them." - James Douglass, Contemplation and Resistance.
Sunday, February 08, 2009
Irrational Designs: A Socialist Critique of the Software Industry
Good software requires time, long periods of intense and lively concentration, mathematical and logical talent, and a few basic tools. There is no more wasteful time sink in software engineering than having to work around the consequences of the proliferation of poorly designed and rushed software. This proliferation is the result of sophisticated marketing campaigns which have resulted in huge profits for select corporations while doing more damage to the potential of software than any other factor. The logic of software contradicts the logic of capitalism at each step of its development.
Many will argue rather persuasively that competition is the lifeblood of software. As a software professional, I heartily endorse this proposition. But we must distinguish between two meanings of the word “competition”, which are typically slurred together by the corporate media. The competition that every software professional celebrates is competition between designs and implementations in which the one with the best features, most performance, and highest level of extensibility and interoperability flourishes over its rivals. But this is not the competition which the mavens of our mega-corporations inflict. And the destructive competition in which they thrive is at the root of a crisis that can only be solved by a full embrace of socialist methods of software production.
The competition which has rotted our technological infrastructure is centered on marketing, not quality. Those corporations who own the marketing machines can and do drive absolute garbage onto consumer’s PCs. You will often hear them explain that they cannot afford to care too much about quality, because too much attention to quality interferes with optimal market timing. A prime example is the recent release of Vista, which is now widely recognized as an immature operating system that was rushed to market. Dozens of major examples could be cited along the same lines. The dirty secret of software is that it is a hard and complex science that that fundamentally requires the attentive capacity of a jewel cutter to do properly. It can be done, but devotion to craftsmanship is what allows it to truly succeed.
But the conditions of the modern software marketplace militate against such care and attention on every side. Unrealistic release schedules are devised by project managers who make guesses based on nothing more optimal time to market. Of course, they “consult” with developers who are encouraged to be “honest” in their time and effort estimates. But those developers realize all too well that true honesty would get them dismissed and replaced by others whose honesty was more closely tuned to the demands of market timing. While most developers want to create a product that is focused on user value, the market constantly perverts these “use-values”, resulting in buggy and insecure products that waste enormous amounts of time. Good software exists, but its survival is not a market value, but a happy and often unrepeatable exception.
The profit motive has been the incubus that has sucked the life, creativity, and potential out of the software industry, whose chaos and inefficiency mirrors the chaos of the capitalist production from which it arose. What software engineers value is the use-value of the software they create. What capitalism values is the surplus value (the difference between the cost of developing software and the licensing fees it commands in the market), not the ability of the software to interoperate successfully with software designed by rival firms. Yet this latter characteristic is precisely what leads to the greatest multiplier of use-value. The generally poor effectiveness of software is the result of the fact that it is produced by competing islands of specialized vendors who have little reason to interoperate with others and strong motivations to subvert the operation of their rivals’ work. Standards organizations attempt to bridge this gap, but support for the standards produced by these bodies is notoriously low even by the major players who have the most to gain from it.
The nature of good software is to reach out and create networks of interoperability, but such interoperability can flourish only in free productive relationships unconstrained by competing profit interests. On a truly level playing field where only the quality and usefulness of the products mattered, we would finally be able to uncover the true potential of software to improve human life. But such a utopian expectation can never be fulfilled until the system of production gains overall direction and unified planning. The idea that quality will arise from competing islands of entrenched marketing interests is as absurd as believing that unregulated financial markets will self-correct.