Dispelling Some Common Illusions of Web Engineering

omwri
3 min readMay 31, 2020
Photo by Carl Heyerdahl on Unsplash

In this blog, the author aims to dispel some of the common illusions regarding web applications engineering AKA web development AKA front-end engineering.

Web Applications Engineering means Front End Engineering

There is a commonly held belief that front end engineering exists as a separate discipline as opposed to backend engineering. However, software engineers are required to write server-side logic in Node.js, Ruby or PHP as well as front-end logic in Javascript, HTML and CSS. Indeed, one of the common problems a web applications engineer faces are to decide which place to put your logic — i.e. the server or the client. Web applications engineering is about building a usable software product that is served via the Internet and runs on a web browser. It’s not merely the presentation.

Web Engineering is Not Real Engineering

In his paper, David Parnas defines software engineering as the discipline of making computers usable for humans. Building performant, aesthetically pleasing applications is real software engineering; whether on the web, on Android or iOS. It requires thought, effort, persistence and creativity. It involves the use of computer science principles as well as tons of common sense. Ultimately, if you write code and you get paid for it, you’re doing real engineering.

All Front-End Programming is JavaScript Programming

JavaScript is a language used for interactivity on a web browser. It is merely one of the tools an applications engineer will have in her/his toolkit. HTML5 and CSS3 also provide powerful techniques to craft rich applications. It is not about having one tool to rule them all but to pick the right one for the job.

React/Vue/Redux/Svelte will solve every problem

Libraries and frameworks solve specific problems. React/Preact help with rich interactivity through the use of the virtual dom. Redux/MobX/Flux help in keeping a consistent state across the application. Typescript adds type definitions to code which improves readability. However, these technologies solve specific problems at best and quite a few of them solve nothing at all. There is no panacea, no silver bullet, no messiah technology that will fix everything.

You don’t need to know Data Structures or Algorithms to do Front End Engineering

By data structures and algorithms knowledge, the author does not mean the knowledge to solve coding puzzles that get asked in interviews. Rather, it is the knowledge of algorithmic complexity and how common data structures work. This is essential to build performant web applications. Understanding that the HTML DOM is a tree, helps you to keep your DOM updates small and restricted over a specific area. Knowledge of algorithmic complexity helps you to refactor your code to avoid deeply nested loops.

Only a particular performance metric matters

There is a collective illusion to hone in one performance metric, i.e. JS bundle size, page load time, time to first byte etc. as an indicator of your system performance. However, more often than not, other parameters like the interactivity of your application also play a crucial role in your user experience. The focus should be on holistic performance improvements rather than optimizing for bits and pieces.

All devices are the same, users are the same

Human beings are incredibly diverse, and web applications are used on a wide variety of devices. No two humans will similarly use your app. Not everyone is equally abled. Every person using your application does not do so on a multicore machine with 32 GB of RAM. All requests for your app are not served via a high-speed broadband network. Understanding device diversity and user diversity helps in building empathetic applications.

Software Analysis and Design is not needed

Jumping straight into the code while building a web application is a sure shot recipe for failure. The software design principles and practices like analyzing the needs of the system, writing a design document before creating the application and writing readable, modular code are needed for web applications as well.

Ultimately, the one illusion that we, as web applications engineers, need to dispel is that we’re not living in a world of illusions. So, let’s get rid of them, focus on reality and go forth to build awesome things.

--

--