Dmitriy Kubyshkin, Frontend Architect, Zalando SE, discusses what it takes to be a successful Frontend Developer.
One of the hardest things about being a front-end 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 front-end position tricky.
To help you out, and to give an idea as to Zalando’s views are on the role in question, we have prepared some points on what we consider essential knowledge for a frontend developer.
The ability 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.
A knowledge of the following:
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 the laying out of a browser 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.
Every awesome front-end 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 front-end 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 front-end 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 front-end developers. So whenever something goes wrong there, it’s our job to figure out why.
The 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.
QA, as a department or a position, hasn’t existed at Zalando since we brought in Radical Agility in 2015. We believe that it’s each developer’s responsibility to ensure the quality of their produced code, and front-end has some very specific strategies for testing and asserting non-functional properties of the code.
7. Tooling / Automation
All of the topics discussed here also require very specialised 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.
Know the standards and stay up-to-date
Nothing gives you as much appreciation of the complexities involved in making the front-end work as reading the standards do: 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 SmashingMagazine, PonyFoo, HTML5Rocks (and many others) will keep you up to date on the latest developments and might trigger an urge to understand things deeper.
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 front-end developer.
Edited for web by Jordan Platt