One of the hardest things about being a frontend developer comes from the fact that everybody has very different expectations of what it means to be one. This, along with a technology stack, that changes at the speed of light, makes interviewing for a frontend position tricky.
To help you out, and to give an idea as to Zalando’s views on the role, we have prepared some points on what we consider essential knowledge for a frontend developer.
Be able to solve problems
Sometimes you won’t know the perfect tool for the situation at hand, and this is also fine. However, you are still expected to provide a solution. This solution may not be the nicest in terms of code quality or speed, but it needs to work, at least for the cases presented at hand.
In the world of component-based frameworks and living style guides, you can get away with minimal CSS knowledge most of the time. Yet, when something goes wrong with your layout, or when you need to implement something unique, you need to know how browser layouting works. In short, we want you to understand CSS, but not necessarily keep all the flexbox properties, or browser-specific hacks in your head, although it is certainly a plus if you do.
Know thy standards and keep up to date
Nothing gives you as much appreciation of the complexities involved in making the frontend work as reading the standards does: HTML, CSS, and ECMA. It’s easy to get overwhelmed with more than 2,000 pages of quite dense and very specific reading, so start small. Websites like Smashing Magazine, PonyFoo, HTML5Rocks (and many others) will keep you up to date on the latest developments and might trigger an urge to understand things deeper.
Every awesome frontend application needs to get to the user’s browser somehow. It’s also likely that you will have to make some asynchronous fetch requests to backend services. All of this makes use of network, which means you should be aware of what is involved in making an HTTP request, at least on the level of Wikipedia with a sprinkle of cache-related topics, plus what request latency is composed of.
While it is not a requirement for a frontend developer, knowing the connection on a TCP level is a nice thing to have, as is awareness of HTTP/2. Knowledge of REST services, at least from a consumer perspective, is certainly helpful as well.
This goes back to the initial section on problem solving, but also touches on every other frontend topic. Browsers are extremely complicated pieces of software with years of legacy, but still evolving at great speed, and this software is our domain as frontend developers. So whenever something goes wrong there, it’s our job to figure out why.
Web, being an open platform, is constantly under the threat of various attacks, targeting both users and companies. Every piece of code and every call that the browser makes is a potential source of security vulnerabilities—initial load of the page, AJAX request, external scripts or iframe, and even a simple DOM manipulation can be vulnerable to XSS, CSRF and various other vectors of attacks. Being aware and vigilant is an essential requirement for the safety of the data of your customers and your company.
We believe that it’s each developer’s responsibility to ensure the quality of their produced code, and frontend has some very specific strategies for testing and asserting non-functional properties of the code.
Tooling / Automation
All of the topics discussed here also require very specialized tooling. You should definitely be comfortable with the concept of resource bundling and the tools available for this purpose. As mentioned above, testing by hand is not our thing, so a setup with automated tests is a must for every project.
Ideally, tooling and automation should be complemented by CI / CD to make sure no code slips past without running those tests. Depending on the project, you might also want to use a transpiler like PostCSS or Babel to help you write more modern code.
What we’ve collected above is obviously an enormous amount of knowledge and will rarely exist in a single mind, however, you should have an overview of these topics and have a keen insight with a select few to stand out as a frontend developer.