You have probably heard the term "full stack developer" several times over the last few years, but what does it actually mean? If you are a developer, then you probably get the question if you are a "full stack developer" during interviews? You might even wonder how to become a "full stack developer"? In this article I will attempt to clarify these things and give my point of view on this phenomena.
A full stack developer mean many things to many people, but the short definition is that it is a developer that knows pretty much everything in the development stack. This ranges all the way over into the design area where you are expected to know visual design, user experience and interaction design. On the other end of the spectrum you are expected to know your way around databases, app development and of course devops and even server management.
This is not all however as you are expected to be proficient in HTML, CSS, multiple java script libraries and of course multiple backend languages. It is also implied that you should know things like accessibility through WAI and WCAG, be proficient in Git, easily build using boiler plates such as Bootstrap and manage your code using SASS/LESS with a good understanding of Grunt, Polyfill, coffescript and a ton of other things. Things like Ajax and API are as natural to you as configuring proxies and doing multi system testing for email designs.
Things like testing and requirement management should be second nature to you and you should naturally work with test driven development. You should be familiar with continuous deployment into multiple environment and of course know your way around tools like Bitbucket pipelines, Anisble, Team City, Octopus deploy and Azure Devops. On the servers you should know how configurations for ngninx, apache, Litespeed and Varnish work and how it affect your work. In the database you of course know all about collations, foreign keys and how to define and build different views and structures.
This is of course a bit to much for any one person to master and that is why the term "full stack developer" is very misleading. It is also why it makes me chuckle any time I see a 25 year old put "full stack developer" on their resume as it takes a minimum of 10 years to even get close to this definition. That is assuming you actually spend most of your days working with these areas.
Even more interesting it become when you consider that most people that actually get close to a full stack developer level have long since moved away from the actual development role. They work as senior architects or in a management position because that is where their extensive experience is most useful. If you take me for example I would actually qualify as a full stack developer because I have worked in all areas and I have extensive knowledge of each. You will never find me doing any code in a professional capacity however, even if I have 25+ years experience as a developer.
If having a great understanding of the whole chain in a development pipeline is the strength of a full stack developer, then the lack of specialization and fragmented knowledge is the downside. While I can walk into any team and know what they are talking about I am never the expert in the room. There is no way I can keep the same level of expertise splitting my attention over a dozen areas as a person who can focus on 3-4 areas. There are simply not enough time to manage that.
I know many front end developers such as @Ornamo Antar and @MikaelX that are wizards on the front end while still have a respectable knowledge of both the design aspects and the devops aspects. In my mind they are absolutely full stack developers, but with a high focus on the front end. Would I put them in a back end development team or stick them in the development pipeline? No, I would not, because even if they probably will do fine, it is not where their expertise or passion is.
Another example would be @Mauron who is one of the best architects I know. His knowledge of back end development and the server stacks is second to none. He also know tons of design and front end, making him a full stack developer no question about it. Would I put him on a design team or a front end team? Of course not. His skills would be wasted there as his passion and knowledge is in other areas. He probably don't want to admit it himself, but for me he is even wasting it on doing code at all, because his ability to teach and support others are invaluable.
The answers you seek
What is a Full Stack Developer?
A full stack developer, as I see it, is an experienced developer that have extended their knowledge into the areas surrounding their core area. They are not experts in all fields, but have solid knowledge at least. They still have expert knowledge in at least one field and this is what separate them from the generalists. This level of experience usually take 10-15 years to develop depending if it is done through natural progression or through focused effort to learn new areas.
What do I do when people ask me if I am a full stack developer?
Ask them to define what a full stack developer means for them. Explain to them what your area of expertise is and how you measure up on the other areas to see if you match their expectations. If you don't get the clarification then you could end up with different expectations that lead to conflict. Better to be up front and ensure you both have the same expectations.
How do I become a full stack developer?
Focus on your area of expertise and you will naturally extend your knowledge over time. If you are a front end developer then you will naturally dip into the back end through API and working in mixed templates that are in many systems. As a back end developer you will naturally dip into operations as you dig into proxies and network configurations.
All developers will get involved in deployments (and yes you SAP people, I consider CHARM to be deployment) as well as code repositories with code versioning. Everyone work with requirements in one way or the other and everyone will deal with test.
As you become more experienced you will get into things like optimization, browser cache, network speed and even outside the system itself into SEO and CRO. You will interact with design and many, many different management tools.
In short becoming a full stack will come naturally.
If you want to speed things up then try new things! I know several people that have moved from back end to front end or vice versa and it have given them great knowledge. I also know that most front end developers dabble in UX and CRO to become better front end developers and so on. This is especially great if you are still relatively inexperienced as it will give you better understanding once you choose your area of expertise later on.
So do not be shy to experiment and extend your expertise early on, you will benefit from it greatly later on.
You can also join this site as I am very much dipping into all areas of a full stack developer. Just ask any question here and I will do my best to help you find the answers you seek so you can grow towards becoming a full stack developer.