Fundamentals: Frontend Developer

I’ve been conducting a lot of interviews this year helping organizations in my company hire front-end developers and it is proving a challenge. The primary issues in my judgement are an industry trend toward “full-stack” developers as well as a heavy reliance on frameworks across the industry. The majority of applicants applying for front-end positions (at least at the company I work for) are only front-end developers in-so-far as they are familiar with React/Angular and are moderately competent in Javascript. The majority of the applicants I interview have only a basic understanding of CSS and the browser and struggle significantly when the frameworks are taken away.

Through this experience I’ve come to appreciate specialization. Not because we shouldn’t all try to expand our skillsets but because in order to be valuable to an employer you need to offer an area of expertise: knowledge about a particular subject area that goes deep enough to make you a resource for your team/organization. In my experience, even the most service oriented (backend) teams are capable of researching enough about a frontend framework to hit a deadline. In other words, reasonably intelligent people are capable of learning quickly, especially with the wealth of tutorials and examples available on the ol’ interwebs. What makes you a valuable resource as a front-end developer is a deep enough understanding of the fundamentals that you can diagnose and correct problems when they arise.

Which brings me to an unexpected parallel with golf. This month has been a severe struggle with my golf swing. As such I’ve found myself in all sorts of new territory and strange situations out on the golf course. But most importantly, I discovered that I don’t know enough about the mechanics of a golf swing to self diagnose. This has triggered research into new golf drills, swing fundamentals, practice drills, etc. It has been a reminder that the better I get at something the less I know.

The fundamentals for front-end development coincide conveniently with the things that backend oriented developers don’t want or don’t have the time to become proficient in. Those fundamentals, in my experience, include:

  1. Styling - CSS is martian to backend developers. Delightful experiences are important to customers.
  2. UX - Related to styling, backend oriented teams struggle in making delightful experiences, even when designers were assigned to the product.
  3. Testing - Writing useful frontend unit and integration tests is hard, even (especially?) when using frameworks like React.
  4. Cross Browser Development - Understanding how to develop across browsers saves a ton of headache, especially if requirements are to support beyond the latest versions of the big 3.
  5. Browser Security - We have a duty to the internet to all get better here. It is critical that we keep up to date with security best practices to quite literally protect our friends and family.
  6. Performance - Performance is important. I don’t mean creating performant experiences (though that is important) but rather measuring performance, both manually by utilizing developer tools as well as creating programmatic solutions to measure production traffic.

In summary, I would encourage people who enjoy front-end development to quit considering themselves full-stack developers and instead focus on front-end fundamentals. In other words, start appreciating the boring end of the [https://github.com/kamranahmedse/developer-roadmap](front-end developer roadmap).