Today I would like to share some thoughts about the future of information technology.
If you look back in the history of information technology you will see one obvious trend.
What I mean is abstraction. The first important step was the object oriented paradigma which allows us to model the real world into code.
With this paradigma it was possible to implement persons instead of simple functions.
The next step was component technology which sits on top of oo. This model is more aligned to the real world, as it focuses on interfaces instead of internal implementations.
With that you just have to meet the person and know the language for communication. It’s not important whether the person has a pacemaker or not.
But we still had to develop on a very low technical level. This changed with the introduction of application platforms like J2EE and .NET. This brought abstract APIs for development.
With these application platforms we got rid of the error-prone system level coding. These new programming models are easier to handle than it predecessors like MFC, OWL, ect. (but they are very complex)
Because of this ease it’s possible to build more sophisticated distributed applications. But architecture and system design is much more important these days.
Nowadays you are no more limited to develop single persons, but worldwide distributed communities.
And the choice of the application platform is loosing importance (except for the vendor).
Most of the complex enterprise level applications have the same non functional requirements like availability, failover, security. Therefore providing powerful runtime environments, like EJB or Enterprise Services are a logical consequence.
And it finalises the good old separation of concerns paradigma.
That is the environment, e.g. air, accomodations, etc. where the community lives in.
That’s where we are today.
What comes next ?
If you open your eyes you can identify the upcoming levels of abstraction. One is the notion of shifting from coding to modeling. This trend has a popular three letter acronym.
It’s MDA or Model Driven Architecture which promises to generate most of the code from a model.
The other sign of abstraction is business orchestration. We see that in products like Microsofts Biztalk Server or BEAs Weblogic Integration.
The outcome could be that the applications which are generated from the model can interact with each other by connecting them with a drag and drop approach.
The foundation for this interoperability are the emerging Web Service standards.
How does that sound ? Do you like coding ? What will you do in the future ?
In my opinion coding will loose importance.
But without experienced people which are able to look behind the scenes and are able to cope with the complexity of these highly distributed systems it would be very hard to maintain them.
At the latest when a system does not work as expected. Moreover Enterprise Application Integration will raise to a new level.
That means there will be still much work to do for developers even if the way of application development will change. But that is business as usual, isn’t it ?