Why Software Development Cannot Become a CommodityMay 4th, 2007 | By Christian Donner | Category: Software Engineering
The outsourcing and offshoring trends of the early 2000′s were an indication that executives increasingly thought of software development as a commodity, i.e. something that is purchased in large quantities at a certain price per unit (e.g. $/hour) and the less the company has to pay per unit, the greater the savings will be.
It turns out that something went wrong with that calculation, since these trends are seeing a reversal today. Now companies are ‘in-sourcing’ because the out-sourcing turned out to be not as economical as projected.
This development was predictable, but why?
Software development is a creative process. The software engineer has to make design decisions along the way that will impact the quality of the end product. Quality is an ambiguos term, so lets be more specific. The end product is characterized by the number of lines of code, how well the code adheres to the requirements, the structure of the code, its clarity, modularity, reusability, etc. All these factors contribute to how we generally defined good code. Good code can be understood and maintained more easily.
A good programmer can write good code and be very productive.
An moderately talented programmer can write good code and be less productive, or write not so good code and be less productive. There are also programmers who write poor code and are very productive in it.
A poor programmer writes poor quality code and is a lot less productive.
Each programmer’s code contributes directly to the quality and the success of the project. In a way, each programmer owns a small portion of the project. I’like to compare a software development project to a corporation, and each developer manages a department or a subsidiary. Nobody would in his right mind think of department heads or managers in a real company as a commodity that can be bought in China at the lowest possible hourly cost. The bottom line of such a company would suffer dramatically.
Similarly, the bottom line of a software development project suffers dramatically when developers are brought on as commodities.