In the last 21 months I’ve been working as a front-end web developer for two companies and went to a dozen of different tech-related meet ups. I came in contact with technologies like React, Redux, Flow, TypeScript, CoffeeScript and EmbeddedJS. Like all of my fellow developers I ask myself what technologies to use to be prepared for the future – a question almost impossible to answer. There are many hot web features and frameworks in active development.
My language of 2017 is JavaScript
My expectation is that most of these frameworks won’t be attractive in a few years. They strengthened my believe in the potential of JavaScript. The adoption for the ES 2015 and ES 2017 standards are slowly coming to browsers and NodeJS. JavaScript is gaining more and more traction as an open definition of how to interact with a browser and an operating system.
There still seems to be a big demand to ease the development of web applications. React and AngularJS are trying to introduce reusable components to the web. Flow and TypeScript are trying to prevent run-time errors by introducing type annotations. None of these languages are compatible to the standard behind JavaScript which is called ECMAScript. This incompatibility means they have to be translated to JavaScript before browsers and NodeJS can run the scripts. Commonly developers use the software babel to transpile (“translate” mixed with “compile”) their code. Furthermore, webpack is commonly used to resolve dependencies between projects, files and libraries. Luckily those applications are being released under Open Source licenses and maintained by the biggest companies on the web. This is beneficial for their development as it drives trust in their continuous development and the amount of expertise which is put into their design.
Still, the need for improvement in the development process seems stronger than the adoption of any of those frameworks and tools. The community of developers seems to move from one technology to another. The process of transpiling allows development teams to change their toolset without an impact on how their application works for their users.
I expect:
- A standardized way to build UI components will arise.
- This will lead to React and AngularJS becoming slowly obsolete.
- React Native or a predecessor will continue to bring UI elements of different platforms into one language.
- More software to package and bundle dependencies will come and go.
- The advantages of Stylized Components in CSS
- The CSS standards are being extended by more queries and the variables feature. I expect more features to support more variable design patterns and easier inheritance.
- Optional type annotations for JavaScript (because of the pressure of Flow and TypeScript)
- Still no annotation for JavaScript in-line Documentation (like Java Docs)
- Still no common testing frameworks
- The expectations towards test frameworks are fluctuating too much for a standard to approach.
- A way more versatile DOM which requires heavily optimized implementations (e.g. multi-threading)
- VR is not as close as we would like it to be. It needs more standardization.
- Browser gaming could be a huge hit, if a big publisher jumps on it.
- With WebGL and WebAssmenbly released, the technology seems ready for it.
The future of Web development
The biggest advantage of web development is the openness around JavaScript’s browser API. Because of its new language features, I expect JavaScript to stick around at least for the next five years.
The tools and languages for development, testing and transpiling, however, are much more flexible than the code of web browsers. The pressure for evolution will make them change drastically or be abandoned.