So you think you’re a Full Stack Developer?
Over the past decade, it has become more and more common to see people throw the term Full Stack Developer
on their resume. In some ways, it has become a buzzphrase that every web developer thinks they have to have on their resume. While there is nothing wrong with putting the phrase on your resume, you must make sure that you fully understand what it means to be a Full Stack Developer and how it relates to the positions you apply for.
Me: You are aware that this position is for a senior-level web developer,
correct?
Interviewee: Yes, I'm a Full Stack Developer, so that is fine.
Me: Can you explain what you mean?
Interviewee: Certainly. As a Full Stack Developer, I can work on both
the Frontend and the Backend.
Me: Awesome. So can you tell me what the command `ls -al` does?
Interviewee: I don't know.
Me: Okay. Have you ever set up a Linux server?
Interviewee: No, I haven't.
Me: A moment ago, you indicated that as a Full Stack Developer,
you can work on the backend. Can you help me understand what
that means to you?
Interviewee: I can program the PHP backend and render
the HTML for the Frontend.
Me: Can you write a SQL query for me?
Interviewee: I'm not very familiar with SQL.
I’ve done quite a few interviews over the years. At one point, I was looking for a senior-level web developer. I had put Full Stack Developer
as part of the role title, but sadly most of the interviews I did resulted in conversations similar to the above example. I was looking for someone who knew Linux, had experience with setting up a database server, and of course, could develop the Backend and Frontend for the software. More often than not, I got applications or did interviews with someone closer to a junior level, who had never even logged into a Linux server.
It’s for this reason, that I would like to try to better define what a Full Stack Developer is and how this term should be used.
What is a Full Stack Developer?
Generally speaking, a quick search on the web for Full Stack Developer will return the same basic response. In simplest terms, a Full Stack Developer (or FSD) is a developer who can work on either the Frontend or the Backend of a given software.
On the surface, this is true, but what this fails to address is that there are ‘levels’ to being a Full Stack Developer. Put another way, it fails to address the complexities of what the ‘stack’ actually is. Most FSD will know the basics of HTML, CSS, and Javascript, but fail to realize that Redis or Nginx are part of the ‘stack’ too.
In the same way that you see Junior Developer
or Senior Developer
, what we’ve failed to do is specify Senior Full Stack Developer.
If you are only capable of working on the basics mentioned above for the Frontend, and you only know a single language like PHP, then in my opinion, you are a Junior Full Stack Developer
. It is this ‘level’ mindset that I think we need to establish when talking about a Full Stack Developer.
I generally limit Full Stack Developer to websites and web applications, but the concept can be adjusted to apply to traditional applications as well.
Levels of Full Stack Developer
Throughout my career, I’ve seen many different companies define engineering levels in vastly different ways. The one instance I saw that stood out to me wasn’t specific to Full Stack Developers, but I think it can be adapted here and is the best representation of Engineering Levels. I am going to apply the same breakdown for Full Stack Developers.
- Junior Full Stack Developer
- Full Stack Developer I
- Full Stack Developer II
- Senior Full Stack Developer
- Principal Full Stack Developer
- Senior Principal Full Stack Developer
- Otherworldly Full Stack Developer
The one word of caution I would point out here is that typically, an FSD will lean towards Frontend or Backend. This can complicate things because it could mean that on the Frontend, you are an FSDI, but on the Backend you are an FSDII. It’s very difficult for anyone to become an absolute expert in all aspects of both Frontend and Backend, so don’t feel discouraged if you don’t meet both sides. You should at least be aware of which side you lean towards the most.
Junior Full Stack Developer
Don’t let the Junior
fool you. A Junior FSD is far from a Junior Engineer. As I see it, a JFSD is a subset of a Software Engineer II
. While it is possible to be a JFSD / Junior Software Engineer, it’s generally unlikely to happen. By the time you’re a JFSD, you already know at least HTML, CSS, and Javascript for the Frontend, and at least one major language for the Backend (IE: PHP). You should also have a basic understanding of SQL.
Full Stack Developer I
An FSDI is the natural successor to the JFSD. As with JFSD, I consider the FSDI to be a subset of Software Engineer II
. As an FSDI, in addition to pure Javascript, you now are becoming familiar with specific Frameworks (IE: VueJS, Angular, React, Bootstrap).
On the Backend, you have adopted a second language. In addition to this, you are capable of basic Linux commands and can navigate remote servers.
Full Stack Developer II
An FSDII is starting to get more in-depth and falls under Senior Software Engineer
. On the Frontend, you are generally familiar with most major Frameworks and can pick them all up easily with at least one that you consider yourself to be an ‘expert’ in. At this level, you understand concepts like Responsive Design and are frequently considering them in your work.
The backend is where you truly start to shine as an FSDII. At this point, you can generally navigate any backend language, while being an ‘expert’ in at least one. In addition to this, you are an advanced SQL user and are at least comfortable with concepts like Query Optimizations. To further this, you are openly comfortable with Linux Administration. This includes the ability to easily install and configure basic software on the server. Finally, your experience with Linux Administration makes you an excellent candidate for Docker and Containerization.
Senior Full Stack Developer
An SFSD also falls under Senior Software Engineer
. On the Frontend, you have used most of the major frameworks in one way or another and have at least two you consider yourself an expert in.
On the backend, you are now an ‘expert’ at two languages, and can generally pick up any language with relative ease. You may not be an expert in those languages, but you can walk steadily through them.
At this point, we start to diverge a little bit from the original definition. The Backend has started to diverge into the distinct categories of coding versus infrastructure. That is to say that now, an FSD is not just Frontend and Backend, but DevOps as well. In all honesty, if you can consider yourself an SFSD, you can also consider yourself a DevOps Engineer in many ways. You’re an expert at the Linux Terminal, you are openly comfortable with building containers, and you are now using terms like Infrastructure as Code
or Continuous Integration
and can talk formally about them. Additionally, you’re exploring Kubernetes. You can install and administer all the common stack software, including Redis, MySQL/MariaDB, and Nginx.
Principal Full Stack Developer
A PFSD has to fall under the Principal Software Engineer
category. For simplicity's sake, I’m going to skip the ideals around management and business involvement that a PSE deals with, but I do think that they apply here as well.
To be clear, while I may not be discussing the business involvement of a PSE, I still consider them to be a critical aspect of a PFSD. Without them, you are not a PFSD.
At this point, there isn’t much additional ‘Growth’ to be had on the Frontend. You may be an expert at several frameworks, but because of your general expertise, it doesn’t matter all that much because you can pick up other frameworks in several weeks.
In the same way as Frontend, on the Backend, there isn’t much ‘Growth’ either, because you are capable of using all the major languages.
Where you really start to shine here is going beyond Linux Administration. You are intimately familiar with Kubernetes and Docker. You now commonly use at least one of the major Cloud Providers (Azure, AWS, DigitalOcean, etc), and are leveraging Terraform and/or Ansible at every corner.
Senior Principal Full Stack Developer
SPFSD falls under the Senior Principal Software Engineer
category. Again, I’m going to skip the management and business involvement details, but they apply here just as strongly.
As with PFSD, while I may not be discussing the business involvement of an SPSE, I still consider them to be a critical aspect of an SPFSD. Without them, you are not an SPFSD.
At this point, you’re at the top of the top, or the best of the best. In all three sections, you are vastly familiar with the general languages and technologies. You are comfortable with just about any environment, regardless of the configuration. While not normally something you might consider, this is the point that you are extremely comfortable with teaching what you know.
This isn’t something I’m 100% comfortable with claiming, but if you are at the level of SPFSD, then you are easily capable of being a VP or Director of Engineering.
Otherworldly Full Stack Developer
If SPFSD is considered the best of the best, you would think that there aren’t any more levels above this. However, you do occasionally find that there is that one person that stands above everyone else, for no apparent reason. This is where the Otherworldly comes into play.
This may be bold to say, but how you “know” you are an OFSD is you know you’re not. While this sounds like an oxymoron, I stand by this statement. If you claim you are an OFSD, then you’re not. Sadly, this isn’t something that can be explained very well, but I guarantee you that anyone who has met a true OFSD will be able to tell you how different they are. These are the ones that go on to be CTOs and CEOs, in some instances. The vastness of their knowledge is often incomprehensible.
I hate to say this, but you don’t get to claim yourself as an OFSD. This is something only those below or above you can claim. If I catch you claiming on your resume you are an OFSD, then I know you’ve likely got an ego, and I don’t want to work with you.
To be clear, I don’t think there is anything wrong with “knowing” you are an OFSD. However, true OFSD’s don’t advertise this. This is most often because as much as they do know, they fully acknowledge how much they don’t know.
Conclusion
Working in software development can be quite difficult with all the different terms that can be thrown around. I hope that one day we can apply these terms/levels and establish a little less confusion or embarrassment in the hiring process. If you find yourself putting FSD on your resume, you have my congratulations. It takes a lot to do so, but make sure you know what that stands for and what the position actually requires before you do. Otherwise, you could end up losing the position.