What does the term “full-stack programmer” mean? What are the defining traits of a full-stack programmer?
A full stack developer is capable of performing tasks at any level of the technical stack in which they reside. It means:
- Working with systems infrastructure (knowing what hardware to ask for , what OS to install, how to prepare the system and dependencies for all software)
- Understanding, creating, manipulating, and querying databases
- API / back-end code in one or more languages, e.g. Ruby, Java, Python, etc.
- Project management / client work, e.g. gathering requirements, creating technical specifications and architecture documents, creating good documentation, managing a project timeline (e.g., someone who knows Agile/SCRUM/Kanban)
In general a full-stack developer 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.
Typically these skills are developed over many years in the contexts of different jobs, so as Ian mentioned being a full-stack developer means being pushed outside of your comfort zone to constantly learn new skills.