Intersection of Web Development - 2016

What’s on in 2016

The magic roundabout

By Cathcam (Own work) [CC BY-SA 4.0], via Wikimedia Commons

We are facing so many options.

As an IT professional mainly focus on web-based application development, I constantly feel that the world of web development has been changing in a way that no one is able to catch up.

Not only new libraries and frameworks are being developed every day, but also the tools you use to write code, the platform you run your code, and the way you work with your team, have been changing very rapidly as far as I can remember.

Here I am just trying to clear my thoughts in a rapidly changing era, so that during this process I am able to think this through to understand what is the next cool thing to follow, and what is the next thing to give up. This is by no means a comprehensive review of all things available, instead it’s more of the things I am paying attention to and care about.

Frontend Programming

Here I mean more about JavaScript (I am not a really good CSS guy, it took me quite a while to get my head around CSS transform and animation).

Angular – I am in the Angular camp, and wrote quite a few applications using Angular 1. Of course you cannot use that for the next few years, because Angular 2 is now out there in the wild, and is now becoming the new fancy tool everyone wants to get their hands on.

ESCMA6 & TypeScript – I’ve been following Angular 2, as well as the TypeScript and ESCMA6 script it brings. I think I’ll start to use Angular 2, written in TypeScript. It is an easy decision. I think it has a future due to it’s modern syntax, great performance and active eco-system and community. With more browsers now support ES6 natively, I think sometimes for smaller projects maybe I can just write pure ES6.

React – I haven’t used React in production, and I feel like Angular was, most of the time, an easier solution for the problem I was trying to solve. Of course, I will be getting into React more. I don’t want to be the guy who has only a hammer, and prefer I don’t try to see all my problems as nails (even if they are all nails, I’ll do it in a different way anyway, a wrench may just work too).

Backend Programming

I have few things in mind that may be use as the backend for my frontend application written in the fancy single-page-application way.

.Net MVC – I am fine with this one in C#, and I think it will be around for almost as far as I can foresee. I’ve been writing a lot of MVC and API stuff and I do see it becomes a really good backend language with great performance and efficient and enjoyable development process.

.Net Core – This is a tricky one. I think it’s been around for a while, and it is kind of similar to the one above in terms of the code you write. However, it is quite different in the way that your dev-tools and deployment stack will change quite a bit. I’ve got quite a few things to learn, especially how to run this in a non-Windows environment, like on Linux with Docker. Also because the eco-system is not that mature compare to the well-developed MVC world, I don’t see I use this in production in the next few months.

PHP – Well, this is just a classic thing you kind of have to know. Random projects written in WordPress will be a problem you face every now and then if you work in a digital agency. Of course you have fancy things like PHP7, Laravel and symphony. I would say I’ll always keep myself up-to-date for new features and capabilities, but this will not be my go-to language to start a new project in the next few months.

Golang – I like Golang, especially it’s simplicity and performance. I’ve done few projects with a Golang API service. It worked well, fast and reliable. With NGINX proxy in front of it I can get a much faster performance than what I can get from IIS + .Net. Also, because of Docker, hosting Golang projects are less expensive compare to the .Net stack, so some clients tend to like the cheaper and faster Golang solution.

NodeJS – I am not a fan of JavaScript as backend. The main reason I don’t like JavaScript is a little bit personal, but I always feel the async nature of JavaScript makes me always feel like I don’t have total control of what’s going on. In .Net for example, you can control your code to run both sync and async ways, and similar thing can be done in Golang. However in JavaScript, callbacks and / or promises are driving me kind of crazy.

Swift – A newcomer in the “full stack” language camp. I am not an Apple guy (all my Macs run Arch Linux), so I didn’t pay much attention for Swift 1 and 2 when it was released, during which time people say it’s a great time to learn a new language because it’s Apple and because it’s new. I was not impressed until it was made open source and you can run it on Apple platforms as well as on Linux. My opinion, considering the dramatic changes when Swift 3 was released, is that I will wait for the language and the eco-system to develop a little bit before I dive into it and build anything serious.

Ruby on Rails & Python – I am not a fan of those, mainly because of the performance issue and the dependency thing that I just have problem getting it working easily. I used Ruby on Rails briefly but decided to go back to .Net and Golang after a while.

Java – I am not a “commercial” Java programmer. I mean, I know the basics and the fundamentals of J2EE and J2SE, but not really familiar with the community and the eco-system. I understand it is still a really important language, so I guess I’ll learn it if I really need to.

Cloud

The cloud is now part of developers’ everyday lives. I mainly use 4 different providers: AWS, Azure, Google Cloud and Digital Ocean.

AWS – I like AWS a lot more than Azure, mainly due to its simplicity and simpler interface, and also because I started earlier so comparatively I have more experience with it. I use it for almost everything except hosting .Net web applications. The idea of having a Windows virtual machine and knowing that you need to manage it is quite painful. I also like the APIs it provides which are simple and easy to use in different environment, unlike Azure I sometimes need to find something called “Powershell” to get it working without much trouble.

Azure – This is my go-to choice for .Net applications and MsSql database. And of course for some features like auto-scaling and auto-deployment it’s easier to setup here than in AWS, which normally require some complicated configuration. It’s expensive, though, and normally it costs A$100+ a month to host a website with proper backup, scaling and performance. To be fair it does perform great if you pay that much money to AWS, but I guess it’s just harder to setup and maintain.

Google Cloud – Google Cloud is simple, has less features compare to the above two, yet still gives me a lot more than what I need to do. The interface is easier to follow and Google does have a really good API in place. A recent rebranding helped to group everything together and make things a lot easier to find and understand. The pricing is a plus as it is automatically discounted based on usage, unlike Azure where you need to spend a lot of money or like AWS where you need to commit to some resource in advance. One thing I like especially is the Golang support because they are both from Google, so it’s getting a first-class support, just like C# to Azure.

Digital Ocean – This is a relatively new player with simple pricing and user interface. I use Digital Ocean mainly for personal stuff as the cost is more predictable than other services. There are two reasons I cannot use it too much for commercial things: the product is quite simple, basically only Droplets (VMs) and Storage (EBS), so if you want to build something like a serverless solution it is not available. Another reason is because the limited datacenter location, as I live in Australia so many companies have the policy that they have to store their data on Australia servers. The Droplets are, to be honest, really fast and the data allowance is quite generous too.

Other Topics?

There are so many things that I can talk about, like:

However, what I am trying to say is that web, built with HTML, JS and CSS mainly, are now becoming a major channel to deliver user interfaces because of its simplicity in delivery, high scalability, high availability and ease of maintenance and upgrade. No matter you are on the browser, or on a desktop application, or on a mobile, or maybe even a billboard on a building, you are looking at HTML, JS and CSS.

So, get ready for a more complicated but exciting Web development experience.