Front-end is not “real” software development

May 27, 2020

Front-end Ecosystem

I started my frontend journey at Microsoft in 2018. I was just a college grad and started my career by working on the development of Microsoft Teams. Teams is a web application and has been built using front-end first architecture. I knew I loved the web when I was in college and was super excited to start work but at the same time, I had little idea what it meant to be a front-end engineer at Microsoft. I had done some web development during my undergrad and I knew what web development was but still, there was a lot which I didn’t know. I was blown away when I eventually got to know how diverse and challenging front-end development could be.

Today when I talk to my college juniors, frontend is being looked down upon and a lot of students have the notion that frontend means writing HTML, CSS and JavaScript. You use HTML to markup your web page, all of which can be done using an <div/> element and no one would care. You then use CSS to make it bright and colourful. You just add a bunch of CSS properties and pray that it somehow magically works. You don’t bother why it works and just be happy that it does. And at last, you sprinkle some JavaScript onClicks so that something happens when you click a button or submit a form. There is not much to write code in a structured manner and it’s not a “real software”. This was me when I was in my undergrad. It may sound exaggerated but deep down this is the kind of notion a lot of undergrad students have about frontend development even today. Of course, this is far from the truth. Building a web application takes a lot more than this especially when you are building a web application for Microsoft which would be used by 100s of millions of users.

To start with, the web today is no more about web documents and static pages. Yeah, we still do that but web in 2020 is primarily about building rich applications which can be served over the internet to the users. It is a software on the internet. Web developers have hijacked this platform so that they can serve their users with powerful applications instead of mere information on web pages. The reason they did so is that the web is an amazing pipeline for delivering the most up to date software to its users. Every time a user logs in, they get the most up to date version of the software with all the bugs fixed and all security patches applied and it’s a lot easier for them to manage which version of the software their customers are using. They can experiment and iterate quickly and build a perfect solution for their customers. It’s also great for the users as they get the best the software that’s available the day they are using the software. They don’t have to get annoying update prompts and they can just focus on getting things done. It’s a win-win. There are tradeoffs of course but the benefits outweigh the costs and hence for every company now the primary software platform choice for all of their new software is the web. Even some native applications today are being built using web infrastructure.

Now, with all software being web applications, it is on the frontend engineers to build rich user interfaces which include taking care of advance layouts, reusable pieces of UI(components) and how smooth is to interact with the software(performance). Not only user interfaces but frontend engineers also write the actual logic of the application as to how the different parts of the application interact with each other, how to fetch and to send data to the server and how to store information in browser’s memory(state). They also then think about how the application would work across different browsers(compatibility) and different screen sizes(responsiveness) which could vary from large width desktop monitors to medium width tablets to narrow width mobile devices. And not to mention other aspects of software like internationalization, personalization, accessibility and software testing. They do all of this keeping in mind that they have to keep their application size as small as possible so that their web application load quickly even on slow internet. And when things start getting huge, they start breaking their web application into mini chunks and develop strategies on when to send which chunk to the end-user. What if the user’s network is flaky and what if they go completely offline? Would the application continue to work? How to optimize that? I won’t say any further as it only gets more and more complicated beyond this point. But this gives us a clue as to what a diverse set of problems frontend engineers work on and it’s far challenging than what I had imagined when I was in undergrad. I love working on these and I got immense opportunity to solve challenging problems.

At Microsoft, we do frontend in an incredibly structured manner with best practices and meaningful web design systems in place. We solve weird complex problems in creative ways and form strategies to optimize our application in the messy web world. Some might say it is not perfect from a few engineering principles point of view but hey what matters at the end of the day is a happy customer and we have a lot of them.

Written by Gopal Goel who works at Microsoft and is building the web. @gopalgoel19