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 .