O Full-Stack é o profissional que atua em todas as camadas do desenvolvimento de software, passando por planejamento, layout e programação.
Para ser mais específico, é o desenvolvedor que consegue trabalhar com um banco de dados, uma linguagem de programação como Ruby ou PHP, JavasScript e tudo que está no meio disso, inclusive desenhar o layout de uma aplicação em um programa como o Photoshop.
O Full-Stack não é um especialista em cada uma dessas áreas, até porque isso é praticamente impossível, porém ele é um profissional que tem pleno conhecimento em cada uma delas, fazendo disso o seu diferencial.
Confira alguns exemplos de tecnologias e tarefas em cada camada do Full-Stack:
Servidor
Apache e Ngnix;
Banco de Dados
Mysql e MongoDB;
Linguagem de Programação
Ruby, PHP e Python;
Front-End (UI)
HTML, CSS, JavaScript, Angular e React;
Experiência do Usuário (UX)
Wireframes, Personas e Fluxo do Usuário;
Design de Layout
Teoria das cores, Tipografia e programas de edição (Photoshop);
Gerência de Projetos
Planejamento, Métodos Ágeis (XP e Scrum), relacionamento e entendimento do que o cliente precisa;
O objetivo de um profissional Full-Stack é ser o mais completo possível, ganhando assim a capacidade de planejar e desenvolver um projeto de ponta a ponta.