Welcome!

ColdFusion Authors: Yakov Fain, Pat Romanski, Liz McMillan, Maureen O'Gara, Greg Ness

Related Topics: SOA & WOA

SOA & WOA: Article

Have We Got It All Backwards with Software Assembly?

Java, SOA, Web Services, XML, OSGi, and Henry Ford

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?

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.

Comments (8) View Comments

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.


Most Recent Comments
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:

http://history1900s.about.com/od/1920s/p/henryford.htm

Dennis Byron 05/14/08 12:03:41 PM EDT

Eric --Great article.
I was involved in many of the same projects you mention. One where maybe our paths crossed was all the talk about the Software Factory (OMG, I think, but the I'm impaired by the fog of decades).
It is not that the Ford analogy is bad; it's just that no one ever built the software assembly line.
-- Dennis

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.