Last week Stackoverflow released their annual developer survey. One of the most impressive things about this survey is the number of respondents who participated, 64,000, which is probably the largest developer survey in the world.
Looking at the emerging technologies in the software development world can give a valuable insight into potential trends that you will need to learn in the not to distant future. In today's article, I'm going to summarise some of this report in terms in relation to the web and hopefully give you some food for thought about future considerations you may want to think about for your business.
The Most Popular Language
Probably the first question I tend to try and find in these surveys, is the age-old debate which has sparked up many a heated argument in the pub after work, what is the most popular language? For 2017 at least JavaScript came in as the most popular language, with SQL, Java, C# in runner-up positions. According to StackOverflow, this is the fifth year in a row where JavaScript has won this award. From a technical perspective, this trend is easy to understand.
Over the past decade, companies have had to deal with a quicker rate of change in technology than ever before. In the past decade, things like smartphones and apps have come out, responsive websites frameworks have been created to cater for the variety of devices someone might be viewing your product on, faster computers and internet connections have meant more things are possible that weren't 10 years ago, changing operating systems and web servers which provide functionality that wasn't previously possible, better project methodology tools, lessons learned from past website mistakes, cloud hosting and finally dev-ops, are usually all considerations now when planning a new web project.
Using Javascript instead of a client-side language like C# or Java, helps solve a number of the issues listed above. Javascript combined with AJAX helps mitigate a lot of risks when it comes to change. When you architect a website by separating features into API's, instead of having one monolithic application, life becomes easier.
Instead of having to write and maintain different code bases for your mobile app and your website, you can write a single API and consume that data. Instead of needing to do a massive ground-up rewrite, you may only need to change a single service that has minimal impact on the rest of your website.
Previously, it was very common to put all of your business logic within your website code. When a business needed to upgrade their CMS (or switch it) they had a massive monster upgrade project on their hands which in some cases took years to complete. If, on the other hand, most of your data related to a certain business function is contained within a service, and your website uses Javascript to consume these silos of functionality, maintenance and upgrades become easier as you have fewer things to change.
It's easy to see how companies get into these situations. They build a product that slowly evolves over time, as more features get added and the customer base expands. New features are needed quickly in order to help the company make money. Things get built quickly to meet current needs and then at some point critical mass occurs where the amount of legacy code, fixes and bandages gets so big it prevents the company from implementing new features and competing with rivals anymore. At that stage, the website needs a ground-up rewrite because it's a complete mess.
Being able to move a lot of these different concerns into API's and then using Javascript to get this data and display it on a web page, not only makes it easier to repeat the process again, but it also makes it easier to re-build a certain aspect of the website without affecting other areas.
What Language Should I Learn?
So, the survey said most developers are now focusing on Javascript, the second question is what framework should you be looking at? As Javascript frameworks are evolving at such a quick rate it's hard to keep track. When it comes to Javascript and deciding a framework to adopt, not only do you face the problem of a very rapidly changing landscape, you also face the problem of having different kinds of people using it. When you seek out a JS sage, some people will have come from a design and CSS background and some people who have come from a server-side C# environment. These two sets of people have contrasting views on 'whats best'
I've interviewed a lot of JS people recently and my first step was to explain the project briefly and get them to recommend a JS approach. Each one had a completely different answer. Some were HTML 'purists' and answered in terms of minimal frameworks and minimal page load size, these people fell into the make everything bespoke category.
Others didn't want to re-introduce the wheel and recommended using an existing framework like Angular, or Backbone. Other people come from a .NET background and wanted a Javascript framework that allowed them to use the minimal amount of JS and the most amount of.NET, as they thought becoming too tied into a Javascript framework was a bad idea.
Before I delve into the most popular JS frameworks, I thought I'd write the above statement as a warning. Just because something is popular and in-demand now, this is very likely to change next year. In terms of specific technologies, Node.js, AngularJS, React and Cordova are the current flavors of the month. The most wanted skills are Node.js, AngularJS and React. So if you want to create a web technology, looking into Angular and React would be a sensible idea.
Other Lessons Learnt?
Redis was the most popular database provider. I use Redis all the time and it does what it does well. If you want to look at performance in your website, this is a technology to investigate. In terms of hosting, Linux, Serverless, Amazon Web Services (AWS) and Microsoft Azure, where all top runners. This sort of fits into the Javascript, API model.
Conclusion
In my opinion, it looks like it's a Javascript world and the JS trend will continue to dominate over the next few years. It seems most businesses agree APIs and services in the cloud meet their business requirements and if you're planning a project then I think you'd be in good stead to follow this pattern.
For Developers: If like a lot of people Javascript is your weak area, if you want to be employed in 5-10 years' time, you need to start learning it. Definitely, in my career, not understanding JavaScript would have been a massive handicap in terms of architectural change.
A good book on Javascript to start off is the Javascript Reference book, although anyone new to programming might find it a struggle to understand. If you already know Javascript and you like CMS systems, then maybe looking into something like Keystone would help you out, as mentioned here, Is The JS CMS The Way Of The Future
For Business Owners: If you're planning a website, follow the herd. Ask your development team if they are decoupling the system into APIs. Just this simple approach could save you £1000,000's in the future. Instead of paying for a team to rewrite your whole application, they might get away with re-writing a little part of it. Javascript and API's will help you achieve that.