A humorous definition from Ian Peters-Campbell on Quora, the full stack engineer is “the all-singing, all-dancing technical wizard. Or at least someone who won’t complain too much when asked to do some work outside their normal comfort zone.” But full stack engineers tend to leave the singing and dancing to the technical evangelists, if they’re not also wearing that hat.
Paraphrased from David Stewart, on the same Quora topic: They have a creative brain able to create digital experiences, and a logical one, along with a crazy propensity for detail. They are good solutions architects, able to look across the entire stack of technologies to develop great usable, solid, scalable web applications. They are rare. If you find one do anything you can do to hold on to them.
Paraphrased from Josh Begleiter, on the same Quora topic: In general a full-stack engineer has knowledge that is a mile wide, but not necessarily very deep, and has core competencies in the pieces of the stack in which they work most. A full stack engineer is capable of performing tasks at any level of the technical stack in which they reside, including but not limited to:
Systems infrastructure, networking, and security
Databases, data modeling and analytics
Back-end software engineering (server-side languages)
Front-end software engineering (client-side languages) and user interface/experience design
Project management (gathering client requirements, architecting solutions to the requirements, creating good documentation, managing a project timeline according to the SDLC methodology of choice - Agile/Scrum/Kanban/etc.)
In short, a full stack engineer is the jack-of-all-trades of your IT department. They know the software side, the infrastructure side, and in some cases the business side. As Stewart alluded to, they’re exceedingly rare. Some compare them to unicorns, which is a popular term in start-ups these days. But these engineers do exist, and your organization would be smart to recruit and retain them.
Is it better to be a full stack engineer? (more paraphrasing)
Being a full-stack engineer means to have an open mind towards new technologies, having your hands dirty in each one and to have an understanding of how a technology product gets done from a concept to design to the finished product.
The idea of a ‘full-stack engineer’ isn’t about being fluent in every possible technology there is, because specialization exists for a reason. It’s more about having an understanding in each of the areas above, to communicate intelligently between team members and to be a good asset if the situation needs it.
The full-stack engineer will have an increasingly important role in the software engineering of the future, as DevOps is becoming an essential part of software development companies, where the line between code developers and administrators who are responsible for code deployment and setup is getting thinner each day.
On the benefits of becoming a full stack engineer (more paraphrasing)
If you take the time to continuously increase your knowledge about the full stack, it will open up new ways of thinking about everything you work on. It gets you thinking outside of the box, and allows you to more fully optimize every aspect of the application from top to bottom. It will build your confidence in your ability to say, “I don’t know how to do that yet but I will learn how to quickly” and to execute well. It allows you to bring the right technology for the job and not just the only thing you are an expert at. It will allow you to troubleshoot and fix a much greater number of issues, which is invaluable in a tech-emergency.
There is also something deeply satisfying about being able to plan, architect, develop, deploy and maintain an entire application and the stack it runs on by yourself. Not because you are required to or that it is always a good idea to, but just to know that you can.