Things in software world are changing rapidly. But, what’s hidden in coming future leads to a lot of curiosity. Almost 20-25 years back, low level programming languages were introduced. It was a kind of revelation for the entire world as one could think that some computational work involving business logic could be done by machines. After a while some high level programming languages such as C and C++ got introduced. They provided a lot of power to software developers as now programming languages could be used for creating real time business softwares. However C and C++ came along with a lot of complexities. One had to think about complex language issues before using the language for implementing business logic.
C++ introduced object oriented concepts but many of the developers were still writing applications in procedural paradigm as language issues were taking a toll. Even basic libraries such as “string” etc were not available. One had to create these classes and other programming infrastructure before writing applications. It led to the creation of proprietary frameworks, middleware etc. People were writing complex infrastructure frameworks repeatedly as standardization or standards did not exist.
I think Java changed a lot of things. A lot of language related complexities were removed. Also to start with, libraries, APIs were available. The language was purely object oriented and people could devote time purely on implementing business logic. Now base was quite strong, which could be used for developing frameworks, middleware and standardization of many repeated solutions. New technologies evolved based on these standards. Many of the enterprise software issues led to EJB. Similarly O/R mapping led to frameworks like Hibernate, JDO etc.
People could see many of the problems in these evolving technologies as some of the times people were using them just for the heck of it. That’s how frameworks like Spring got introduced. For many years, web-based solution was just fine for applications but UI and usabilities issues led to the use of technologies like AJAX etc.
Now frameworks, solutions are approaching towards saturation. Even if they haven’t, they will follow the suit pretty soon. Most of the infrastructure related solutions will be ready made. As open-source movement is taking its pace, most of the infrastructure related frameworks are and will be available to enterprises without any cost. You have bunch of problems which now can be resolved by these open-source frameworks pretty easily. Now instead of thinking on how to create “wall” using “bricks”, “wall” like components are easily available. Based on available infrastructures and resources, architectures and solutions are also maturing. The development work can now be outsourced if you have a well defined architecture in place. Development work has become kind of factory these days and applications are churned out by many of the developers as part of outsourcing.
Upto some time back, software development was pretty difficult. The patterns were not so well defined as they were in construction industry for instance. For making a building, the patterns were very well defined in construction industry but the same was not the case in software. But now as frameworks, architectures are maturing, that day is not too distant when making business software applications will be similar to making building with well defined manufacturing patterns in place.
But the question is-what next??? In my view, the next age is of business ideas. I think, end user will get her due respect in coming days. Earlier technologies used to drive business to some extent but no more from now on. Think about the days, when user had to wait for HTTP response to come before continuing her business transaction. Now with new technologies, the response is almost immediate. Business ideas are going to get more importance than sheer technologies. Some of the examples like google, amazon, flickr, gmail are already evident .
Janne Savukoski says
I’ve been thinking about this same subject and I came to the same kind of a conclusion. The level of abstraction is constantly rising (as you said) and, as I’ve been working with BPEL and stuff, my natural approach to the subject is that programming becomes closer to the actual “business networks” themselves (some small part of programming, that is). Languages like BPEL support this well, although they are very restricted / inefficient for many purposes; e.g. all kinds of user interface mashups – which you were referencing – are of course implemented totally differently.
There’s also some growing interest in these “business networks” (affiliation models etc.) due to technology making loose partnerships possible, which supports this businessy-oriented development of programming. I made a short (and _very_ random… 🙂 note on the subject in my blog at http://zimboe.wordpress.com/2006/09/27/age-of-programmable-business-networks/
Nice thinking!
deepak ralli says
It will help in development of robust and low maintenance applications.
This will also be accompanied by higher productivity, better estimates and thereby lower cost/timelines thereby giving value to the customer.
What I think is that a business idea will always remain supreme no matter what the technology is. Technology only gives shape to it.
But if technology to implement the idea is in nascent stage, then we have another variable that needs to be addressed. With J2ee becoming mature and stable, end user definitely will get due respect.
Amit Saxena says
Enter the Model World !! No more frameworks, business logic coding, deployment artifacts etc. I see a great possibility of increasing abstraction levels and business driving IT i.e. evolution of more robust and complete application models that can be visually represented and modified. How about the Model Execution Environment that can execute these models directly (converting internally to deployment artifact initially)? These models have to be meaningful for the business persons so that they play with it directly and possibly lot of reusable services that can be plugged in as and when needed.
Nishant Menon says
Nice thoughts ! IMHO, business has dominated technology for far longer than we (techies) would like to believe. The main difference that we see now is that technology no longer constraints (for the most part) HOW business is done. With the availability of components, frameworks, open source, platform independent languages etc. we have seen a distinct change in focus. And this change has happened because ppl no longer need to spend their energies trying to make technology work for them. It just works ! I am still gathering my thoughts on what this implies for the future – so more later. But all the same – nice blog !