Predicting the future of web development
What the programming landscapes look like in the next few years
Watch the video
If you are into frontend development or just choosing a language or framework, I’d highly recommended watching this YouTube video of a conference talk:
- Title: Predicting the Future of the Web Development (2020 and 2025)
- YouTube channel: Coding Tech
- Speaker: Richard Feldman
- Event: ReactiveConf 2019 in Prague
- Length: 29 minutes
Key takeaways
Below are some points in the talk which stood out for me.
- Make a prediction rather than following blindly (such as choosing the most-used / popular solution).
- Add features that people want, don’t check off a list of things you think they want.
- NPM has a security vulnerability through the pre- and post-install script commands - disable this in your config.
- Predictions
- TypeScript will take over the JS world.
- Web Assembly will continue to grow and expand the Web App pie.
- NPM will last, surviving further problems.
- JavaScript alternatives (e.g. Elm) will stay niche and age well.
I’ll elaborate on the talk in the rest of this post.
Choosing a technology
- Make a prediction rather than following blindly. The speaker shares his experience on this lesson.
- In 2006, the LAMP stack was all the rage. The P of LAMP stood for PHP, Perl and Python. Perl was super popular, so the speaker’s team went for that.
- Perl’s support has declined constantly since then, making it harder to build and to hire people.
- So is not about choosing a technology (language, framework) only because everybody is using it (popularity). You might overlook a declining trend at the moment or coming up.
- Rather make a prediction on its future for the next 5 or 10 years and then choose it.
- And choose it because it will make you happy. Consider these factors:
- Maturity
- Community support
- Libraries
- How your teams likes working with it
- How easy it is to hire people for it. This is related to how much people like learning using the language.
Competitors to JavaScript
- JavaScript has community momentum. People are already using it and adding to it and learning it.
- Anything that is not JS-related won’t dominate.
- TypeScript
- This will likely dominate. In 2025 more people will be writing TypeScript than plain JavaScript. The reason why Perl didn’t make it and TypeScript will, is that TypeScript has already grown more popular than Perl and has been adopted or is busy being adopted by most JS frameworks.
- It promises safety with type checking at compile time, however the speaker makes a point that this can be a false promise if not used well - such as when using a complex nested type which uses
any
. (Or using type checking as a substitute for tests, as I’ve heard some people do).
- Any technology must be significantly different from JavaScript to make it worth using. Like Elm, which has its great ecosystem, reduced errors, better performance and smaller output sizes - it also apparently just feels smoother and lighter work with compared with JavaScript. Watch the talk for more motivations around these.
- But if a language/framework it is different enough from JavaScript, that will therefore also be a barrier to learn for those already preferring JavaScript, so it won’t overtake JavaScript. And that’s okay.
Below I share some languages the speaker covered, where dialects are built on top of JavaScript (transpiling to JS) and alternatives are not.
JS dialects
- CoffeeScript
- Dart
- Babel
- TypeScript
- Svelt
These were described as all “really just JavaScript” when compiled. TypeScript and CoffeeScript have both used that tagline.
Alternatives to JavaScript
- Closure script - closurescript.org
- Reason ML - reasonml.github.io
- Elm
NPM security vulnerability
The speakers said that NPM has a vulnerability in executing arbitrary code on install, using pre- and post-install commands. This can be used for malicious behavior, especially with nested dependencies.
It was recommended to do disable this behavior for safety. However, I find this was a bad idea, because every npm run
command then does nothing. Well you get a weird error and then if you run with --verbose
you see the reason behind it.
But anyway, if you do want to disable it:
npm config set ignore-scripts true
Or just disable on an install:
npm install --ignore-scripts
Adding to your product
- Go for solving use-cases and understanding people’s problems.
- Don’t just check off a list of features which the developers want to add but no one cares about. Such as when the speaker said that Elm’s output size and performance was better than JavaScript and was further improved, but people weren’t impressed because they are already okay with the drawbacks of JavaScript.
Other predictions
- Web Assembly growth.
- This gives low-level control of the browser behavior for achieving high performance. This is an alternative to JavaScript.
- This is already used by Elm, Dart and Rust as part of the code they output.
- Web Assembly is going to boost performance on browser UI, including for games. The speaker shared an example of a site which is like Photoshop which is built on C++ and renders in the browser (possibly in Web Assembly too but this wasn’t clear).
- Machine Learning and AI are over-hyped
- Yes there are great use-cases for them, but the kind of applications for those are not going to be so ground-breaking as people think.
- NPM ecosystem growth
- The GitHub packages repository might be a good alternative to the NPM packages repository. You can already specify it as a source when installing.
- Yarn or something similar could replace NPM as a tool.
- But the ecosystem will remain, because it has support.
- The NPM site has prevented unpublishing packages, to avoid unexpected errors.