Are you really a full-stack developer?

In the past few years, I can see a lot of developers identifying themselves as full-stack. In fact, the results from the latest Stackoverflow Developer Survey from 2016 shows that 28% of the developers in the world declare themselves as Full-Stack Web Developers. Isn’t that a huge percentage?

By definition, the term full-stack means developers who are comfortable working with both back-end and front-end technologies. More specifically, it means you can work with server side languages, databases, HTML, CSS, JavaScript and everything between.

The days when the good developers were proficient in only one programming language or a specific process are gone, but can we really identify ourselves as full-stack developers? Being a full-stack requires a solid knowledge of a range of technologies across multiple platforms and I am not sure most of the developers are familiar with them.

I am breaking down the technologies you need in order to declare yourself as a full-stack developer these days.

Back-end technologies — In terms of programming languages, you should be comfortable with at least one server-side language (PHP, NodeJS, Ruby, Python, C#). Next, you should be pretty familiar with at least one database management technology (MySQL, PostgreSQL, Redis, MongoDB, Cassandra). Finally, you should know enough about Web Servers (Apache, Nginx, IIS) and know how to setup an application or a website.

Front-end technologies — HTML, CSS and Javascript as a must. Alongside with them, as a full-stack developer, you should know about responsive design, media queries, LESS, SASS, browsers compatibilities etc. You should also know how to communicate with the backend using AJAX or WebSockets. It is a Javascript era, so knowledge in any JavaScript framework is good to have (read required).

System administration — You should know how cloud hosting works (AWS, Rackspace, Digital Ocean) and how to setup an instance. You shouldn’t be proficient with it because it is a whole science, but you should be able to handle it. Additionally, you should be familiar with setting up HTTPS protocol, DNS, server monitoring etc. Caching is also important, Varnish, reverse proxy and Memcached.

Web development tools — Version control (Git, SVN) is must have these days. Additionally, in order to avoid the different environment incompatibilities, the virtualization tools are nice to have — they can save a lot of debugging time. You should know how to set up Virtual Box and Vagrant at least.

Of course, as a full-stack developer, you don’t need to master all of those areas and technologies — it is nearly impossible, but you should be comfortable with all them.

Finally, a developer can’t declare himself a full stack developer until (s)he has worked with multiple languages, platforms, and even industries in his/her professional career. Full stack goes beyond a “senior engineer” and it is simply impossible to be a young programmer and a full-stack at the same time.