It has often been said that the only constant is change, and nowhere is that axiom more appropriate than in the computer industry. Technologies and standards change nearly every day and at the forefront of either driving these changes, or trying desperately to react to them and capitalize on new products and innovations are the software companies writing the applications you use every day.
Software companies find themselves in a strange sort of relationship with their clients and customers. Software development is an involved, highly technical task that for some reason high school students seem to do with equal aplomb to those with doctorate level degrees in the subject. This means that a software house can be staffed with everything from 20 year veterans of the field to a guy who lives in his mom’s basement and has just been tinkering with programming for a long time.
This strange curse has turned out to be a blessing for most software companies in that stagnation and stratification rarely occurs. Where the 20 year veteran of the software engineering field may have a better grasp of the more technical, elegant methods of a particular programming language, the younger programmer will have a fresh look at the problems and is generally more up to date with newer technologies. This dichotomy keeps software evolving steadily through a combination of innovation and precision that is lacking in many other industries.
A good software house will also understand that the product they produce is going to be used by non-technical people as well as technical users and will tailor their product accordingly. With software development cycles getting longer and longer and application support lifetimes getting extended every time they run out. It is important for software companies to realize that they may be working with the same software for the same clients for 20 or 30 years.
This time investment also indicates a large financial investment. Programmers of any stripe come at a premium in our computerized world, and more and more frequently those programmers are expecting nicer working conditions, shorter hours, better benefits, and more vacation. Gone are the days of throwing 50 programmers into a cubicle farm and micro managing them into producing a product. These days most programmers refuse to work more than two to an office, and expect to be given primarily free reign.
Software companies that know how to take advantage of this however can become some of the most powerful and profitable businesses in the history of humanity. Google is famous for the working conditions of their programmers and it is painfully obvious that they continue to dominate the market for search engines, advertising, and now even video hosting and social networking.
They, like any good software house, have discovered that only in an environment where the old and young, experienced and not so experienced, innovative and reliable and everything in between can intermingle and share ideas can a truly excellent product be produced. Windows might run on almost every computer, but Google is a verb now.
That is not to say that the traditional forms of software development no longer work it is more to say that the field itself, and the software companies that manage it, are currently in a rapidly evolving state. Just as many software companies have failed trying to copy Google as there are companies who have succeeded doing something that nobody else has done. There are software companies out there now that release all of their code, including production code that is for sale, on open source websites. They do this because it’s something nobody has done before and they think it will work.
There are even companies out there that accept code samples, patches, and reviews from end users. While this has the advantage of taking some of the load off the software house, it also means that they have to spend time looking at these submissions and deciding whether or not to implement them. What can happen however is that a patch or upgrade submitted by a user may in fact be better than anything that was produced internally giving the company a competitive edge they couldn’t have gotten any other way.
In summary, software companies are diverse idea factories where, with proper management, a lot of excellent work gets done and as a whole all our lives are enriched by their efforts. Whether monolithic or distributed, open source or closed, large or small every software company is different and it is simply that heterogeneous mix that allows for software ranging from Windows to World of Warcraft to Mozilla Firefox. That kind of diversity could not come from a software house, or collection of software houses where everyone was wearing the same suit and tie to the same cubicle every single day.