Web Development Trends For 2015 And Beyond
In this post, I will take a look at web development trends happening now and I would like to share my thoughts, observations and predictions for year 2015 and beyond. I have been working on Web technologies since early 2000, but last few years, I have been mainly involving with Cloud solution architectures. As a Web developer, I have worked on .Net, Node.js and Go technology stacks for developing Web apps and Web services. Recently, I have just looked on the Web technology and development trends as a whole, and I would like to share my thoughts and observations.
First, let me share some of the current trends I have observed on both usability and architecture.
Trends in Usability
Now days, user experience is getting more importance than ever before, and Responsive Web Design (RWD) is becoming a must have feature for web sites. RWD lets the end users browse web sites from multiple form factors, including mobile and tablet browsers. RWD can be replaced for some mobile web sites where we don’t have to develop separate web site for mobile users. This will work for some scenarios especially for developing web sites mainly focusses on presenting contents. But if you are building Web apps instead of Web sites, which is having lot UI workflows, RWD will not help you. Please keep in mind that Web apps and Web sites are different. Twitter Bootstrap and Zurb Foundation are the most popular RWD frameworks at this moment. If you are building apps that targeting mobile users, I highly recommend for using light-weight frameworks such as Yahoo Pure CSS.
Trends in Application Architecture
A mobile-first strategy in the enterprises, impacted a lot in Web development architecture as well. When organizations are developing Web apps and Web services, they are aligning this with their mobile strategy. Now days, Web APIs are becoming central point of Web apps and Mobile apps, where developers are building RESTful services on the server-side and building the front-end apps for both Web and Mobile, based on the RESTful services.
The Rise of API Driven Development
Emergence of Single Page Applications (SPA)
- It would be very difficult to implement complex security models on the client-side, with different kind of authorization roles which is having different levels of access restrictions on the UI.
My Observations on the SPA Frameworks
Currently, AngularJS, EmberJS and Backbone are the most popular SPA frameworks used for building real-world apps. I have evaluated these three frameworks and developed apps with it. Based on my experience, AngularJS is more productive framework which is filled with enough features for building larger SPA apps. IMHO, using a MV* framework for front-end development is not a good idea and MVC doesn't scale at larger front-end apps. Now, we are using MVC for both server-side and client-side that I don’t think it as a good practice.
ReactJS — An Awesome Front-End Framework
Trends in Server-Side Web Technology Stack in 2014
Few years back, dynamic type languages such as Ruby and Python had been attracted by lot of start-up companies. Ruby on Rails was really a revolution in Web development until few years back. Many start-up companies had developed innovative products in RoR and Python Web frameworks. Now days, the interesting thing is that, these apps are re-engineering to other Web technology stacks due to performance and scalability challenges. Using a dynamic type language for larger apps, is like having a drink with too much sugar. Initially, the sugary feeling would be attractive, but for long period, it can be harmful to the health of apps. This year, we have seen lot of Node.js adoption in the enterprises, especially for building for back-end services for high profile Mobile apps. Larger enterprises such as LinkedIn and Walmart, are using Node.js for powering their Mobile back-end services. As a new technology, Node.js is really a winner in the adoption market of the year 2014. Node.js is a preferred technology stack for building Mobile Backend as a Services (MBaaS) solutions on the Cloud. And this year, we saw lot of Node.js based CLI tools used for front-end development. The rise of Node.js and the fall of Ruby stack are the most notable trends in this year.
Here’s the some of the observations on the server-side Web stack:
- Ruby stack in generally and RoR in specifically is losing its momentum and larger Rails apps are re-engineering to other stack.
- The trend of using a dynamic language (Ruby and Python) for Web development is gradually losing its attention.
- Node.js is getting lot of adoption for building back-end RESTful services especially for Mobile space.
- Emergence of Node.js based CLI tools for front-end development.
- Microsoft .NET Web stack is going to a big paradigm shift with open specification OWIN – Practically, it is best of both ASP.NET and Node.js.
- Emergence of real-time web apps.
Predictions for 2015 and Beyond
Which technology will dominate in the year 2015? Which technology will lose its momentum? I strongly feel that the era of using dynamic languages for Web development, is going to end. Then, will Node.js continue its momentum in the new technology adoption market? I don’t think so. Since 2011, I have been mostly writing code in Node.js and had planned for writing a book on the same, but dropped that plan later. Recently, I left from Node.js platform for the following reasons:
- Node.js is always highlighted as a technology for building high performance apps, but it’s take on Performance over usability and maintainability is the biggest challenge for building larger apps and I predict that many larger Node.js apps will fail with maintainability problem in near future, and the era of hype over Node.js is going to end.
- The callback hell. I know that generators and promises are good solutions for solving the callback hell. Framework such as Koa.js provides some kind of solution for the same at the cost of performance impact. But for me, it is hard to solve many of my problem.
- Node.js is a minimalist platform. For me, it is good for building JSON based REST APIs and real-time systems. I want to develop variety of apps using a single technology stack. The point is that Node.js fails when CPU crunching logic is executes.
Some of my problems with Node.js will be the problem of some people and it is having many pragmatic problems with error handling, debugging and usability. I believe that maintainability will be the big challenge of larger Node.js apps. If you are building RESTful services on the Node.js, I highly recommend for using Hapi.js framework, developed by Walmart, which is really a good framework. I greatly appreciate Eran Hammer, who was the creator of Hapi.js.
On 2015, I bet on Go programming language, not just for Web development, but as a technology ecosystem for building distributed apps. For me, Go was far better choice than Node.js. On 2015, I predict that many Ruby and Node.js developers will move to Go.
Here’s my few predictions for year 2015 and beyond:
- Re-engineering of Rails apps to other stack will reach at peak level for performance-critical web apps.
- The era of using dynamic languages for Web is going to end at least for performance critical apps.
- Many Node.js apps will suck with maintainability problems. Performance over usability and maintainability might fail for Node.js.
- Go will emerge as a general purpose programming language which will also attract web developer community. Go is a good replacement for both Java and Dynamic language and also for Node.js community.
- Go can become the next big language on enterprises after Cobol and Java, but it will take some time. Go is a language of the Cloud era.
- Java and .Net stack will continue its momentum on mid-size to larger enterprise apps, but it will gradually fall on web development.
Go : Technology of 2015 and Beyond
Recently lot of good systems are being developed with Go, which are including Docker , Kubernetes , websocketd and Packer.IO. I predict that Go will get lot of attraction from different developer communities including Java, Ruby, Python and Node.js. Go is a static type language while providing the flexibility of dynamic type language’s productivity. In Go, concurrency is a first class citizen in the core programming language. Like C and C++, Go compiles to native machine code and unlike Java and .Net, it don’t need any JIT compilation. I fall in love with Go’s simplicity and it’s pragmatic design, and the package systems are really good. It may not be good idea to use Go for building traditional Web apps, but it is good for building HTTP servers for providing RESTful services. In future, you might be able to use Go for building Android apps. The advantage of Go is that it is a general purpose programming language, which can be used for any possible scenario — including systems programming and for larger distributed business apps. I strongly feel that Go is the language of distributed, concurrent and parallel computing in the era of Cloud. Go can become the next Java in the enterprises.