For many years, people have been concerned with how applications were structured. This concept became very popular with the client-server applications built with tools like PowerBuilder and Visual Basic. In the late 1990′s, there was a move towards 3-tier applications (client, middleware and server) as web development first started to take hold. As developers started to see issues with basic CGI programming, the Model-View-Controller designs started to take shape as programmers tried to separate the concerns of each component in the application. As web development evolved, the need for web services (SOAP, REST and anything else) was obvious. Mobile web development is having similar effects on programming, but the focus is not on application architecture.
I have started to see some development trends recently, one that makes complete sense to me and another that took me by surprise even though I should have connected the dots. I am not the only person seeing these trends either. O’Reilly posted a list of the top books from a cyber-monday promotion, and the trends should be fairly obvious:
- Data Analysis with Open Source Tools
- Head First Python
- HTML5 Mobile Web Development (O’Reilly Training and Video)
- REST in Practice
- Making Software
- Cassandra: The Definitive Guide
- Hadoop: The Definitive Guide
- HTML5: Up and Running
- Learning Python
So, we have 3 books about big data, 4 books about client-side web development and 2 about Python. The trend that makes sense to me is big data. With all of the web activity, ecommerce or social media, there is a ton of data floating around. This data is worth billions of dollars to marketing people, and we are already seeing that it can help in other segments like customer service and even charities. Even the known big data problems, like search and web analytics, are still fairly young technologies. For many years it has been difficult to gain experience working with big data, but the rise of social media and the application APIs have given almost any programmer free access to larger amounts of data to play with.
Is this all saying that MVC is dead? Not exactly, MVC is just evolving. First, the model and view are still very much present, as the model is only changing from a Java object to a text-based object in JSON or XML. Obviously the view still exists, it is just being built dynamically, and potentially rebuilt based on user interaction. The controller is the part that is really changing because of the benefits of web services. If you look at Spring MVC, there is still a very strong coupling between the controller and the view. This coupling was due to the page-based model of web interaction. With RESTful web services, the web moved to a data-centric model where pages are optional.
If you review the list of books again, you will see that Python is represented twice. This is not as obvious a trend as big data or client-side development, but it is still surprising for a list of top 10 books. I was surprised until I read why Python is in the list. In the O’Reilly post, there is a link to an explanation of data science (a very good read) and that article talks about the use of Python within the big data community. The reasoning is that data needs to be massaged or “conditioned” as the article states. When dealing with this type of unstructured activity, scripting languages are used widely. Ages ago, Perl was the language of choice for this type of thing, but in the past 10 years Python has grown significantly in popularity. In addition to its usage in big data and as a general glue language, Python is also being used for server code where Java has been the standard language.
If you put all of this together, this list of books is a very good sampling of web development’s future.