What is a "full stack" developer?

“all-singing, all-dancing technical wizard” - Ian Peters-Campbell on the definition of a “full stack developer”

Typically when a job posting or job title uses the word “full stack” they are referring to someone who has both “Frontend” and “Backend” Development knowledge. Taken more generally, it can refer to someone who knows how to handle everything from project management to installing the correct operating system on a server. In other words, it is a programmer who can deal with the complete implementation of a website. Here are the four things that you could include in your definition of a full stack developer. As I mentioned before, Frontend Development and Backend Development are most commonly included.

  1. Project Management - Can you work with clients / co-workers / designers and actually complete a project? Do you know how to plan timelines, make infrastructure decisions and gather the correct requirements? These often underrated skills are critical to becoming a productive and successful developer.

  2. Frontend Development - Typically refers to programming languages that the browser can run such as HTML, CSS, and JavaScript. This also includes JavaScript frameworks such as React. This is also often refer to as the “client side” development.

  3. Backend Development - All the code that runs on servers, such as applications and API's that power your website. Some backend languages to choose from include Python, Ruby, and Java to name a few. You will also need to be able to work with and create databases, which requires knowledge of a programming language such as SQL.

  4. DevOps Knowledge - Getting your code from github into production. This may mean installing operating systems (ex. setting a linux server so that your app can run) or managing the complex set of dependencies (ex. Installing the correct version of python) as your code base grows. This can greatly vary based on your setup and there are is whole set of engineers who specialize in this field.

In the same way a programmer can be “full stack” by having experience in each of these skills, they also have a programming “stack”. This refers to the programming languages that they feel comfortable working with within each of these categories. You may have heard of a programmer having a “MEAN” stack - this means they are familiar with MongoDB, Express.js, Angular, and Node.js. There is no one perfect stack to know, but if you are just getting started I would recommend looking a job posts for companies you are interested in working for and learning those programming languages initially.

The reality is that you should be constantly adding new skills to your arsenal, both frontend, backend and all the weird in between stuff (do you know about to set up mail forwarding for a domain? How are your bash scripting skills?).

What skills do you think “full stack” developers should be expected to have? Let us know! Or if you are ready to become a full stack developer check out Thinkful’s web developer bootcamp. We currently teach Node.js and React in our stack.