Looking for the meaning of full stack developer on Google, yields a range of definitions. Some of which says, a full stack developer should knows all the back end languages or the front end languages. Others say, the requirements are back end and front end skills. But I agree more with the definition that says, a full stack developer is required to have knowledge about the full stack developement cycle and tools, hence, I suggest the following definition:
A full stack developer, is a software developer, capable of fullfilling his tasks on the different technology stacks that constitutes a software application.
Skills required from a full stack developer, but not limited to, includes:
- To be able to start a project from scratch, communicate with the business stake holders and gather required features.
- Make plannings to the project, and manage it using a project management method such as Agile.
- Provision the infrastructure that would host the application.
- Configure and secure the network.
- Develop the front end for the different required clients (Web, Mobile, Desktop, …)
- Design the database’s data structure.
- Develop the back end that serves the different front ends
- Maintenance of all the above.
Mastering all of the above skills gives the developer the ability to design and develop an application from scratch.
In the real world, by nature, almost, every developer have to some degree knowledge of all of the above. Does it means that almost, all the developers are full stack ? well, it depends, because usually when a recruter asks if you’re full stack, they want to know if you can work with the backend, the frontend and the database, so, yes, every developer is full stack.
However, it’s very hard to build expertise in all the domains all at once (otherwise we wouldn’t need teams), so it’s hard to find full stack developers that have solid and in depth knowledge of all those domains.
Let’s not forget that developers are humains (It’s hard to believe giving our nature but it’s true none the less), thus, they have preferences, hence, they have more knowledge at a field compared to another.
So, the full stack seems like a valued business word used to get recruters and managers hyped.
So, it seems that the title full stack developer and the question are you full stack is meaningless, because by definition, all the developers have knowledge of the backend, frontend and the database, then, maybe we should start talking about the stack itself.
Talk about your experience with the different aspects, like how you can use the database, design the tables, issue SQL queries, but how you’re unable to optimize the design or the queries, how you can design and develop a GUI, but not able to produce state of the art UX designs, and how you’re skills at architecting the backend is unmatched, give a real experiece, how the database administrator was able to optimise your first iteration of the database tables structure, and how a UX designer intervened in the project and how you were able to progress a task or resolve a complicated issue at work.