Note: the term “full stack” in this article refers to those who work on both the front end and back end of web applications.
You’re a full stack engineer. They’re full stack engineers. Every-damn-body is a full stack engineer. But are you really?
I love the idea of generalists (though not as much as cheap employers love the idea of generalists!). I’ve worked with many who call themselves generalists.
But I have never known a single person that I’d consider a real front end + back end full stack engineer. And by that I mean a person who can work on both well enough to call either their profession.
Working with wood has always interested me. And I’ve completed quite a few carpentry projects over the years. Am I a carpenter? By no means. And hiring me for your carpentry project would likely result in your death beneath a pile of poorly assembled cabinets.
I enjoy mowing and trimming my lawn, and I can even get it looking downright presentable most weekends. I’ve planted a few gardens over the years. Can I accept landscaping clients now? Nope.
My point is that everyone can do many things to some extent. But we are not employable in those areas because we are not focused on nor highly skilled in those areas.
So why do we call back end engineers “full stack” simply because they hooked up an API fetch in the React app once?
The phrase “jack of all trades, master of none” comes to mind when I think about this subject. But I don’t think that’s entirely fair. Many of the so-called full stack engineers I’ve known are excellent back end programmers. They understand everything server-side, and can tell you what a 412 error means without googling.
Employers have succeeded in creating an environment where workers are forced to masquerade as something they’re not (and may have no interest in) in order to compete in the job market and inside companies for promotion. The end result is either a clunky UI or extra pressure on a company’s dedicated front end people to clean up the mess.
To some extent, the fault is with front end engineers because we have not clearly defined what it is that we do—or should be doing. This article is an attempt to define the role of front end developer from a high level.
These are the skills you need to posses to be an effective front end developer. The order roughly represents the distance from the conventional mindset.
You don’t have to have a thorough understanding of each of these areas. But you should at least know enough to know what you don’t know and be focused on achieving excellence in these areas.
You write the logic for the front end app. And you should know just enough about your application’s back end to connect to the API, process data, and handle errors.
2. Presentation (CSS)
Since styling the presentation layer is one of the most vital skills for a front end engineer, I’m always amazed at the amount of complaining and outright fear that full stack engineers experience when faced with writing CSS.
If your experience with styling stops at Material-UI, Bootstrap, or other already built style frameworks, you are not a front end or full stack engineer. If your role is “Senior Full Stack Engineer” but the idea of laying out UI elements makes your ass cheeks seize, you must immediately schedule time with HR to change your title and help them write a new job listing to find the person that will replace you in that front end role you should never have been in.
In all seriousness, writing solid, responsive CSS is vital for front end and full stack developers. It is not optional.
Even if your organization employs accessibility experts, it is your job as a front end developer to implement components using best practice.
Everything is not a div. Some elements are not interactive. All elements must be presented in a semantic hierarchy. Font size and color contrast can make or break your app for many users.
No interest in keeping up with how well screen readers are able to navigate your UI? Maybe this front end thing just isn’t for you.
4. User Experience
A front end developer needs to understand user experience. Building and styling interface elements requires a level of understanding of how things should work.
Designers typically work with static tools and often miss how an interaction would work, how a component should adapt to a different viewport or to a touchscreen, or how a new feature conflicts with an existing feature. It is your job to provide this context.
With the possible exception of good sales people, no one lives in your company’s product as a daily consequence of their responsibilities more than front end developers. Front end developers understand how things work together and should know when they could work better.
By now you should be thinking, “But aren’t you just advocating for a full stack front end role that overlaps design instead of the back end?” Not really, no. We’re still talking about the basic responsibilities of a good front end developer.
Just like a front end engineer should know how to communicate with back end developers to develop the API, they should be capable of communicating with designers about technical restraints, user experience issues, and even to provide critical design feedback.
More importantly, if you don’t know anything about design, you have no way of knowing if the layout you just built even looks right. Not all projects are fully specced, especially in fast moving environments, so your company should have confidence that their front end engineers would not output layouts that hurt their brand.
In other words, your job is the front end: the visible part of the app. If you can’t tell when a layout looks lousy, you cannot be a front end developer.
6. Project Management
Front end developers have a unique position in a project flow. After product and design have had their say, and the API is ready, the crunch time to meet a deadline comes down to the front end. When the front end merges, a project (or iteration, at least) is typically considered finished.
While it is easy to complain about how poorly the project was handled before you touched it, a better approach is to be involved in managing the project from the beginning. Identify constraints and user experience problems, provide design feedback, help the other members of the project team move faster.
While front end developers are often the last to touch a project, their logical role sits in the middle between design and the back end. They’re the person those other people must communicate with to be able to avoid revisions later.
A good front end developer understands the need to be involved from the beginning and provide answers before the questions have even been asked.
Every front end developer doesn’t excel in all these areas—and I haven’t even addressed the essential skills all software engineers should possess, like mentorship, writing, and testing. There are levels as you grow in your career. But if the responsibilities I’ve highlighted don’t fit into your idea of what your role should be, you are probably not a front end—or full stack—engineer.
Are you brilliant in all of these areas and still have time in a work day for back end work? First, google to find the back end version of this article and ask the reverse question. Still on top of it all? Congrats, you’re a true unicorn: a real full stack engineer.
Illustration by Gwyneth Fitzsimmons.