The dynamic nature of the whole industry makes requirements shift often to the most popular and “next best thing” tools and programming languages.
What does a full-stack developer mean?
The term full-stack means developers who are comfortable working with both back-end and front-end technologies.
A full-stack developer doesn’t need to master all of the areas and technologies he needs to work it, because that just makes it nearly impossible, he just needs to be comfortable working with those technologies, and that’s a lot too.
- Linux and basic shell scripting
- Cloud computing: Amazon, Rackspace, etc.
- Background processing: Gearman, Redis
- Search: Elasticsearch, Sphinx, Solr
- Caching: Varnish, Memcached, APC / OpCache
- Monitoring: Nagios
Web development tools:
- Version control: Git, Mercurial, SVN
- Virtualization: VirtualBox, Vagrant, Docker
- Web servers: Apache, Nginx
- Programming language: PHP, NodeJS, Ruby
- Database: MySQL, MongoDB, Cassandra, Redis, SQL / JSON in general
Apache and Nginx are the norm for web development. A full-stack developer should know how to set up these applications and serve the contents of his website.
PHP is what needs to be mastered on a high level, NodeJS, Ruby is nice to know as well.
In addition to web server and programming languages, database management is also a requirement for a full-stack developer which in itself is another beast.
Relational (such as MySQL, PostgreSQL) vs non-relational databases (like MongoDB, Redis or Cassandra) are differences the full-stack developer needs to know, along with knowing the syntax of XML / JSON.
- HTML / HTML5: Semantic web
- CSS / CSS3: LESS, SASS, Media Queries
- Compatibility quirks across browsers
- Responsive design
- AJAX, JSON, XML, WebSocket
- Converting website design into front-end code
For example if you want to set up Vagrant you need to know Ruby’s syntax, as simplified as it is or if you want to manipulate DOM elements, jQuery is a good to know technology.