Desenvolvedor full-stack. O que é?

Written on December 13, 2016

Ser um desenvolvedor full-stack não implica necessariamente ser um desenvolvedor experiente, ou um desenvolvedor web. Basta o programador ter conhecimento razoável em tecnologias client-side e server-side, de modo que se sinta confortável com ambas metodologias.

É comum a rotulação de tipos de desenvolvedores em back-end e front-end. O front-end é representado pela camada cliente, bem como o servidor representa o back-end. Os programadores que se intitulam front-end lidam com a camada de visualização da aplicação, já os desenvolvedores back-end são aqueles que desenvolvem o código da lógica de negócio da aplicação.

Ser full-stack significa atenuar a linha que separa os programadores dos administradores.

Abaixo uma imagem ilustrando as camadas de desenvolvimento.

Ambiente web

Assim, vamos caracterizar algumas das tecnologias utilizadas por um desenvolvedor full-stack hoje:

1. Sistemas Operacionais

Linux, este é de fato O Sistema no desenvolvimento web. Um desenvolvedor full-stack deveria saber também como um servidor cloud funciona, como Amazon, entre outros, e suas APIs.

2. Controle de versão e virtualização

Hoje, é inaceitável não usar controle de versão do código, mesmo sendo um lobo solitário. Como exemplo temos: GIT, Mercurial e SVN. Com a virtualização podemos criar facilmente ambientes de desenvolvimento, customizados e independentes, com Vagrant e VirtualBox. Desapegue do LAMP/XAMPP e suas variantes.

3. Tecnologias back-end

Um desenvolvedor full-stack deveria saber como instalar e configurar, no mínimo, um servidor Apache. Em relação às linguagens o foco não deve ser conhecer todas com total maestria, escolha uma e aprofunde-se. Como base, deixo um gráfico das top 10 em julho 2016 (fonte: google).

Top 10 linguagens

Além da informação do ranking, temos quais os tipos de plataformas suportados por cada linguagem de programação (ver campo type) sendo que neste momento o C lidera em todas as plataformas (Web, Mobile, Enterprise, Embedded).

Bancos de dados relacionais (MySQL, PostgreSQL) e não-relacionais (MongoDB, Redis) são termos que um desenvolvedor full-stack deveria saber as diferenças, bem como a sintaxe JSON.

4. Tecnologias front-end

  • HTML, CSS, JavaScript
  • Design responsivo
  • UX / UI

Agora a parte divertida, um desenvolvedor full-stack deve entender dessas tecnologias e conceitos, como um design responsivo funciona, e conhecer também também alguns frameworks (LESS, SASS, Angular, Ember, etc). Novamente, não necessariamente saber tudo de todos os frameworks, mas conhecer os mais populares, por conta da comunidade (suporte) e mercado, e se aprofundar no que mais convem.

5. Tecnologias Móveis

  • iOS
  • Android
  • Frameworks de desenvolvimento híbrido (Ionic, PhoneGap, etc)

Não menos importante temos as tecnologias móveis, que é uma indústria dinâmica e fortemente relacionada com desenvolvimento web. É bom conhecer sobre essas tecnologias também.

Então, qual a vantagem?

Sendo um desenvolvedor full-stack você tem a mente aberta para novas tecnologias, tem a compreensão de como uma aplicação web é feita desde o design até o produto final. Não significa que você deve ser fluente em todas possíveis e imagináveis tecnologias que há, não, pra isso existe a especialização. É mais sobre ter o entendimento de cada área e como elas se comunicam e tomar uma decisão importante quando necessário. Ser full-stack significa atenuar a linha que separa os programadores dos administradores.