| By Eric Newcomer | Article Rating: |
|
| May 19, 2008 01:45 PM EDT | Reads: |
12,510 |
Eric Newcomer's Blog
I am as guilty of this as anyone else. Back in the 90s I was on a big project to standardize enterprise software. We wrote a few papers about it, and a chapter in a book. We often used the "Henry Ford" analogy, which relates to the impact standards for interchangable parts had on hard goods manufacturing.
The Henry Ford analogy says that the hard job in mass assembly is getting the interchangeable parts standardized - thereafter creating the moving assembly line is the easy job. Ford pulled it off with the significant market success of the Model-T and changed the world.
In the original story (which the link directly above summarizes), the crucial quote for us was:"The key to mass production wasn't the continuously moving assembly line, as many people believe, but rather the complete and consistent interchangeability of parts and the simplicity of attaching them to each other."
But of course in the updated book, Toyota further changed the world from craft to mass production (i.e. Ford's achievement) to lean production. In software however we are still struggling to achieve mass production, never mind lean production.
The application of the Ford analogy to software is that if you can standardize application programming APIs and communications protocols, you can meet requirements for application portability and interoperability. If all applications could work on any operating system, and easily share data with all other applications, IT costs (which are still mainly labor) would be significantly reduced and mass production achievable.
The industry has seen many efforts in this direction fail, or only partially succeed. Today's environment is better than the early 90s, but we still have incompatibilities across various editions of Java, enough differences among J2EE application server implementations to inhibit easy migration among them, and of course a significant level of incompatibility between enterprise Java, Microsoft .NET, and IBM mainframe environments. Applications that want to leverage the best of breed across these environments typically have to do a lot of craft, i.e. hand coding.
Seven years ago I remember thinking Web services and XML might finally solve the problem, but perhaps because of the way the specifications were implemented (basically adapting to existing technologies) in the end only a partial solutoin was achieved. Yes, interoperability is improved compared to what it had been, but it still requires too much hand coding.
Even though I've been working towards the "Henry Ford" analogy for more than a decade, recent exposure to inversion of control concepts (e.g. Spring and Guice) and OSGi makes me think the mass production analogy is backwards for software after all.
The Ford analogy has played out in software typically by positioning the assembly problem as the easy part of the job and creating resuable services for assembly as the hard part of the job. I can't tell you how many times I've heard business process modeling and orchestration tools pitched at "business analysts" only to discover the proper use of the tool requires someone who can actually code.
The easy part should be developing the reusable services. The hard part should be their composition and assembly.
Corporations around the world are squeezing IT budgets, which means looking to reduce labor costs. Many are turning to outsourcing to China and India, and others are looking to hire college graduates in place of highly paid (and more highly skilled) coders.
But almost by definition the Ford analogy can't work. You cannot really get lower skilled, untrained developers to tackle sophisticated problems such as component reuse. They can create simple objects incorporating business logic, and to use one description, the plainer the old Java object (POJO) the better.
What we need are not simple tools for business analysts to compose services into flows. We need sophisticated tools for architects and designers to import POJOs and plain old anything else, check them for conformance to the plan, and fix them up for deployment. What's the right analogy here? Farming?
Published May 19, 2008 Reads 12,510
Copyright © 2008 SYS-CON Media, Inc. — All Rights Reserved.
Syndicated stories and blog feeds, all rights reserved by the author.
More Stories By Eric Newcomer
Eric Newcomer is an Integration Architect in the CTO department at at Credit Suisse. Previously he was Chief Technology Officer at IONA and has been involved with computers since 1975 and professionally since 1978, primarily in the area of online tranasction processing. He was also involved in Web services from the beginning, contributing to several specifications and related industry initiatives. Currently he is Co-Chair of the Enterprise Expert Group at OSGi Alliance.
![]() |
Bill Swanson 05/17/08 11:20:13 PM EDT | |||
Yes, Ford paid a "little bit better", just twice as much as other workers in the same industry: |
||||
![]() |
Dennis Byron 05/14/08 12:03:41 PM EDT | |||
Eric --Great article. |
||||
![]() |
Eric Newcomer 04/10/08 06:08:02 PM EDT | |||
Yes, that's a good point. Building a mass produced item such as an auto or a PC involves doing the same thing over and over again, while building a software application involves doing something once. I suppose the analogy is intended to relate to the level of the fastener - to the threading of screws and nuts - more than the size or shape of the parts being assembled. In software terms this would mean the ability of any program to export a standard interface by which any other program could call it. I believe the question you raise is whether this would really help anything, since putting together a series of programs to create an application (whether some percentage of them are reused or not) is really a one-off activity in which customization is not only to be expected but does not hurt anything either. But if we have it backwards, and the Ford analogy is backwards, what replaces the idea of a standard interface to help improve productivity and lower the cost of creating applications? |
||||
![]() |
Bill Bohrer 03/26/08 09:55:56 AM EDT | |||
This article really got me thinking, and I have to say that I agree that Ford's innovations with mass-production and factory assembly lines in general are a really bad, broken analogy for the software industry to try and achieve. The point with building the Model-T, is they were building the same thing, over and over again. That takes no skill. Computer hardware benefitted from that analogy -Modern PC's got cheap and easy to mass produce when motherboards with expansion slots were invented, and you could slap together different machines by plugging in different cards. What makes that work is that the BUS is static - you write your firmware to work with the standards, nothing changes in the way the firmware on your sound card talks to the motherboard. When the standards change (PCI? VL-BUS?) then the card manufacturers need to adapt to the new interface and create a new component. I’d say that what we’re trying to do with SOA, is design a new car with every application. The fact that they’re all made of more or less the same parts is almost irrelevant because (unless we’re talking the slant-6 from the 60s and 70s) those parts have to be adapted to each new use. A PC's operating system and the motherboard's BUS are the "orchestration" piece, and those are not adaptable by the people slapping together PC's - what we're doing with SOA and "applications" is essentially creating a new OS and BUS every time we try to compose a different application from our services. And the thing is, applications are by the very nature of software, "one-offs". Hmm. Excellent food for thought. Thanks. |
||||
![]() |
eric newcomer 02/26/08 11:01:48 PM EST | |||
Yes that's true today. But can't the software industry change? Can't it learn from other industries and adopt scientific and industrial methods for development? Why does it need to stay a craft industry? Labor is the biggest single expense in IT. Other industries, including the automobile industry, have made the transition. |
||||
![]() |
Guðlaugur Egilsson 02/26/08 06:59:54 PM EST | |||
It is nice to see more people looking towards Toyota and Lean Thinking to advance the field of software. I am afraid that in this case though, the wrong lessons are being learned. You see, the bottlenecks in software aren't in production. We don't build software, and we certainly don't produce it. We develop it. So the best lessons to be learned are currently in lean product development IMHO. |
||||
![]() |
Eric Newcomer 02/26/08 09:24:51 AM EST | |||
Tom, That's a good point. Hal Hildebrand made a similar point in his blog reponse: http://www.tensegrity.hellblazer.com/ Design is probably a more critical aspect of the process than either interchangeable parts or the division of labor. Perhaps what we really need are better design tools, including a way to design a good project that splits up the work and supports checking the results. |
||||
![]() |
Tom Birchmire 02/26/08 06:55:26 AM EST | |||
The Ford analogy isn't bad except you leave out the part the designers/engineers played in developing those interchangable parts. The fact that Ford maintained complete control of the operation and insisted on simplicity was a large part of his success. He also paid somewhat better and was able to always have people waiting at his door to be overworked. He brought outsourcing to him as probably the majority of the assembly line crews were foreign born and spoke limited English. |
||||
- Oracle To Keynote Cloud Computing Expo
- Contrary Opinion: Why Silverlight is Good for Adobe
- Analytics for Adobe Air Applications
- Adobe’s Aiming ColdFusion at Multiple Clouds
- Eval JavaScript in a Global Context
- Fig Leaf Software to Exhibit at Government IT Conference & Expo
- Is Microsoft as Free as Open Source?
- Cloud Computing Journal: Adobe to Deliver ColdFusion in the Cloud
- The Planet Named “Bronze Sponsor” of Cloud Computing Expo
- Adobe Reader Sued
- AJAX World RIA Conference & Expo Kicks Off in New York City
- Adobe Enters Cloud Computing with LiveCycle
- Oracle To Keynote Cloud Computing Expo
- Social Media Terrorists
- Adobe Flash Media Server on iPhone
- Contrary Opinion: Why Silverlight is Good for Adobe
- Adobe Flash Based GetJar Surpasses a Half Billion Downloads
- Adobe ColdFusion 9 and ColdFusion Builder Public Betas Now Available
- Adobe Tries Commercializing Its Online Software
- Adobe Open Sources Flash Initiatives
- The Next Programming Models, RIAs and Composite Applications
- Where Are RIA Technologies Headed in 2008?
- Constructing an Application with Flash Forms from the Ground Up
- AJAX World RIA Conference & Expo Kicks Off in New York City
- CFEclipse: The Developer's IDE, Eclipse For ColdFusion
- Personal Branding Checklist
- Adobe Flex 2: Advanced DataGrid
- Has the Technology Bounceback Begun?
- Building a Zip Code Proximity Search with ColdFusion
- i-Technology Viewpoint: We Need Not More Frameworks, But Better Programmers




































