About Full-Stack Developer - The Versatile Developer
Most developers spend the majority of their careers professionalizing themselves in a certain area. As for Full-Stack Developer, they are knowledgeable from server, data, front-end to back-end, UI, UX, ... So whether they are technology geniuses in the whole team or not.
The Definition of Full-Stack Developer
Full-Stack is a combination of knowledge, visual and deep understanding of both front-end and back-end, as well as having a thorough understanding of best practices and concepts. Front-End is generally the component for the user to see and interact with, the Back-End is the part of the application with processing logic, database interaction, user authentication, server configuration.
Obviously, Full-Stack Developer is the person having the capability to work in both the front-end and the back-end of the product, concurrently code for all components of the system. It requires a large number of skills as well as experience.
In general, Full-Stack Developer is usually responsible for designing the interface and the database behind it until the product runs smoothly.
Although assuming responsibilities for both the front-end and the back-end of an application, a full stack developer will not be as good as a front-end expert in processing the front-end, this is similar to the back-end. However, they will have a broad understanding of many different components, how to interact between them in the development process and combine them into a complete product.
As a Full-Stack Web Developer, you don't necessarily have to do all the tasks that are delivered from the front-end to the back-end, but that means you can work on both front-end and back-end, understand what is happening when building an application.
The main tasks of a Full-Stack Developer
Set up the system environment to deploy the application.
Analyzing and designing databases through database management systems such as MySQL, SQLServer, writing data query script.
Must know to use one or more different programming languages such as PHP, C #, Java, ... for the purpose of writing web applications, web services, or Back-end.
Creating technical requirements and document instruction for customers.
Classification of the required key technologies from a Full-Stack Developer
Linux and basic scripting shell
Linux is ubiquitous in the Internet world, which is an operating system playing an important role in web development.
Cloud hosting: Amazon, Rackspace, etc.
In addition, a full-stack programmer should know about cloud hosting, Amazon / Rackspace or other providers and how its APIs work.
Background processing: Gearman, Redis
Search: Elasticsearch, Sphinx, Solr
Searching is integral to most sites - a web developer should know how to set up and use search servers like Sphinx or Elasticsearch.
Caching: Varnish, Memcached, APC / OpCache
Caching is also very important, Varnish, reverse proxy, Memcached and opcode caching. Full-Stack Developer needs to know what these technologies are and how to use them.
Web development tools
Version control: Git, Mercurial, SVN
Today, it would be unacceptable without using version control, even if you are a single developer. In there, Git is a version control system that allows developers to work on a group to keep track of all changes being made on the codebase. It is important to have some basic knowledge regarding Git, so that you understand how to recognize the latest code you missed, update parts of the code, fix bugs and change the code of others without infringe.
Virtualization: VirtualBox, Vagrant, Docker
With virtualization tools, having separate development environments for each basic project is really necessary, and easy to set up with at least using VirtualBox and Vagrant.
Besides, if you want to work with Vagrant you also need to know Ruby's basic syntax and shell script.
Web servers: Apache, Nginx
Programming languages: PHP, NodeJS, Ruby
Database: MySQL, MongoDB, Cassandra, Redis, SQL / JSON
HTML / HTML5: Semantic web
CSS / CSS3: LESS, SASS, Media Queries
Compatibility between browsers
AJAX, JSON, XML, WebSocket
Convert website design into Front-End code
Another category that deserves mention is mobile technology. It is a very dynamic industry and closely related to web development:
Hybrid: PhoneGap, Appcelerator
One of the biggest differences today is development on web and mobile devices, but the distance between them is narrowing rapidly.