Frontend Engineering, then and now.

Too much on the table

Before you read the story…

This story is based on my recent experiences and the way I have seen the industry evolve in the last 5 years. This includes some of the interview experiences that I had and also the shift in tech stacks in some of the large organizations that I have been part of. I have taken reference of Angular family since I am part of it for 5 years, but it's not limited to Angular. Many areas are not covered, I tried to be as concise as I could.

The Era of UI Developers

10–15 years backs there was only one role present in the industry, known as the “SOFTWARE ENGINEERS”. Then came the UI Developers or some of legacy “software engineers” liked to call it the UI designers were those people who used to convert .psd files to .html files using HTML, CSS and the mother of all frontend libraries jQuery. This is the time when UI devs were given a design document called the mockups and the only requirement was to convert the mockup into working HTML. These mocks are then hooked to serverside programs and then served as a beautiful looking web application.

The responsibilities of a UI developer was only to worry about the margin, padding, positioning, colors, box-model, responsive behavior and some of displaying data from the JSON sent by the server. All the business logic used to reside in the server or the backend application.

This type of work was easily achieved by people who were then and still prevalent called as the designers. To become a UI developer you neither have to know the foundations of Computer Science nor have to worry about code complexity, scalability or any other big terms of the computation. Most of the UI Devs back then were mostly UI designers convert developers who learned the tools like jQuery, Bootstrap, Foundation or working along with JavaScript to a certain extent. Some people were using KnockoutJS, Ember, Backbone, Durandal, etc. but most of the industry, by most of the industry I mean 80% of the UI development folks were still doing great with jQuery. Then came the tool of mass destruction the “ANGULAR JS”

Angular JS on the frontend community.

Angular JS or Angular 1.x was released in the late 2010 but people started understanding its true potential from 2013. The UI developers were slowly picking up the pace but there was a clear distinguish happening in the teams. The divide was between Angular developers and UI Developers. NG-Devs were those who understood to a certain extent the MVC architecture and could work along with JavaScript as a language and not bound to Angular, but that was clearly not enough. A library like React was also becoming dominant in the market. People who are independent of any library or framework was a must for the industry.

Angular JS trends from 2013

The Dawn of Frontend Engineers

There was clearly a need for people who are gonna bridge the gap between serverside “Software Engineers” and the “UI Developers”. These people will write business logic on the frontend side as well as convert the .psd to .html files as well as understand the depths of JavaScript as a language as well as write maintainable, scalable, modular, extensible large scale applications.

The superstar has arrived

Now, some folks took up the challenge to revolutionize the frontend space. These folks started to learn the depths of JavaScript and also from some legends of the language (JS) like Kyle Simpsons, Douglas Crockford (father of JSON), and I am sure there are many other gurus. These folks were able to write complex JS apps, building huge frontend architectures independent of any framework and were known to be called as the Frontend Engineers or Frontend Developers. These folks are well versed with Vanilla JavaScript, the browser ecosystem, how the internet works, REST, SOAP, Auth Techniques, Fundamentals of Computer Science, Algorithmic approaches, Best case Worst Case, Jenkins, Docker, Continuous Integration, Continuous Deployment, and the list goes on.

2019 present scenario…

As of today, frontend engineers are not only confined to writing JavaScript on the browser but also APIs using NodeJS or any other platforms if necessary. So, here’s the list of must-knows of a frontend engineer on 2019 based on the recent interviews I have faced—

  1. HTML, CSS, or any other CSS preprocessor.
  2. JavaScript ES5/ ES6 — in depth
  3. TypeScript (arguable, but once you understand its power, it's awesome.)
  4. NodeJS or any other lang.— at least intermediate level of understanding
  5. Angular/ React/ Vue or any other lib or framework for faster development
  6. Data Structures and Algorithms — any language is fine but a must.
  7. System Design Principles
  8. Optimization Techniques in JavaScript
  9. The Working of the Internet
  10. State Management
  11. Security — beginner level understanding is necessary
  12. Continuous Integration and Continuous Deployment tools — basic

Interview Experiences…

I will be sharing some of the good questions that I have faced in the last 2 years. I will not be sharing the company names as this is not Glassdoor.

  1. A particular hotel in my web app gets 1M views per day and at least 1K-2K concurrent views. How will you show the user how many users are currently watching the hotel? Make sure you don’t burn up the server or hang the client’s browser by continuous polling? — System Design
  2. Design a parking lot with minimum resources. How will you arrange the cars in the following order — SUVs 4th Floor, Hatchbacks 3rd Floor, Minivans 2nd Floor, Bikes 1st Floor, Trucks Ground Floor. The parking software should have reserved parking for admins, should handle errors if SUV is parked in 2nd floor or vice versa, should post total revenue each day once in the master database, should be connected to the cloud so that the owner can view the progress. Start by talking about the Database Schema of the application — System Design
  3. Traverse a N x N matrix spirally. — DS practice problems
  4. Design your home wi-fi router, and explain what happens when we type and enter www.google.comSystem Design
  5. Design an error handling mechanism for an application with 80+ modules on the frontend side. — System Design plus JS in browser
  6. Why is hash-map or a map’s cyclomatic complexity less than other collections?- Data Structure and Algorithm | Asymptotic Runtime Complexity
  7. A pretty straight forward yet surprising question — Sort using Insertion Sort technique.
  8. Implement your own promise.
  9. How will you write a static method in ES5 — simple but a tricky question.
  10. Lots of HackerRank, HackerEarth tests ranging from data structures and algorithms to UI development, JavaScript MCQs, String Manipulations, Mathematical problems, etc.
  11. What is the cognitive complexity of Sonarqube, and how will you develop it?
  12. Explain SOLID and how you enforce it in your daily development.
  13. What are Elastic Servers and how do you think it's designed?
  14. How do you optimize your REST API?
  15. Lots of questions of memory optimization, memory leaks, optimization techniques, rendering time optimization techniques.
  16. How does Facebook authorize another app. — If simply put the question was how is JWT token shared and used for authentication.

So, it's clear that knowing HTML, CSS, and JavaScript is not enough. Questions like closures, scopes, hoisting are still being asked but that’s in a tricky way.

Understanding the entire lifecycle of any web app is now a necessity to develop high performing large scale complex applications. Frontend engineers are not limited to JavaScript, HTML, and CSS, they need to wear multiple hats starting from designing the apps with “UI designers” and then modeling the JSON response from the server to optimize frontend app and give users a fast and attractive experience.

Future for Frontend Engineers…

As of today, there are certain developers who are called full-stack developers, who can code backend using Java or C# or any other language and write JavaScript as well, but still, there’s a huge gap to find a person have expertise in both frontend and backend.

Based on the number of libraries and tools that are evolving daily in the JavaScript space, there’d be no such thing as a frontend developer or backend developer in the future. Big techs are already adopting this and quite soon there’d be only one role present in the industry — “SOFTWARE ENGINEER”

If you like it, then do press the clap button and post in comments what you think about it.

Senior Software Engineer at Lowes. Loves Tech, Money, and Real Madrid C.F.