There's a lot of debate all over the Internet about what a full stack developer is. What are the skills and experience you need to have in order to be a full stack developer?
We believe it's pretty simple.
A full stack developer is able to build and a deploy a database driven website or web-application in its entirety.
So, a full stack developer can:
- Code the front-end of a website
- Code the back-end of a website
- Deploy a website to a live URL
Let's explore those a bit.
1. Code the front-end of a website
We're talking HTML, CSS and JavaScript here. Stuff that runs in the browser.
There are levels of mastery of all of these things, but that's not really the point. You have junior developers, senior developers and a whole loads in between. But can you build the front-end of a website?
Complicating the issue is the move towards front-end frameworks such as AngularJS, Backbone, Ember and the rest. These raise the bar of front-end web development. Being able to stitch together jQuery borrowed from the web is no longer enough. In the world today, to be considered a good front-end developer you need to know at least one of these application frameworks.
2. Code the back-end of a website
Remember, we're talking a database driven site here. So we need some kind of database, and some kind of server-side programming language.
For the purposes of defining a full stack developer, it doesn't really matter which database or language, so long as you can do it. If you've done it in one language or database, you'll be able to do it in another if you need to. Albeit with a bit of learning.
However, complementing the new front-end frameworks are some server technologies of choice. There's Ruby on Rails of course, but all the cool kids these days are moving towards Node.js.
3. Deploy a website to a live URL
There's very little point developing a web application if it only exists on your local machine. So to be a full stack developer you need to be able to push your website to a publicly accessible URL.
Again, there are levels. At simple end of the scale you've got Platform as a Service (PaaS) providers such as Heroku or Nodejitsu. These guys do most of the hard work for you with the server, so all you have to do it push your code up and configure a couple of things in your account with them. It really can be that easy.
On the more complicated side of things you could choose to set up your own server, either a dedicated server or a VPS. With one of these you're heading into server admin area, dealing with things like firewalls, ports, routes, security and updates.
Differing levels and specialties
With each of the three requirements there is a full scale of competency and experience. You would expect a junior full stack developer to have experience of all three aspects, but not necessarily mastery of any. A middle-weight developer will generally be stronger in one area, whereas a senior full stack developer will be strong across all three aspects.
Of the three, mastery of deploying a website to production tends to come last, if at all. For many developers the process of deploying a website is something of chore. It's a necessity, but the craft and enjoyment of creation is in building the website. So naturally this is where developers tend to focus and spend time honing their skills.
Additional bonuses of experience
Our trio of requirements is really the core. As developers grow with experience you'd expect them to pick up other languages or frameworks, and gain knowledge of different systems and architectures. Perhaps knowledge of build tools and testing frameworks, understanding design patterns and different types of databases.
The scope for web developers these days is enormous. Nobody can know everything about every language, framework, system or setting. But to be a full stack developer, you need to have a core set of skills. In some ways specific languages and frameworks are less important than the transferable knowledge of how and why.