It's all bits and pieces

Many people have a hard time understanding what is the "big thing" about software, "it can't be that hard" is a phrase commonly heard. Software projects are the most complex pieces of engineering man has created, anyone can write bad software but good software takes skills, time and energy.* There are software projects which are composed of millions upon millions of different components, in comparison a car contains no more than 100.000 components. Having to imagine and account for every eventuality is humanly impossible and therefor we have bugs.

To discover what makes software special we have to look at the definition of software, software is a group of logical instructions for a processor. These instructions have no physical form although they can be written to any multitude of media.

It is the lack of a physical product that makes software special, it shares this feature with only a handful of other industries. Music, movies, books are other forms of non-physical products. The value is not in the physical media but rather in the "design" work which is purely logical but can be represented on any number of media.

The great thing about logical work is that with modern technology it is very easy/cheap to duplicate the original work, copy CD, copy software or print a copy of the book. It also means that although one person spends years creating the original work it is well worth it since millions of people can share the rewards/product.

People often compare the software industry with industries producing physical products, this comparison can never be of any value since the business models are entirely different. Many people also try to measure the quality of software based on the "amount of work" put into it, for me this is like measuring the quality of music by the number of musical notes in a song**

Managers are often tempted to think about software like production industries , if one man produces a pencil in 10 minutes than two men can produce two pencils in 10 minutes. In software it is futile to produce the second pencil since the first can be "duplicated" with almost no effort at all. What this means is that adding the second programmer is often a bad choice, the first programmer will have to spend much effort in educating the second one about the design of the pencil. Adding a programmer to a "late" software project is the worst thing and will prove counter productive. Consider adding an artist to a music band which is overdue releasing a record, it will most certainly not speed up the release of the record.

It is a little known fact that 90% of all software never makes it to the market, just like 99% of all music is never released by a record company. There is no market for bad software, bad music or bad books. When "producing" an extra copy of a good book costs the same as the bad book the results are obvious. Because of this it should be equally obvious that bad programmers will never write good code just like bad artists will never make good songs. Mediocre programmers are as worthless as mediocre writers. Frequently managers add a mediocore programmer to a group of good programmers, this is like adding Britney Spears to the Beatles in hope of improving their records! When it comes to logical work only the very best is acceptable, only the top 1% is worthy of reproduction!

 

*And coffee

**See Mozart's opera The Abduction from the Seraglio

Software we have contributed to

EMC2 cnc machine controller

www.linuxcnc.org

dxf2nc A dxf to g-code converter

dxf2nc.sourceforge.net

Antigen Ant Installer:

antigen.sourceforge.net

Splat Service Platform

splat.sourceforge.net

To top



Creative Commons License
All content on this site is licensed under a Creative Commons License.