In computing, a solution stack or software stack is a set of software subsystems or components needed to create a complete platform such that no additional software is needed to support applications.
— “Solution stack”, Computer Desktop Encyclopedia, The Computer Language Company, 2015
I define the Fullstack Developer as a person, who is able to master the complete stack and all of its aspects used in a project or domain. This includes frontend, backend, operation and anything in between such as APIs.
Because of the human nature, I consider it unrealistic such a person exists in reality or at least in your team. The broadness of knowledge needed comes at the cost of deepness. There are multiple frameworks, languages, components and Patterns in play at the same time. My personal experience taught me, that people tend to specialize in situations where deepness is necessary based on personal preferences. This ultimately leads to a shift of where in the stack the person considers itself as responsible and may let portions of the stack uncovered with deeper knowledge. In a healthy team such uncovered areas will be taken care of by other members eventually, shifting the team steadily into a Fullstack Team.
I define the Fullstack Team as two or more persons, who are able to master the complete stack and all of its aspects used in a project or domain together. This includes frontend, backend, operation and anything in between such as APIs.
In a healthy team, there are members specializing into different parts of the stack.
I haven’t talked about domain knowledge yet.