I still remember my college thesis, a library for rapid application development in full VGA graphics mode modeled after Turbo Vision which back then runs in text mode. Back then I already thought someday, we will just draw user interfaces and the real value would be in domain specific knowledge.
A few days ago, I chanced upon an interesting application which allows to visually create applications from scratch at 60 beats per minute :). Unfortunately the application is crashing so we were asked to diagnose the cause. The local websphere master was quick to point out some configuration settings as well as presented analysis on the GC dumps. On my part, I quickly set up remote profiling (Jprofiler) so we could investigate the details further.
The interesting part is the application model, everything is rule-based. I was of course intrigued how it was able to achieve such a high level of abstraction, that for relatively small applications, very little coding is required!
The technique is templating! It creates a Java object based on a template (extended from base rule objects) code, compiles this code, serializes it and stores it in database BLOB columns. During runtime these objects are deserialized into objects again with plain vanilla class-loaders. This enables ui (forms etc), workflow, business logic to be created without requiring much Java skills. In fact it allows project team to concentrate more on capturing the business logic and flow together with business analysts (who by the way can also directly participate into the system).
So where does this leads us? This will even change the way we think outsourcing! Why outsource when much of the grunt work of creating user interfaces, workflow, business logic, interfaces with external systems etc, can already be handled by such systems? Is this software development 2.0? In the book "The World is Flat", it emphasizes that grunt work will more and more move towards outsourcing. Frack! in this case its moving towards outsourcing to frameworks/systems that can be bought off-the-shelf and might possibly allow your im-gonna-knock-on-your-door-ring-on-your-bell salesman to analyze his own software needs and create his own system without/very-little programming knowledge.
Peeking further into the future, imagine "cloud computing" with this kind of services? With such systems becoming widespread in usage, the battle will be for "business logic developers"?
So my advice to developers, don't stop on being technically capable, understand the business, or better yet build your own business.
-procastinating the inevitable future