Software Insight
Software is a strange beast. Its manufacture is almost antithetical to that of hardware. Since the invention of the PC, which is when the software revolution began – before that it was all scientific and business computing – the cost of infrastructure has been minimal.
To see this, consider that in the 60’s the annual cost of a mainframe was ~ 10M$ which would support something on the order of 250 programmers who had annual costs (not salaries) of ~ 25K$ = ~ 6.25M$ The computer cost more than the programmers to program it. Now, a programmer costs about 100K$ per year with infrastructure costs of ~5K$, which includes a share of a server and some support staff. The computer cost has gone from 160% of labor to 5% of labor. (I/m ignoring the cost of management, brick and mortar, tithe to the Yankee government, etc. here because they’re common and usually accounted differently, or at least, they should be.) Point being, the labor to produce software is the dominant expense of development and maintenance.
The software development lesson that emerged from the ’60’s was that if you needed a piece of software, you were best off if a single programmer coded that software and stayed with it throughout its lifetime. Unfortunately, as software became more elaborate – like any program produced by Microsoft, e.g. – it became too complicated and time consuming for a single programmer to shepherd. So elaborate schemes were developed to manage and diversify program coding.
The end result was an increase in the labor cost of software that scales as (approximately) the square of the size of the software (bytes, lines of code, whatever.) And part of the problem that derives from this is that no one programmer knows the whole thing, nor do the same programmers stay with the program. Learning becomes a constant activity – rather reminiscent of the Red Queen in Through the Looking Glass – not of changes in the code but of what is in the code.
This is why software is so expensive, and the best software is still that built by individual programmers. Often these programs are the low end of open source software that so frightens software capitalists and computer security wonks. The former for running them out of business and the latter for sneaking evil malicious code onto their domain.
Now, I see in the PHYSORG feed [Link] that one of the differences of large open source projects is how they deviate from the standard big program organization structure. The standard model is usually some variation on an organization in that you have managers planning and directing supervisors who divide work among individual programmers. In the open source model, there is a core of programmers handling the core pieces of code (and doing the management) and a periphery of volunteer programmers who are doing the rest of the coding.
Interestingly enough, this is what Charles Handy was talking about in the thing he called a Shamrock Organization. (see The Age of Unreason.) So the organization of the open source project is more advanced and modern than the ones of the big software manufacturers! Maybe we’ll discuss why in a later blog.