I came from manufacturing background. I grew up in an Industrial area in India. Since I was a kid I had tremendous interest in engineering manufacturing. I also worked in manufacturing industry for few years. I dealt with suppliers and contract manufacturers. It involved design of tooling and co-ordination with contract manufacturer to get it manufactured. All the specifications in engineering manufacturing are communicated through engineering drawing. Engineering drawing is very powerful specification tool. Once the idea is presented through engineering drawing, there is hardly any room for ambiguity. You can send any complex drawing to Singapore, Taiwan, India or any country for that matter, and get it done as you specified without much of a co-ordination. Most of the co-ordination is around dates, contracts and logistics.
I always wondered, if it is possible to get it produced as per the specification in engineering manufacturing then why it’s so difficult to get it done in software. I made an opinion that the engineering manufacturing is at least 300 years old industry and so the specifications are much matured. It will take some time for software to come up to that stage.
I asked this question to Dr. Mark Paulk. Mark is a Senior Systems Scientist at Carnegie Mellon University. He is currently working on the eSourcing Capability Model for Service Providers (eSCM-SP) and related sourcing topics for the IT Services Qualification Center. His research interests center on high maturity practices, statistical analysis and control of software processes, and agile methods. I met him in Carnegie Mellon’s west coast campus. He gave me very insightful answer. He said manufacturing and software development is not apple to apple comparison. Engineering design process can be compared with software development. You are constantly designing while you develop the software. The manufacturing equivalent in software is CD burning. CD burning is a very mature process and people can do it with zero defects. This sounded pretty trivial at face value but there was a tremendous insight behind it.
We all tend to consider software coding as if it’s a manufacturing process. We all try to manage software development as a production shop and we always fail. We need to understand that we are in design process till we cut the first CD for our customers. This means all stakeholders involved in development need to know what exactly customer needs. This means, all the people in development need to be very clear about product vision, market for the product, business aspect of product and of course the technology behind it. Most of the software development companies keep their developers away from business, keep their product people away from technology. This division of labor works fine in manufacturing when design is done. It really does not work during design where innovation is required.
Links :
Dr. Mark Paulk
http://west.cmu.edu/who_we_are/faculty_staff/directory/1772556.html
2 comments:
Hi Prashant,
To me, the comparison of software development with engineering design looks more obvious than that with manufacturing. However, it may be an 'insight' for people who are churning out software like a commodity.
Still, the post made an interesting reading. I look forward to more stuff from you.
Pandat
intesting analysis, Prashant. I confront the same question even though I am managing more of an application development team and not software product per se. The fundamental issue you raise apply here too. Did you do any further research or analysis on this topic?
Post a Comment