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

In the era of Mobile, APIs, often RESTful APIs are becoming a key component of Web apps, and server-side implementations are becoming a thin layer with an API for data and security. These RESTful APIs are not only restricted to Web apps, but can also be used for Mobile apps. So that modern Web developers are writing their server-side code for both Mobile apps and Web apps, which has given more opportunity to Web developers. Another trend in this regard, is the rise of Mobile Backend as a Services (MBaaS) solutions on the Cloud platforms such as Parse and Azure Mobile Services. These MBaaS platforms are providing automatic REST APIs against the data models along with many mobile specific back-end services. We can use the MBaaS services for Web apps, since these services are providing RESTful APIs and and also providing JavaScript SDKs for HTML5 clients along with native Mobile SDKs. In future, I strongly believe that MBaaS services will be widely used for both Web apps and Mobile apps.

Emergence of Single Page Applications (SPA)

When server-side implementations are limited with RESTful APIs, Web front-end development is moved to client-side with desktop like UIs on the browser where developers are rendering the UI on the client-side instead of server-side rendering. In SPA apps, our front-end will be simply using the RESTful API for the data and build the entire UI on the client-side. In this context, JavaScript becomes a key technology for building web apps. One advantage of SPA apps are we can easily package these apps as Mobile apps to multiple mobile platforms using a hybrid mobile container such as Phonegap and Trigger.IO. This is okay for small-size to mid-size Mobile apps where UIs are based on data forms. So we can use a single code base for building Web apps and Mobile apps.

In SPA based Web development, JavaScript is becoming a key technology, and JavaScript skill is more important than ever before. I have developed few SPA apps using different frameworks, and observed some challenges with this model. Here’s the challenges I have observed with SPA apps:

When we develop large-scale SPA apps, it would be very difficult to maintain the app comparing to everything we do with server-side. I feel that building larger JavaScript apps is really a challenge from the maintainability preservative. 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

When most of the SPA frameworks are living with traditional MVC paradigm, ReactJS provides a different approach for building UI on the client-side. React is a JavaScript library developed by Facebook and Instagram team, for building user interfaces. The entire front-end of Instagram web site and some parts of the Facebook web site was built with ReactJS. Interestingly, you can use ReactJS with other front-end frameworks such as AngularJS and EmberJS. You can use ReactJS as the view layer along with an MVC framework. But, in practice, I don’t recommend to use ReactJS with traditional MVC frameworks. ReactJS introduces Virtual DOM, which is awesome part of the ReactJS library and it enables high performance for the rendering the UI. ReactJS provides better performance for the UI rendering than MVC frameworks such as AngularJS and EmberJS. You can build re-usable UI components with the Virtual DOM abstraction and later we can compose these components on the actual DOM. Virtual DOM lets you use React for building UIs outside the browser. For an example, React team at Facebook, building a Objective C bridge for building UIs on iOS apps. For scaling front-end apps, we can use Flux architecture with React, which is basically set of architecture practices, that provides data flows in a single direction. I have evaluated BackboneJS, EmberJS, AngularJS and React and I highly recommend React for building user interfaces.

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.

The JavaScript language is also a problem for me. JavaScript is not a good language for building large-scale apps.

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.