The use of the term “full stack developer” became popular in the last couple of years but it seems that people are still not entirely sure of what it is. To aggravate matter, there is no Wikipedia entry for the term. First let’s try to define what a full stack developer might be. Based on experience as a developer and then architect, with all variations in between, the software project is usually chosen/ recommended by the technical architect. The architect will describe the stack as follow:
– User interface/ Front-end (if developing for screens)
– Middleware / back-end
– Data storage / databases
The above has been over simplified. The software stack would be all the components and subsystem required to build and run the application. Let’s go with we have listed as the full stack. The term “full stack developer” cannot be freely used as it would require some context. As another simplified example; a team might require a full stack developer to build a mobile application. The developer would be tasked to create a data storage and the user interface for the app. The app look and feel would have been designed by the design team and provided to the developer. Here the developer role would be to create the UI logic and the interaction with the data storage. Yet these types of developers are mostly referred to as mobile developers even though they are working on multiple components required to build the solution.
Let’s a have a quick look at what might happened in a web project. A web app will require the use of a data source which could be a database or a service. In the context of a greenfield project, the developer will have to design and create the database schema (maybe a task for the architect). Therefore he/she would have to be knowledgeable in database design regardless of its structure (NoSQL or RDBMS). The database maintenance and upgrade will be owned by the developer. Once the data has been structured, the developers will have to create code (back-end) to access it. This could be in the form of micro-services exposed to third-party clients for consumption. These micro-services do not contain any business logic as these would have been moved to another layer. The next task for our full stack developer is to create the business logic. Model-View-Controller developer would create a Java application which can contain the UI and business logic, would this be classed as a full stack developer? Let’s add another layer of complexity which is not too far from reality. For this fictional greenfield project, the project sponsors want the front-end to use the latest hype technology: AngularJS (we’re not saying that AngularJs is bad) so no Java code here. That’s pretty cool, the UI will be a Single Page Application (SPA). How comfortable are we with the idea that our developer is up-to the task of building this UI. He/She has managed to build the UI and we’re now ready to deploy our application. Let’s quickly list all the tasks involved so we have a clear idea of what is required of this rockstar developer:
– Design database schema
– Create micro-services to access the data
– Develop business logic (this could another set of micro-services)
– Code the user interface
Our developer would need to have some knowledge on setting up the environment in order to be able to code, test and deploy the application. Should devops skills be required too? Let’s face it, someone requiring all those skills cannot have mastered them all. Programming languages are constantly evolving and best practices are being redefine with each new release. The technology stack does not become stale; web browsers standard and the frameworks are forever evolving. A full stack developer inundated with work cannot have any spare time to all skills fresh and up to date. What you will get when asking for a full stack developer is a Jack/Jane of all trade – master of none. Teams are trying to keep cost down and looking for that one person who can do it all. It is understandable in young start-ups companies were there is not enough cash to hire 2 or 3 people. Our recommendation to larger companies would be to hire a good developer who has mastered his/her art. This developer would have a light knowledge of the other technologies. As a master of the art, the developer would know how to write code in other languages without much support. This is an experience developer who knows how to investigate issues and fix them and could possibly make recommendation. But remember this developer would not own the full stack but can be require to assist where possible.
The full stack developer is growing in popularity and this article discussed the realism that comes with such title. Software projects are too complex for a type of developer to own the full stack. We do not disagree that they could be some prodigal developers out there but we just have not met them yet. A full stack developer, as the title says, should be versatile with the subsystem and components required to develop the application. We are seeing more polyglot environment requiring a different set of mind-set. The term full stack developer is used loosely. Actually, it looks like the terms is mostly used by recruiters as we’re never came across someone referring to themselves as “full stack developer” but there are surely some out there who will.
— Armel Nene (@armelnene) August 4, 2017