The FOSS methodology recognises that software development is a process that never ends. The developer adopts the end-user as a partner, and the software constantly evolves in an ascending spiral: development-production-development-production… the turn-around time is very short, and the pace of development is phenomenal.
A classic example of this mode of development is Google — they are continuously throwing applications into the wild, often half-baked and unfinished. Not all applications click — some fall by the wayside, others flourish and slowly develop into sophisticated, slick-looking applications. Google can do this because the company is developer-oriented from top to bottom. The company understands how software is developed. The same is true of Facebook, YouTube and hundreds of cutting-edge companies.
As important as the above (if not more important) is the fact that computers are not human — they do not “think” like human beings. In fact, they do not think at all. And any attempt to program a computer to replicate the way humans think and act is going to wind up as an unholy and ugly mess.
For developers, it is great to work for Google, Facebook or one of the many startups where the bosses actually know what they are doing. Unfortunately, most of us have to work with MBAs and other assorted suits, who think that ordering software is like ordering a birthday cake — so much flavour, so much icing, the correct decoration — all delivered on time, ready to eat. And if it is not perfect, refuse to pay the agreed rate. This works fine for a birthday cake or a wedding suit — but it does not work for software.
Potential employers/bosses fall into three categories:
- People who know what they are doing — this post does not concern them.
- Startups, mainly Web-based, run by people who think they know what they are doing, but actually do not have a clue.
- Non-IT-based businesses that are seeking to leverage IT to improve their businesses.
The startup guy — often sitting in an incubator, with a venture capitalist sitting on his tail — has his birthday cake planned to the last candle, and he wants you to deliver it on time, exactly according to specifications, no questions asked. So what do you do? Deliver what he asks for, take the money and run?
Or try and knock some sense into him — in which case, he usually takes to his heels and finds someone more amenable. I do not have the answer to this.