Full-stack developers are in demand. To be one you need to have a very wide technical profile.
And that’s the way it should be. A developer must be capable of handling any kind of task, be it back-end or front-end.
So here I present you, based on my experience, what you should know to become a good full-stack developer. Use it as a map, to guide your learning.
##Required Tools and Languages No matter what, every developer must know about:
- Basic command-line usage, in bash or powershell, for example
- Version control tools, like Git or Subversion (extra points if you have a Github or Bitbucket account)
- HTML
- CSS
- Jquery
- SQL
##Front-end Development It’s divided in five categories. Except for Tools (you really should know all of them), you can pick one option in every category (extra points if you know more than one):
####Javascript Frameworks
- Angular
- Backbone.js
- Ember.js
- Meteor
- React.js
####Testing Frameworks
- Karma
- Jasmine
- Mocha
- QUnit
####CSS Frameworks
- Bootstrap
- Foundation
- Skeleton
####CSS Preprocessors
- SASS
- Less
####Tools
- Yeoman
- Bower or Browserify
- Gulp or Grunt
##Back-end Development Again, pick your language and database (although is more common to know more than one database than knowing more than one language or framework within a language). For servers, I just stick to the basics, but you should also know an appropriate server for your language, for example, IIS for .NET.
####Server-Side Languages for Web Development
- Ruby (Ruby on Rails, Sinatra)
- Python (Django)
- PHP (Laravel, Symfony)
- Node.js (Express.js, Sails.js)
- Java (JSF, Spring MVC)
- Scala (Play)
- .NET (ASP.NET MVC)
####Databases
- MySQL
- PostgreSQL
- A NoSQL database (MongoDB, Cassandra, CouchDB, Redis)
- Oracle
- SQL Server
####Caching
- Memcache
- Redis
####Server
- Apache
- Nginx
##DevOps The power of the cloud, virtual machines, and continuous integration will make your job a lot easier. Pick at least two for the configuration management category.
####Platform as a Service (PaaS)
- Heroku
- AWS Elastic Beanstalk
- Azure
- Cloud Foundry
####Configuration Management
- Vagrant
- Docker
- Chef
- Puppet
- Ansible
####Continuous Integration
- Travis CI
- Jenkins/Hudson
- GitLab CI
- CruiseControl
##Architecture Sometimes, you’ll be in charge of designing the system. Be sure to stick to today’s best practices.
- RESTful Web Services
- Monolithic and Microservices architectures
- Model View Controller (MVC) Pattern
- Security (Authentication/Authorization mechanisms)
Wow, that’s a lot of things to know.
Do you need to be master in everything?
I don’t think so. Familiarity, good understanding, and some experience will be enough.
So make your choices and start learning now! You don’t even have to spend money on courses or bootcamps:
- You can find tons of tutorials on Youtube.
- You can find tons of code example on Github.
- You can watch programmers live coding on Livecoding.tv.
Resources are endless, you just need to dedicate one or two hours a day for one or two weeks to learn something new and/or making some small project.
Imagine all the things you’ll learn after six months.