In the early days of automobile manufacturing, buying a complete car was not possible. Instead, a buyer would purchase a chassis from a chassis manufacturer and then hire a coachbuilder to build out a body and fit it to the chassis. As production became more sophisticated and manufacturers did more of their own coach-building internally, the practice fell out of favor for all but the most expensive cars. Additionally, the advent of unibody construction, where the body can take some load and is therefore intimately integrated with the chassis, made coach-building all but impossible.
As, I’ve listened to more and more descriptions of the progress of portal technologies (especially when running in a cloud environment) , I hear a lot of discussions about “reusable components,” which, of course, has been the Holy Grail of software pretty much since computing began. It does appear that a lot of reusable components are built and will be built for enterprise applications. The ultimate goal is that less technical users will be able to construct composite applications through configuration rather than custom coding.
I’m starting to wonder if this means that we’ll be moving from a web development era very much like the early automotive industry , where we buy a platform and then hire someone to build out our site on that platform, to something more like the automotive situation we currently have. We’ll have a pre-set number of “models” with options that can change.
In some ways, we’ve already seen this start to happen, as lots of site “types” can be identified. For example, most commerce sites look similar, with a way to browse a hierarchical catalog, search, find a local retail store, etc… This isn’t necessarily a bad thing. Continuing with the metaphor, it’s good that the gas and brake pedals are in the same place on every modern car. It’s certainly easier for users if items of site are in expected locations.
On the other hand, it may be that the inherent complexity and dynamic nature of the enterprise environment will always require custom coding to make the necessary integrations happen. So, personally, I think we’ll end up somewhere in the middle. We’ll have lots of pre-built reusable components that may or may not require some custom work to get them integrated properly along with plain-old, from-scratch custom builds.