Various books about software engineering usually compares software development to manufacturing. The comparisons often highlight the differences so as to establish a separate set of processes and methodologies for software development. While it is true to a larger extent in the current scenario, the future of software development may blur the line between manufacturing goods and manufacturing software. What makes software unique could be the replicable nature of end products.
The common conception (or misconception) on the difference between software development and manufacturing is that software development is more intellectual than manufacturing. This was true in the nascent and adolescent stages of software industry. In the current mature scenario, industry recognizes right aptitude and training as the most important qualifiers for software workforce – as it is in manufacturing.
Mature tools and processes enable software to be created and managed with less sophistication from the developers. In my opinion, this brings out the most striking similarity between software development and manufacturing. Manufactured goods are often differentiated by the company or location. There is also a certain brand value generated from the quality and process of manufacturing (take the classic example – Toyota). As the software industry is also growing into a similar mould, the tools and processes will be key differentiators in coming days. A mature software company is more likely to produce quality work-products than others, consistently.
The grey areas in the above statement cannot be overlooked. While the weightings of the words likely and consistently are important in decision making the key challenge will be in assessing the maturity of a company. Certainly software has been following manufacturing in establishing maturity levels (refer Quality Management Maturity Grid). As the awareness builds, customers will be more equipped to discern maturity and there is more to learn then.