The romance of software is captured by the lonely figure of an enthusiastic programmer working long, unpaid hours and weekends. When other people are taking holidays he's hard at it, creating a masterpiece.
The truth is only a little removed from this stereotype. Bill Gates and Paul Allen started Microsoft by creating Basic, using their school's computer. WordPerfect was an academic exercise for Alan Ashton. Gordon Eubanks wrote CBasic as a graduate project and founded a company that went on to become Symantec. Dennis Ritchie and Kenneth Thompson wrote the Unix operating system in their spare time.
If you look more closely at these stories, what you find is more like the saga of artistic creation than technology. You almost expect damp garrets and consumption rather than clean computers and cola.
Once the programmer has completed the strenuous exercise of creating his master work, production costs are negligible. For pennies, you can mass-produce a program that will sell for hundreds of pounds.
Such success brings the need to grow at a rate unmatched by any other industry. Overnight the programmer has to find managers and a corporate structure. The new management usually succeeds in sidelining the programmers involved in creating the product. The product is there - who needs them? In the software business it is vital that the future is not linked to just one individual.
The company may start new programming projects to ensure its future prosperity. These will be team efforts managed by committee. Slowly the programming teams manage to gain control of the original product and the new products they are working on.
A program is a very personal thing and it takes time to understand something that another programmer has created. Indeed programming as an activity is a very personal thing and it takes time for a team to know each other well enough to work together effectively.
But again the product has become dependent on particular personalities. The company finds the closeness of the programming team to their product as threatening as the single programmer. Can you imagine a company tolerating a production line which contained irreplaceable manual workers? Imagine the bargaining power that confers on the key personnel - 'double my wages or I'll close you down by leaving.'
For a company to operate as an entity separate from its workforce it is vital that it eliminates such key personnel. By moving people around the company thinks it can avoid creating critical personnel. What it actually does is destroy the intimate relationship between programmer and program essential to its continued development.
IBM, for example, brings together program teams and disperses them as required. One can only infer what effect this has on any piece of software.
Perhaps the best known and most disastrous tale of missing programmers is the case of the bestselling WordStar. This was the number one word processor in the days before MS-DOS. If things had gone according to plan, it would have been a simple matter to create an MS-DOS version of WordStar - but they had lost their key programmers. .
By some miracle they managed to create a usable product and were granted a breathing space. But then they decided to write a new version from scratch - WordStar 2000. This simply opened the door to their confident rival, WordPerfect, and the company's market share never stopped declining thereafter.
If software companies are to succeed in the long term, some mechanism has to be found of retaining key personnel without letting them know just how essential they are.