By Udayan Banerjee | Article Rating: |
|
May 26, 2010 01:05 AM EDT | Reads: |
603 |
In software engineering there have always been two schools of thought. One school feels that there is a lot to learn from manufacturing. The other school thinks that they are entirely different.
There have been three distinct phases in this debate:
- CMM Phase: Manufacturing has transitioned from craftsmanship to mass production – productivity and quality has improved many-fold. Software development can also benefit from such transition. CMM movement was born from this thought.
- Agile Phase: Manufacturing deals with machine, software development deals with people. Processes involving machines can be controlled precisely. People are inherently different and are not interchangeable. People communicate better face to face rather than through written documentation. From this realization agile movement was born.
- Lean Phase: Toyota revolutionized manufacturing through lean manufacturing systems and dramatically improved quality and optimized cost. The core of lean manufacturing is empowered teams. Since agile movement also is based on self-organizing teams it must be possible to transplant the learning from lean manufacturing to software development. This led to lean software development.
There is an apparent logic in all three reasoning. So, which advice should you follow? Are they compatible with each other? Before answering these questions you should look at the differences between manufacturing and software development.
Manufacturing |
Software Development |
Repeatable: Same item produced many-many time |
Unique: Software is written only when nothing similar exists |
Well-defined: Even before start, the specification of the output is clearly defined |
Incomplete & Evolving: Not only are requirements sketchy at the beginning, but also likely to change during the development cycle |
Known: The process of converting input to output is clearly known and can be repeatedly done |
Unknown: There always are unknowns – in form of new technology, new interfacing requirement … |
Machine & Tool: Any process efficiency is dependant mostly of the machines and tools used and less on the people operating it |
People: Knowledge, experience and skill of people can make huge difference in productivity sometime as much as 1:100 between best and worst |
Will this gap ever be bridged? Will software development move closer to manufacturing?
I doubt it – here is why.
Repeatability vs. Uniqueness:
“…Every advance for the future state of the world requires the presence of software yet to be written…” – Grady Booch (here)
You are never going to write software which already exists!
Well-defined vs. Incomplete & Evolving:
The authors of the Agile Manifesto understood it when they wrote:
“…Responding to change over following a plan…”
“…Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage…”
Software is about advancement … software is about new idea … not all new idea succeed. Trial and error cannot be avoided.
Known vs. Unknown:
Todd Anglin in his very interesting post The Future of Software Development states:
“…There is no end in sight to the deluge of new technologies being delivered to market…”
“…If there is any one concept or idea that software developers must absolutely comprehend, it is this: it really is okay not to know it all…”
The rate of technology change is accelerating. Technology options are increasing. The world is becoming more and more interconnected. Hence, software developers of the future will need to handle more unknown, not less.
Machine & Tool vs. People:
Daiv Russell, in the article Hold On to Your Top Performers, states:
“…Most CTO’s realize that The Pareto Principle applied to IT staff means that 20% of your people are delivering 80% of your entire team’s bottom-line value…”
“…The difference between the extremes has been reported as high as 100:1…”
Unless we can find a method of completely automating the process of software writing, the dependency on people will remain. The chances of automating the process of software development in foreseeable future look remote.
What can we conclude from this?
Reject all idea which is derived or borrowed from managing predictable processes.
Accept all idea which helps you to deal with unknown and uncertainty.
Read the original blog entry...
Published May 26, 2010 Reads 603
Copyright © 2010 SYS-CON Media, Inc. — All Rights Reserved.
Syndicated stories and blog feeds, all rights reserved by the author.
More Stories By Udayan Banerjee
Udayan Banerjee an IT industry veteran who started his career in 1977. In his posts he mainly concentrates on looking at the IT scene and changing trends from an Indian perspective - and has a special interest in collective intelligence arising out of self-organizing complex systems.
- An Exclusive Interview with Oracle, Cloud Expo 2010 Diamond Sponsor
- The Next Chapter in the Virtualization Story Begins
- Unveiling the java.lang.Out OfMemoryError
- Is MySQL Doomed to Extinction?
- Gosling Out of Oracle
- Gosling Hints He Left Oracle over Money
- 101 on jQuery Selector Performance
- Bravo, Google!
- Leveraging Public Clouds to SaaS-Enable Enterprise Applications
- It's the Java vs. C++ Shootout Revisited!
- Today iPad is the Only Whore in Town
- Larry Says What Everyone Thinks About Sun
- An Exclusive Interview with Oracle, Cloud Expo 2010 Diamond Sponsor
- The Next Chapter in the Virtualization Story Begins
- The End of IT 1.0 As We Know It Has Begun
- Unveiling the java.lang.Out OfMemoryError
- HTML5 Web Sockets: A Quantum Leap in Scalability for the Web
- Cloud Computing Bootcamp Returns to Cloud Expo in New York April 20, 2010
- Is MySQL Doomed to Extinction?
- Chuck Phillips Was Supposed to Become CEO of CA
- Gosling Out of Oracle
- Gosling Hints He Left Oracle over Money
- 101 on jQuery Selector Performance
- Bravo, Google!
- A Cup of AJAX? Nay, Just Regular Java Please
- Java Developer's Journal Exclusive: 2006 "JDJ Editors' Choice" Awards
- The i-Technology Right Stuff
- JavaServer Faces (JSF) vs Struts
- Rich Internet Applications with Adobe Flex 2 and Java
- Java vs C++ "Shootout" Revisited
- Bean-Managed Persistence Using a Proxy List
- Reporting Made Easy with JasperReports and Hibernate
- Creating a Pet Store Application with JavaServer Faces, Spring, and Hibernate
- What's New in Eclipse?
- Why Do 'Cool Kids' Choose Ruby or PHP to Build Websites Instead of Java?
- i-Technology Predictions for 2007: Where's It All Headed?
- ');
for(i = 0; i < google_ads.length; ++i)
{
document.write('
- ');
document.write('' + google_ads[i].line1 + '
'); document.write('' + google_ads[i].visible_url + '
'); document.write(google_ads[i].line2 + ' ' + google_ads[i].line3); document.write(' ');
}
document.write('