In this inaugural Dev Column, Jamie Burton, front-end engineer, discusses whether current front-end engineering practices are detrimental to a Dev's skillset.
With the advent of enterprise client-side applications powering many of the world’s premier businesses such as Microsoft, Google and Apple, frameworks and libraries such as React, Angular and Vue.js are empowering developers to build out business requirements without needing to consider many of the lower-level details.
It is certainly far-fetched to suggest that Software engineers should build out common features such as virtual DOM/change-detection or dependency injection themselves. Partnering with the wider software community through the use of such open source frameworks makes sense, as software is built for real businesses that need to ship their products to market promptly.
However, there is certainly a case to discuss whether such technologies are reducing the overall level of expertise around subjects such as application performance, client-side algorithms and network performance, especially as this complexity appears set to increase over the years.
Can’t this be said for all areas of Software Development?
The short answer is yes. The long answer is, it depends. While Back-end frameworks such as Spring and Django are commonplace amongst languages such as Python and Java, the world of Front-end development accelerates at a much faster pace, with a seemingly endless array (no pun intended) of new libraries and frameworks being released.
Consequently, with this pace of change, developers often dip their toes in and out of frameworks in order to stay relevant in this ever-changing marketplace. As a result, the widespread lack of domain expertise is a more realistic scenario for Front-end engineers.
Why could this be dangerous?
Much like anything, when there is a lack of lower-level skills in an area of expertise, the need for abstraction (hiding the complex stuff beneath easy to use interfaces) is increasingly desired. For example, who would want to manually manage memory using languages such as C++ and C, when Java and Python will do this automatically?
Is it actually useful for Front-end engineers to understand these lower-level areas?
Engineers writing server-side applications need to understand how servers work, at least to a non-trivial extent. The same applies for Mobile application developers and other domain specific software development.
However, as highlighted earlier, client-side applications are continuing to grow in complexity at a staggering rate, with technologies such as WebAssembly (the browser's equivalent to bytecode) and HTTP/2 (which removes the need for many conventional performance optimisations such as file concatenation and CSS sprites), it could be very helpful for developers to gain such knowledge.
Front-end and Back-end code looks increasingly similar...
While there will likely always be a clear distinction between these two areas of development, concepts such as interceptors, dependency injection and the general considerations that accompany building enterprise applications are pushing many Front-end engineers outside of their comfort zones - the typical approach to development.
The Dev Column brings you the latest insight and opinion from our team of Back-end and Front-end engineers at Modulr. If you'd like to experience what they do all day, test the API sandbox below.