Full Stack: o que é, o que faz e um Guia desta Profissão

Full Stack: o que é, o que faz e um Guia desta Profissão
Emerson Laranja, Gabrielle Ribeiro Gomes
Emerson Laranja, Gabrielle Ribeiro Gomes

Compartilhe

Introdução

Imagine ser capaz de criar uma aplicação web completa do início ao fim, incluindo a interface do usuário, a lógica do lado do servidor e a integração com banco de dados. Parece impossível? Não para devs full stack.

Estas pessoas profissionais possuem habilidades em várias áreas do desenvolvimento de software e são altamente valorizadas no mercado, muito por sua visão ampla sobre todas as etapas do desenvolvimento (front-end, back-end, devops, banco de dados e mobile).

Nesse artigo, você vai conhecer as habilidades necessárias para se tornar uma pessoa desenvolvedora full stack e as etapas para construir uma carreira nessa área. Além disso, serão discutidas as vantagens e desvantagens de atuar como dev full stack, atendendo a alta demanda do mercado.

Bora lá?

Banner promocional da Semana Carreira Tech, organizada pela Alura e FIAP. Texto: 'Descubra como graduações tech estão transformando o futuro. Cinco lives gratuitas para você mergulhar nas áreas mais transformadoras da atualidade, desde o que se estuda nas graduações até a prática do mercado. Garanta sua vaga de 01 a 05 de julho.' Imagem de profissionais usando equipamentos tecnológicos avançados, como óculos de realidade aumentada. Botão destacado com a chamada 'Garanta sua vaga'. Logotipos da Alura e FIAP no canto superior direito.

O que é Full Stack?

Na área de desenvolvimento de software, o termo “full stack” é utilizado para designar pessoas desenvolvedoras capazes de lidar com todo o ciclo de vida do desenvolvimento de uma aplicação. Desse modo, dev full stack é uma pessoa com o perfil multidisciplinar, que possui habilidades para atuar em diferentes partes de um projeto.

É comum acreditar que devs full stack dominam o desenvolvimento front-end, back-end e criação de banco de dados, o que está correto. Porém, o conhecimento de um full stack não se limita a isso. Com os frequentes avanços nas tecnologias, é cada vez mais comum que devs full stack conheçam sobre outras áreas que vão além do desenvolvimento em si, como:

  • Coleta e análise de requisitos;
  • Modelagem, implementação e gerenciamento do banco de dados; e
  • Até mesmo a configuração de servidores e o deploy de uma aplicação.

É importante destacar que devs full stack também podem trabalhar com o desenvolvimento de aplicativos móveis, utilizando tecnologias como o React Native e o Flutter, que permitem a criação de aplicativos para diferentes plataformas a partir de um único código base.

Para se aprofundar no assunto, deixamos como recomendação um episódio da minissérie Alura.MD do canal Código Fonte TV no Youtube, em que o CEO e fundador da Alura Paulo Silveira traz uma explicação detalhada sobre o que é ser dev full stack.

AGORA SIM você vai entender o que é DEV FULL STACK!

Recomendamos também um episódio sobre desenvolvedor full stack do nosso podcast Hipsters Ponto Tech:

Desenvolvedor Full Stack - Hipsters Ponto Tech #182

Ouvir um pouco de:
Desenvolvedor Full Stack – Hipsters Ponto Tech #182

Agora que você entendeu o que define um dev full stack, e os mitos que existem em torno dessa profissão, vamos mergulhar na história desse termo.

Qual a origem do termo Full Stack?

No início da década de 90, período dos primórdios da internet, as páginas web eram bem mais simples. Elas eram compostas por HTML, CSS e um pouco de JavaScript. Dessa forma, havia uma função capaz de lidar com todas as demandas referentes ao desenvolvimento web, a função de webmaster. Não havia uma distinção entre dev front-end e dev back-end, sendo assim, uma pessoa desenvolvedora web cuidava de todas as partes do desenvolvimento.

Gif mostrando a interface do site da Intel na década de 90, utilizando o navegador mais popular da época, o Netscape.

Fonte: Wayback Machine

Com o passar dos anos, novas tecnologias foram surgindo e a web foi se desenvolvendo. Apareceram assim, no início dos anos 2000, os primeiros frameworks voltados ao desenvolvimento front-end como, por exemplo, o jQuery, o Ember.JS e o Backbone.JS. Eles foram precursores dos frameworks modernos de front-end, como o React, Vue e Angular.

Assim, nasce uma preocupação em desenvolvedores para aprimorar o front-end. Já não era mais aceitável páginas web tão simples, e era esperado que essas aplicações tivessem a mesma qualidade que as aplicações desktop. Se fazia necessário o uso de ferramentas mais robustas para a construção do front-end de páginas na web.

Com esse aumento de complexidade, surge uma diferenciação entre front-end (responsável pela montagem da tela e captura das interações dos usuários) e back-end (responsável por processar as informações coletadas). Dada essa divisão, se especializar somente em uma das duas áreas se tornou uma tarefa demorada. Apesar dessa especialização em áreas, ainda existiam profissionais capazes de lidar com todas essas etapas de desenvolvimento.

Dessa forma, ainda por volta dos anos 2000, surge o termo “Full Stack” para denominar as pessoas desenvolvedoras que tinham habilidades de trabalhar tanto com o front-end quanto com o back-end de aplicações web.

O que é ser uma pessoa desenvolvedora?

Até aqui você conheceu um pouco sobre a origem do full stack, mas antes de nos aprofundarmos mais nesse assunto, vamos tentar compreender melhor o que, de fato, faz uma pessoa desenvolvedora atualmente no mercado de tecnologia.

A pessoa desenvolvedora é responsável pela criação, manutenção e melhoria de sistemas e aplicações. Geralmente, trabalha em equipe com profissionais como analistas de sistemas, designers e gerentes de projetos, para desenvolver soluções que atendam às necessidades de clientes finais.

Algo que pode gerar dúvidas é a diferença entre dev e um analista de sistemas. Afinal qual a diferença? Enquanto o foco do trabalho como dev é principalmente código, o de analista de sistemas envolve mais a compreensão do negócio, para descrever requisitos e especificações técnicas do projeto.

Em resumo, uma pessoa desenvolvedora é alguém que resolve problemas através de códigos, criando aplicações web ou mobile, jogos, programas desktop, ou outros softwares.

Para iniciar na carreira de desenvolvimento de softwares é necessário adquirir algumas habilidades técnicas, confira a seguir:

  1. Dominar Lógica de programação e algoritmos;
  2. Entender sobre as linguagens de programação e suas especificidades como, por exemplo, as diferenças entre tipagens estáticas e dinâmicas;
  3. Conhecer diferentes paradigmas de programação como, por exemplo, a programação orientada a objetos e a programação funcional;
  4. Conhecer sobre Sistemas Operacionais;
  5. Entender de arquitetura de software.

Além desses conhecimentos, existem vários outros assuntos que vão te ajudar na carreira de dev. Nessa profissão o aprendizado deve ser constante. Assim, esse vídeo da Alura traz dicas de livros que podem ser úteis para melhorar suas habilidades com programação:

Desenvolvimento front-end, back-end, mobile

Bom, agora que já entendemos melhor o que é ser uma pessoa desenvolvedora, vamos apresentar cada área de desenvolvimento — front, back e mobile — e também mencionar outras áreas relacionadas como banco de dados e devops. Afinal, toda pessoa desenvolvedora, independente de ser dev front-end, back-end ou full stack, precisa pelo menos, conhecer essas áreas e entender de forma geral como elas funcionam.

Confira a imagem a seguir, com um breve spoiler de todas essas áreas e tecnologias relacionadas a elas, para começar a investir na sua carreira de full stack!

Há no topo o título “áreas de conhecimento para devs full stack”, abaixo do título estão todas as áreas: front-end, back-end, banco de dados, devops, mobile. Abaixo de cada área há ícones de tecnologias relacionadas. Front-end: JavaScript, HTML e CSS. Back-end: PHP, Python e Ruby. Banco de dados: MySQL, Postgresql, MongoDB. Devops: AWS Web Services, Gitlab, CI/CD. Mobile: Android, Kotlin e Swift.

Confira a seguir com mais detalhes:

  1. Desenvolvimento front-end;
  2. Desenvolvimento back-end;
  3. Back-end e DBA (Database Administrator ou Administrador de Banco de Dados);
  4. Tecnologias importantes para front-end e back-end;
  5. Front-end vs Back-end; e
  6. Desenvolvimento mobile.

1) Desenvolvimento front-end

O desenvolvimento front-end é responsável por tudo o que é visível ao usuário em uma aplicação. Nesse sentido, é a parte do desenvolvimento que cuida do design e da interação do usuário com a aplicação. Isso inclui a criação de interfaces de usuário, utilizando principalmente HTML, CSS e JavaScript e seus diversos frameworks. E cada uma dessas tecnologias possui um papel essencial para criação de uma página:

  • HTML: para criar a estrutura da sua página, inserindo títulos, imagens, parágrafos, vídeos e outras estruturas que você pode conferir na documentação oficial do MDN;

  • CSS: para dar cores, definir tamanhos, mudar posicionamento, criar animações e muito mais. Você pode entender melhor como o CSS funciona na documentação oficial também do MDN.

As documentações de ambos são extensas e devs front-end não precisam decorar cada uma das estruturas e propriedades do HTML e CSS, mas sim possuir prática e saber como utilizar estas ferramentas para encontrar soluções para os problemas do dia a dia.

Então uma excelente forma de aprender estes conceitos é praticando! Para isso, aqui na Alura temos uma formação a partir do zero usando HTML e CSS de forma prática para construir páginas web.

  • O JavaScript, diferente do HTML e CSS, é uma linguagem de programação utilizada para deixar a página interativa, podendo atualizar elementos dinamicamente.
Há três imagens de uma torre com um catavento. A primeira é uma imagem estática, apenas com o contorno na cor azul da torre com catavento e referente a ela temos escrito “HTML - estrutura”. Na segunda imagem, também estática, a torre com o catavento aparece estilizada com diferentes cores (tons de azul e verde) de preenchimento e referente a ela temos escrito “CSS - apresentação/aparência". Na última imagem temos a torre já colorida com o catavento animado girando no sentido horário e referente a ela está escrito “JavaScript - dinamismo/ação”.

Pensando em agilidade, modularizar funcionalidades e outras vantagens, devs normalmente optam por usar frameworks e bibliotecas, sendo as principais usadas atualmente:

  • Angular: um framework de código-fonte aberto desenvolvido pelo Google, usando TypeScript;

  • Vue.js: é um framework JavaScript de código aberto, focado no desenvolvimento de interfaces de usuário e single page applications (SPAs), ou aplicativos de página única;

  • React: é uma biblioteca front-end JavaScript de código aberto, desenvolvido pelo Facebook, com foco em criar interfaces de usuário em páginas web;

  • Next.js: é um framework de desenvolvimento front-end baseada em React, de código aberto, criada pela Vercel.

Também é importante que a pessoa front-end possua alguns conhecimentos sobre UX Design. Essa área aborda técnicas para garantir que a interação do usuário com a interface seja intuitiva, fácil de usar e agradável. Nesse sentido, a pessoa UX designer conduz pesquisas com usuários, cria wireframes e protótipos, realiza testes de usabilidade e colabora com outras equipes de design e desenvolvimento para criar produtos eficazes e satisfatórios para os usuários finais.

É essencial que a pessoa desenvolvedora front-end tenha conhecimento do que se trata cada um desses processos, até mesmo pensando que, em alguns casos, é comum vermos devs front-end realizando essas tarefas.

O que faz uma desenvolvedora front-end? #HipstersPontoTube

2) Desenvolvimento back-end

O desenvolvimento back-end é responsável pela implementação das regras de negócios, processando os dados e as informações enviadas pelos usuários e gerenciando todo o fluxo de informações no aplicativo.

Para isso, é comum devs back-end usarem de uma ou mais linguagens de programação, dependendo da complexidade do projeto ou até mesmo do nível de experiência da pessoa. Algumas dessas linguagens comuns no back-end são Java, Python, Ruby, PHP, JavaScript e C#.

Assim como no front-end, existem frameworks que facilitam o desenvolvimento back-end, como:

  • Spring que usa a linguagem Java;
  • Laravel que usa PHP;
  • .Net que usa C# e também outras linguagens;
  • Nest que usa o JavaScript.

Além da pessoa desenvolvedora back-end, vale ressaltar que existe uma profissão essencial no desenvolvimento de sistemas, que por muitas vezes acaba sendo confundida com o desenvolvimento back-end, que é Administrador de Banco de Dados, também chamado por sua sigla em inglês, DBA (Database Administrator).

3) Back-end e DBA (Database Administrator ou Administrador de Banco de Dados)

Enquanto devs back-end são responsáveis por implementar as regras de negócio, processar dados e gerenciar o fluxo de informações nos aplicativos, DBAs são responsáveis pela gestão, manutenção e otimização dos sistemas de bancos de dados, desempenhando um papel fundamental no armazenamento e processamento eficiente de grandes volumes de dados.

É como ter uma pessoa para lidar com as configurações, atualizações do banco e outros aspectos ligados à administração do bom funcionamento desse banco (DBA) e outra pessoa que irá interagir e manipular esses dados para que atenda às exigências do sistema (dev back-end).

Porém, em muitas empresas esses papéis se fundem e por isso é bem comum que devs back-end assumam as atribuições de DBAs.

Outro ponto fundamental para o back-end é a modelagem de banco de dados. Através dela, é possível criar um modelo que represente da forma mais eficiente possível as informações que serão armazenadas no sistema, definindo os campos que serão armazenados no banco de dados, seja ele um banco SQL, como o Postgres, onde armazenamos as informações em tabelas, ou seja, em um banco NoSQL (Não Somente SQL) onde as informações não estão necessariamente em tabelas de relacionamento, como o MongoDB que armazena dados em documentos flexíveis, que podem ter uma estrutura semelhante a JSON, uma estrutura de chave-valor para transmitir informações, por exemplo:

{
    “nome”:”Alura”
    “nota”:”10” 
}

Existem várias técnicas e ferramentas para fazermos modelagem de dados, como diagrama de caso de uso, diagrama de entidade-relacionamento e o diagrama exibido na figura abaixo, que se trata de um diagrama de classe:

Há um esquema que inicia com um retângulo chamado “Banco” e nele há, de cima para baixo, as informações: +codigo, +endereco, +gerencia(), mantem(). Da caixa “Banco” saem duas setas: uma indicando que “possui” que aponta para o retângulo chamado “Cliente” e a outra seta indicando que “mantém” apontando para o retângulo  “CaixaEletrônico”. No retângulo “CaixaEletronico” há, de cima para baixo, as informações: +localizacao, +gerente, +identifica(), +transacoes(). Já o retângulo “Cliente” possui, de cima para baixo, as informações +nome, +endereco, +pertence() e dela saem duas setas indicando que “pertence”, uma mais a esquerda e outra a direita. A seta “pertence” da esquerda aponta para o retângulo chamado “Conta” que contém as seguintes informações: +tipo, +dono, +verificarSaldo(). Já a seta  “pertence” da direita aponta para o retângulo chamado “CartaoDebito” que contém as seguintes informações: +numeroCartao, +proprietario, +acesso().

Cada retângulo possui um nome, referindo-se a classe (por exemplo, Banco), logo abaixo temos informações sobre os atributos que compõem essa classe e os métodos que esta classe pode executar, por exemplo, a classe Conta possui o atributo tipo, para informar se é uma conta corrente ou não, e o atributo dono para dizer que é o dono dessa conta. Possui também um método verificaSaldo(), uma função que retorna o saldo de uma dada conta.

Além disso, as linhas indicam como essas classes se relacionam, por exemplo, entre as classes cliente e conta, existe uma linha com o nome “possui”, indicando que um cliente possui uma ou mais contas.

Além da modelagem, devs back-end usam linguagens de manipulação de dados, como o SQL, que é extremamente conhecido e usado para consultar, alterar e outras ações na maioria dos bancos SQL.

E pensando em banco NoSQL, a linguagem de programação usada para trabalhar com esses bancos de dados pode variar dependendo do tipo de banco de dados NoSQL:

  • MongoDB: A linguagem usada para trabalhar com o MongoDB é o MongoDB Query Language (MQL). Ele é semelhante à sintaxe do JSON e é usado para consultar, inserir, atualizar e excluir dados do banco de dados MongoDB;

  • Cassandra: O Apache Cassandra é uma plataforma de banco de dados distribuída NoSQL. A linguagem usada para trabalhar com o Cassandra é a Cassandra Query Language (CQL). Ele é semelhante à sintaxe do SQL e é usado para consultar e gerenciar dados no banco de dados Cassandra.

4) Tecnologias importantes para front-end e back-end

Sabemos que existem tecnologias que facilitam a vida de devs para construir o front-end e o back-end usando uma mesma linguagem, nesse sentido, para manipulação de banco de dados, surgem soluções como ORM’s (Object-Relational Mapping, em português, Mapeamento Objeto-Relacional) e ODM’s (Object-Document Mapping, em português, Mapeamento Objeto-Documento), de forma resumida, esse termo “mapeamento” é muito utilizado na programação para indicar é o processo de converter dados de uma estrutura para outra estrutura, no caso, você pode escrever suas consultas usando uma linguagem de programação como o TypeScript e o ORM responsável, por exemplo, Sequelize, irá mapear para a estrutura que o seu banco de dados entenda, tirando essa preocupação da pessoa que desenvolve.

Outra parte importante são as APIs (Application Programming Interfaces), em português, Interfaces de Programação de Aplicação. Elas são interfaces que permitem que diferentes sistemas possam se comunicar entre si, trocando informações e dados em tempo real. As APIs são amplamente utilizadas em aplicações web e mobile para integrar diferentes sistemas e serviços.

Caso queira entender mais sobre APIs e como se diferenciam de conceitos como biblioteca e framework, temos um vídeo especial sobre o assunto:

Além disso, devs back-end geralmente trabalham em conjunto com profissionais de DevOps para criar e gerenciar a infraestrutura de servidores. Essa área também é muito importante pois é com ela que garantimos que os sistemas estejam sempre disponíveis e funcionando corretamente.

E para saber mais: O que faz uma desenvolvedora Back-end? com Juliana Amoasei

5) Front-end vs Back-end

Front-end e back-end são termos muito utilizados na área de desenvolvimento de software, e podem causar confusão em quem não tem familiaridade com esses conceitos. Para entender a diferença entre front-end e back-end, podemos fazer uma analogia com a construção de uma casa.

O front-end é como a fachada da casa, sendo a primeira impressão que as pessoas têm ao chegar. Ele é responsável pela apresentação visual do sistema, ou seja, pelo que o usuário vê e interage. Isso inclui elementos como layout, cores, imagens e animações.

Já o back-end é como a estrutura da casa, responsável por dar suporte e manter o funcionamento do sistema. Ele é responsável pela parte lógica do sistema, isso inclui elementos como armazenamento de dados, segurança e processamento de informações.

Pensando em outro exemplo, é como se o back-end fosse tudo que acontece "por trás das câmeras" na gravação de um filme e o front-end o resultado final das gravações, ou seja, tudo que temos acesso quando vamos assistir um filme.

O gif está dividido em duas partes apresentando uma mesma cena de um filme em plano sequência, onde uma mulher coloca um jarro de flores em cima de uma mesa (que fica de frente a uma janela), depois a mulher sai de cena e câmera muda de ângulo apontando para uma televisão. Na parte de cima do gif mostra os bastidores de gravação dessa cena que representa o “Back-end”. Já a parte de baixo mostra essa cena gravada e finalizada como os espectadores finais devem assistir no cinema, representando o “Front-end”.

Ambas as áreas estão relacionadas e são igualmente importantes no desenvolvimento de um software. Enquanto o front-end cuida da experiência do usuário e da interface com o usuário, o back-end cuida da lógica do sistema e do processamento de dados.

Diferença entre Back-End e Front-End com Mario Souto | #HipstersPontoTube

Para saber mais sobre a diferença entre essas duas áreas essenciais no desenvolvimento de um software, confira o artigo da Alura "O que é Front-End e Back-End".

6) Desenvolvimento mobile

A pessoa desenvolvedora mobile é responsável por criar aplicativos para dispositivos móveis, como smartphones e tablets. Suas atribuições incluem a criação da interface do aplicativo, a implementação de funcionalidades específicas para dispositivos móveis, como a utilização de sensores, GPS e notificações push, e a integração com APIs de serviços externos, como redes sociais e serviços de pagamento.

Além disso, devs mobile são responsáveis pela criação de uma experiência do usuário (UX) agradável e intuitiva, garantindo que o aplicativo seja fácil de usar e acessível para os usuários.

As tecnologias utilizadas por devs mobile variam conforme o sistema operacional do dispositivo. Para o iOS, utilizam principalmente Swift e Objective-C, enquanto para o Android, Java e Kotlin são as linguagens mais utilizadas.

Além disso, devs mobile também utilizam ferramentas específicas para o desenvolvimento de aplicativos que facilitam o processo, como o Xcode para o iOS e o Android Studio para o Android.

O que é uma stack?

Em programação, uma stack é um conjunto de tecnologias que são utilizadas na criação de aplicações.

Em português, a palavra stack significa “pilha”. Assim como uma pilha possui diversas camadas de algo, uma stack tecnológica é formada por diferentes camadas de tecnologias, abrangendo:

  • Linguagens de programação;
  • Bibliotecas;
  • Frameworks;
  • Bancos de dados;
  • Sistemas operacionais;
  • Ferramentas de desenvolvimento, etc.

Dessa forma, o back-end utiliza algumas stacks para seu desenvolvimento, bem como o front-end. É importante conhecer o propósito de cada tecnologia, para que seja possível escolher a melhor combinação entre elas de acordo com o seu objetivo.

A tradução literal do termo full stack para o português é “pilha completa”, assim devs full stack são pessoas que têm conhecimento nas duas “pilhas” de tecnologias: front-end e back-end. Agora o termo full stack faz mais sentido, não é mesmo?

Todas essas definições podem trazer um questionamento: será que devs full stack precisam ter conhecimento em todas as tecnologias?

Devs Full Stack precisam conhecer todas as tecnologias?

A resposta para essa pergunta é não! Devs Full Stack não precisam conhecer todas as tecnologias. Seria irrealista esperar que uma pessoa saiba todas as tecnologias. O conhecimento full stack normalmente engloba um arcabouço de ferramentas para desenvolver o front-end, back-end e o banco de dados de uma aplicação, ou seja, stacks específicas para cada parte do desenvolvimento.

Principais stacks utilizadas por devs full stacks

Existem stacks comumente utilizadas por devs full stack. Algumas delas são:

  1. MEAN;
  2. MERN;
  3. Ruby on Rails;
  4. LAMP;
  5. .NET;
  6. Django;
  7. Flask.

1) MEAN

É uma abreviação de MongoDB + Express + Angular + Node.js. Essa é uma das stacks mais populares, principalmente no desenvolvimento de aplicações web escaláveis. Ela é formada pelo MongoDB, para a parte de banco de dados; O framework de desenvolvimento web Express para o back-end; e o Angular para o front-end.

2) MERN

É a abreviação de MongoDB + Express + React + Node.js. Também é uma stack bastante utilizada. Ela é bem semelhante a MEAN, tendo como diferença o uso da biblioteca React ao invés do Angular, para o front-end.

3) Ruby on Rails

Essa stack contempla a linguagem de programação Ruby e o framework Rails. A linguagem Ruby tem a característica interessante de cobrir o desenvolvimento tanto no front-end, quanto no back-end. É uma stack bastante popular, principalmente em startups.

4) LAMP

É uma stack formada pelo sistema operacional Linux, o servidor web Apache, o banco de dados MySQL e a linguagem de programação PHP. Tem um uso comum no desenvolvimento de aplicações comerciais.

5) .NET

Essa stack, que é bastante usada para o desenvolvimento de aplicações web corporativas, é composta pelo sistema operacional Windows, a linguagem de programação C#, o framework .Net e o banco de dados Microsoft SQL Server.

6) Django

Nessa stack é utilizada a linguagem de programação Python e o framework Django. Esse framework possui um ORM (Object-Relational Mapping) que permite a interação com um banco de dados. Além disso, o próprio Django dispõe de bibliotecas para o front-end como, por exemplo, o Django Forms e o Django Templates. É muito utilizado para aplicações web de grande porte.

7) Flask

Essa stack é composta pela linguagem de programação Python e o microframework Flask. Juntamente com o Flask, podem ser utilizados frameworks para o desenvolvimento front-end como o Vue.js ou React. Normalmente essa stack é utilizada para desenvolver aplicações web mais simples.

Como pudemos ver, são muitas opções. Mas essas não são as únicas. Existem várias outras stacks que combinam tecnologias front-end e back-end.

Desse modo, devs full stack normalmente se especializam em uma dessas stacks. Agora, você pode estar se perguntando: qual stack devo aprender? Qual a melhor entre elas?

Qual a melhor área de programação?

Depois de conhecer as principais stacks para o desenvolvimento full stack, é normal se perguntar: e agora? Qual a melhor área de programação? Qual caminho devo seguir?

Não existe uma área de programação que seja a melhor, pois isso é um fator individual. A melhor área vai depender dos seus gostos, habilidades e interesses.

As demandas e necessidades do mercado podem servir de guia para nos orientar sobre quais áreas estão em alta. Mas é importante lembrar que até isso depende do momento. Assim,o ideal é se atualizar sempre sobre as principais tendências do mercado, para que seja possível alinhar isso com os seus objetivos particulares de carreira.

Você pode estar se perguntando quais são as stacks mais buscadas pelo mercado de software atualmente. Então vamos aos dados.

Quais as stacks mais buscadas?

Todos os anos são feitas pesquisas com o intuito de entender melhor a situação do mercado de tecnologia. Entre essas pesquisas, uma bem relevante é a feita pelo Stack Overflow, que nos traz uma visão sobre quais linguagens e ferramentas estão sendo mais utilizadas, bem como os anseios de quem trabalha na área.

Segundo a pesquisa feita pelo Stack Overflow em 2022 que contou com mais de 70 mil participantes, as cinco linguagens mais populares entre devs profissionais atualmente são: JavaScript, HTML/CSS, SQL, Python e TypeScript. Como pode ser visto na imagem a seguir:

Gráfico mostra cinco linguagens diferentes e as suas porcentagens (da maior para menor): JavaScript com 67.9%, HTML/CSS com 54,93%, SQL com 52,64%, Python com 43,51% e TypeScript com 40,08%.

Já as dez ferramentas mais utilizadas são: Node.js, React.js, jQuery, Express, Angular, ASP.NET Core, Vue.js, ASP.NET, Next.js e Django. Como mostra a imagem abaixo:

Gráfico mostra dez ferramentas da tecnologia diferentes e as suas porcentagens (da maior para menor): Node.js com 46,31%, React.js com 44,31%, jQuery com 29,21%, Express com 23,19%, Angular com 23,06%, ASP.NET Core com 20,71%, Vue.js com 19,9%, ASP.NET com 16,15%, Next.js com 13,59% e Django com 13,59%.

Dessa forma, podemos ver que as stacks citadas anteriormente são de fato interessantes para o mercado, já que boa parte de suas linguagens de programação e frameworks são atualmente bastante utilizados.

É importante lembrar que as tecnologias estão sempre evoluindo e se modificando, o que faz com que as demandas do mercado se alterem ao longo dos anos. Assim, o que é popular hoje pode não ser mais daqui a algum tempo.

O que não é full stack

Até então, vimos algumas das atribuições de uma pessoa dev full stack. Essa é uma profissão que requer habilidades em diversas áreas, mas também há algumas expectativas erradas sobre o que ela envolve:

  • Dev full stack não é especialista em todas as tecnologias: É impossível ser expert em tudo, então devs full stack geralmente têm habilidades em várias áreas, mas não são especialistas em cada uma delas;

  • Dev full stack não é "faz-tudo": Embora seja verdade que a pessoa full stack trabalha em todas as camadas de um aplicativo ou sistema, isso não significa que é responsável por tudo. Elas ainda precisam trabalhar em equipe com outras pessoas para criar um produto de alta qualidade;

  • Dev full stack não é iniciante: Para se tornar full stack é preciso ter experiência em programação e conhecimento em várias tecnologias. Não é algo que se possa aprender da noite para o dia.

Full stack e full cycle: principais diferenças

Ainda sobre o que não é um full stack, vemos um termo cada vez mais comum na área de tecnologia: full cycle.

Como full cycle, o trabalho vai além de escrever código. É necessário trabalhar em equipe com outras áreas, como design, UX, testes, infraestrutura e gerenciamento de projetos, para garantir que o produto seja entregue conforme as expectativas.

Devs full cycle também são responsáveis pela implementação, teste, monitoramento e manutenção do produto. Eles precisam garantir que o produto esteja funcionando corretamente e atendendo às necessidades dos usuários ao longo do tempo.

Embora compartilhe algumas habilidades com devs full stack, o seu papel é mais amplo e requer uma compreensão mais profunda do negócio e do processo de desenvolvimento.

Para entender mais do surgimento desse termo, mais detalhes sobre suas diferenças e como profissionais full cycle atendem às necessidades das principais empresas da atualidade, como a Netflix, confira o artigo Dev Full Cycle: o que é?

Também deixamos como recomendação o Alura Mais Dev Full Cycle vs Dev Full Stack que traz uma comparação entre esses dois perfis profissionais:

Como é o dia a dia como full stack?

Já podemos imaginar que a rotina diária de devs full stack seja repleta de desafios. O ambiente em que se inserem, bem como os projetos em que se envolvem vão ditar os detalhes desse dia a dia.

Entretanto, existem algumas tarefas que vão ser comuns na rotina de cada full stack, como a implementação de códigos para o back-end e front-end, a solução de problemas, o trabalho colaborativo com outros times e devs, e acima de tudo o aprendizado contínuo.

Esse dia a dia não inclui só programação. Muitas vezes o desenvolvimento de projetos pode exigir de devs full stack outros tipos de habilidade, como as relacionadas a UX ou metodologias de gestão de projetos.

Trouxemos o relato do Vinny Neves, que atualmente é engenheiro de software sênior e instrutor aqui na Alura na Escola de Front-end. Vinny trabalhou muitos anos como dev full stack. Vamos conferir:

"Acho que podemos começar falando que nenhuma pessoa se transforma em full stack do nada.

Muito provavelmente ela se especializou em back ou em front-end e depois expandiu o shape do T para o outro lado. Hoje em dia sou especialista em front-end, mas consigo trabalhar com back-end confortavelmente. No decorrer da minha carreira eu acabei oscilando entre os dois lados.

Hoje em dia, mesmo que eu não atue diretamente no back-end, eu consigo conversar numa mesma linguagem com pessoas que vão desenvolver APIs do lado do servidor. Então, o meu dia a dia de dev full stack consiste em transformar telas do figma em aplicações ricas e levar os dados imputados pelo usuário, passando por APIs e chegando onde serão, de fato, armazenados no banco de dados."

Podemos perceber que a rotina full stack passa pelas diferentes etapas do desenvolvimento de uma aplicação. Assim, são pessoas com um perfil multidisciplinar, que encaram todos os dias desafios nas diversas frentes de construção de um software.

Esse relato do Vinny Neves nos traz outra reflexão: como o full stack está relacionado com o dev em T? Bem, a seguir vamos entender melhor isso!

Relação entre Full Stack e Dev em T

É muito comum ouvirmos de devs full stacks que começaram programando apenas em back-end ou front-end, e depois foram se especializando em outra área.

Isso tem muito a ver com o conceito de Dev em T (ilustrado na imagem abaixo), pois o perfil “Dev em T” é de alguém que é especialista em uma área e generalista em outras. Assim, normalmente full stacks começam se especializando em algo, e depois se especializam também em outra área em que era apenas generalista.

Há um fundo azul escuro, no topo e ao centro está escrito “especialista”, logo abaixo há “Conhecer a virtual machine, dominar o core do framework que você usa”. Após isso a uma régua na horizontal que da direita para a esquerda possui os elementos “Front-end, UX, Back-end, Devops e Banco de dados. O elemento “Back-end” se destaca pois ele se estende de forma vertical formando a imagem de um T juntamente com a régua horizontal.

Para entender melhor sobre o que é o Dev em T, temos o vídeo Dev em T: programação, carreira e tipos de perfil | #HipstersPontoTube:

Quais as vantagens e desvantagens de ser dev Full Stack?

Vimos até aqui sobre o que é e o que não é ser full stack. Mas quais são as vantagens dessa profissão? Quais suas desvantagens?

Na tabela abaixo temos algumas vantagens e desvantagens do full stack, mas claro, é importante lembrar que esses pontos podem variar conforme o perfil e a experiência de cada dev Full Stack, assim como das demandas e necessidades de cada projeto. Porém, essa tabela é um bom ponto de partida para quem está considerando essa carreira.

VantagensDesvantagens
Possibilidade de trabalhar em todas as camadas do desenvolvimento de um projetoPrecisa se atualizar em diversas tecnologias e ferramentas, o que pode demandar tempo e esforço
Maior liberdade na tomada de decisões dado conhecimento do sistema na totalidadeDificuldade em aprofundar conhecimentos específicos de uma determinada área
Mais flexibilidade e agilidade na resolução de problemasPossibilidade de sobrecarga de trabalho, especialmente em projetos maiores
Possibilidade de trabalhar em projetos diversosDificuldade em encontrar uma empresa que valorize a habilidade Full Stack, dada a disputa de contratação entre um profissional generalista X especialista
Maior conhecimento do negócio e das necessidades dos usuáriosPressão pela atualização constante em diversas tecnologias e ferramentas

Uma das desvantagens apresentadas na tabela vem do fato de, na maioria das vezes, a pessoa full stack ter um conhecimento generalista e, consequentemente, não ter uma visão tão específica em alguma área do desenvolvimento.

Daí poderíamos pensar na seguinte pergunta: por que uma empresa escolheria full stacks ao invés de especialistas na área?

Uma das principais razões pelas quais uma empresa pode escolher contratar devs full stack é pela capacidade de lidar com todas as camadas do sistema. Em outras palavras, full stack são capazes de desenvolver desde o front-end até o back-end de um aplicativo ou site. Isso é especialmente útil em projetos menores, em que é mais difícil justificar a contratação de especialistas.

Além disso, por seu conhecimento em várias áreas, esta pessoa tem uma visão geral das necessidades dos usuários, o que pode ser um diferencial em projetos em que a experiência do usuário é fundamental. Full stacks podem trabalhar em conjunto com especialistas, garantindo que haja uma integração fluida entre as diferentes áreas do projeto.

Mas o seu papel não se restringe apenas às empresas de pequeno porte. Em empresas grandes, há uma maior necessidade de lidar com múltiplos projetos ao mesmo tempo, por isso, contratar full stacks pode reduzir os custos de contratação e treinamento de vários especialistas.

Sendo capazes de trabalhar em diferentes projetos e lidar com diferentes tecnologias, fulls stacks podem trazer uma maior flexibilidade para a empresa na hora de alocar recursos. É possível alocar full stacks caso seja preciso um suporte no front-end, e a mesma coisa vale para um momento de maior necessidade de suporte no back-end!

Uma mulher branca de cabelos loiros apontando para uma máquina de fazer café, falando a frase “Uma máquina que faz tudo”.

Como se tornar dev full stack? Quais as habilidades necessárias?

Depois de entender quais os pontos positivos e negativos de uma carreira de full stack, caso você queira se especializar nessa profissão, uma pergunta que pode surgir é como posso me tornar full stack?.

As competências necessárias em full stack podem ser divididas em soft skills e hard skills. Assim, vamos explorar as habilidades essenciais e o que estudar.

Como se tornar Dev FullStack? | #HipstersPontoTube

1) Soft Skills

As soft skills são habilidades comportamentais que estão relacionadas com as características emocionais e comportamentos sociais de profissionais. Essas competências vão influenciar a forma com que realizamos nossas tarefas e interagimos com outras pessoas. Algumas das soft skills que veremos a seguir, são fundamentais para devs full stack.

A inteligência emocional é uma soft skill que faz com que tenhamos a capacidade de entender e lidar com as nossas próprias emoções. No dia a dia, essa habilidade será importante para que os desafios e dificuldades sejam encarados com maturidade. Aqui na Alura temos alguns cursos que vão te ajudar a desenvolver essa soft skill:

Outra soft skill essencial para full stacks é saber trabalhar em grupo. No ambiente de trabalho, os softwares geralmente são desenvolvidos por várias pessoas trabalhando juntas. Ao contrário do que se pensa, o trabalho como dev raramente será solitário, normalmente é algo colaborativo.

Dessa forma, é importante saber se comunicar bem e ter uma boa habilidade de trabalho em equipe. É esperado que profissionais saibam lidar com os diversos perfis de pessoas.

Caso você queira melhorar suas habilidades de comunicação, temos uma formação sobre o assunto aqui na Alura: Formação Comunicação.

As tecnologias estão sempre em mudança assim, atualização constante e a capacidade de ser autodidata são soft skills cruciais de devs full stack. Além disso, é necessário concentração, para que se tenha foco nos assuntos que precisam ser estudados e aprendidos.

O trabalho como full stack exige que essa pessoa tenha facilidade na gestão de projetos e saiba tomar decisões, já que ela estará atuando em diferentes áreas de um projeto.

Outras características relevantes como profissional são a proatividade e a criatividade para resolver problemas de maneira autônoma e inovadora. Além da versatilidade para se adaptar facilmente às diferentes atividades da profissão.

É esperado que full stacks tenham curiosidade e proatividade. Além disso, se destaca quem tem habilidades de negociação.

Para mergulhar ainda mais no tema de soft skills, deixamos a recomendação desse episódio do podcast Hipsters Ponto Tech:

Softskills em Tech - Hipsters Ponto Tech #302

Ouvir um pouco de:
Soft Skills em Tech – Hipsters Ponto Tech #302

2) Hard Skills

Já as hard skills se referem as habilidades técnicas. Essas habilidades são adquiridas através de cursos, treinamentos e prática. Sabemos que a hard skill básica que full stacks devem ter é a capacidade de desenvolvimento em back-end, front-end e banco de dados.

Além do conhecimento das principais linguagens de programação, tendo em vista a stack escolhida, também é importante saber trabalhar com as principais bibliotecas e frameworks que estão relacionados com essa stack.

Aqui na Alura, temos conteúdos para você aprofundar seu conhecimento nas principais linguagens de programação. Confira algumas a seguir:

Além disso, é fundamental entender bem algum banco de dados. A Alura oferece alguns cursos sobre o tema como:

Também temos um episódio do nosso podcast Hipsters Ponto Tech que traz uma conversa sobre SQL, bancos de dados relacionais, queries e o que é “sequel”.

TechGuide: SQL – Hipsters Ponto Tech #356

Ouvir um pouco de:
TechGuide: SQL – Hipsters Ponto Tech #356

Além de conhecer back-end, front-end e banco de dados, existem outras hard skills que com certeza dão destaque no mercado de trabalho como full stack.

Uma dessas habilidades relevantes é o conhecimento de alguma ferramenta de controle de versão. Temos aqui na Alura o curso Git e Github: controle e compartilhe o seu código para você se aprofundar no assunto.

No mundo globalizado em que vivemos, é importante ter o domínio de outros idiomas; apesar de algumas ferramentas possuírem documentação em português, basicamente todas as documentações e informações principais estão em inglês, além de ser o idioma utilizado pelas linguagens de programação. Isso abrirá mais oportunidades para você, inclusive fora do Brasil. Você pode aprender inglês ou espanhol aqui na Alura, através do Alura Língua.

Como full stacks trabalham com front-end, é interessante ter noções de usabilidade e experiência de usuário. O entendimento sobre interface e design de projetos digitais é praticamente fundamental. Você pode se aprofundar nesses tópicos aqui na Alura com a Formação de UX Design.

Outras hard skills que podem ser um diferencial para um full stack são: conhecimento em Infraestrutura, Cloud e DevOps. Você pode conferir tudo isso em conteúdos aqui da Alura:

Ufa! Quantos conhecimentos necessários para ser full stack! Agora vamos entender melhor como acontece a progressão de carreira desse tipo de profissional, que tem um perfil tão multidisciplinar.

Qual a progressão na carreira full stack

Para quem está começando na programação full stack, o ponto de partida comum é como dev júnior, em que aprenderá as habilidades necessárias para lidar com as diferentes camadas do sistema e contribuir em projetos de menor complexidade.

Em seguida, pode progredir para dev pleno, em que terá maior autonomia e responsabilidade em projetos mais complexos.

A partir daí, há diversas possibilidades de especialização e progressão na carreira. Há devs full stack que podem optar por se especializar em uma camada do sistema, tornando-se especialistas em back-end ou front-end, por exemplo. Também há quem busque cargos de liderança, como gerente de projetos ou em arquitetura de software.

A progressão como full stack pode variar bastante, mas geralmente envolve uma combinação de especialização em uma ou mais áreas do sistema e aquisição de habilidades de liderança e gestão de projetos.

Quanto tempo demora para virar full stack?

A resposta para essa pergunta é: depende! Para entender melhor isso, é preciso levar em consideração diversos aspectos particulares de cada pessoa como, por exemplo: os conhecimentos prévios em programação ou até mesmo a complexidade das tecnologias da stack escolhida, bem como as suas curvas de aprendizado.

Alguém que é iniciante na área pode demorar mais tempo, pois ainda é necessário construir uma base com os assuntos mais básicos, como lógica de programação.

Já alguém com um nível mais avançado, que seja especialista em front-end ou back-end, pode levar menos tempo, pois são menos conteúdos para construir o perfil de full stack.

Independente do seu grau de conhecimento, um fator fundamental para se tornar dev full stack é o aprendizado contínuo. Para te ajudar com essa tarefa temos aqui na Alura o Tech Guide, que é uma ferramenta que traz um mapeamento das principais tecnologias solicitadas pelo mercado, junto com sugestões de trilhas de estudos para desenvolver o seu dev em T na área de sua escolha.

Qual faculdade para ser full stack?

Será que é necessário fazer faculdade para se tornar dev full stack? Existem muitas vagas no mercado que não têm a exigência de uma graduação. Porém, um curso de graduação te traz uma experiência única e enriquecedora, que não seria adquirida em outro lugar.

Um curso superior em tecnologia fará com que você construa bases sólidas sobre diversos assuntos. E sem dúvidas fará com que você tenha mais oportunidades de emprego. Assim, se você tem a possibilidade de fazer um curso superior, recomendamos sim que você faça uma faculdade.

O vídeo Será que eu faço uma faculdade de tecnologia? - Mikaeri Ohana traz uma discussão relevante sobre o assunto:

Isso nos leva a outro questionamento: qual curso superior devo fazer para favorecer minha formação como full stack? Existem algumas alternativas entre as quais podemos citar os cursos de Ciência da Computação, Engenharia da Computação e Sistemas de Informação.

Temos aqui na Alura o artigo Ensino Superior: o que é e por que é tão importante? que vai te mostrar tipos e opções de cursos superiores, além de aprofundar o debate sobre a importância de se fazer faculdade.

A FIAP é um centro acadêmico que oferta cursos de graduação e pós-graduação nas áreas de tecnologia, inovação e negócios. É uma instituição de ensino que possui nota máxima no MEC, sendo referência no mercado.

Na segunda semana de março de 2023 houve um aumento repentino de pesquisas com o termo “full stack” relacionadas com “FIAP”. Ficou curioso com o que a FIAP pode te oferecer para seu desenvolvimento como full stack? Na FIAP há cursos de graduação online e presenciais, que focam na capacitação de devs full stack. Então, vamos conferir algumas as opções:

Além do ensino superior, existem alguns cursos que podem contribuir na sua carreira como full stack e você encontra diversas opções aqui na Alura. Se interessou?

Cursos

Se você está procurando se tornar dev full stack, a Alura oferece a Formação Full Stack com React e Node.js que pode te ajudar a adquirir todas as habilidades necessárias para construir aplicações completas, desde o front-end até o back-end.

A Alura oferece projetos práticos para que você possa aplicar os conhecimentos adquiridos e construir aplicações reais. Isso te ajudará a ganhar experiência e confiança para encarar desafios mais complexos no mundo real.

Com a Formação Full Stack da Alura, você terá um caminho claro e estruturado para se tornar uma pessoa desenvolvedora Full Stack e pronta para atuar em projetos completos. Além disso, você contará com uma comunidade ativa de alunos e alunas para trocar conhecimentos e experiências.

Essa formação já tem como requisito que você tenha um conhecimento prévio com desenvolvimento. Mas se estiver dando os seus primeiros passos na área de desenvolvimento, na Alura você terá acesso a diversas outras formações e cursos que vão desde o básico de HTML e CSS até conceitos mais avançados como desenvolvimento de APIs. Além de ter o primeiro contato de forma prática com os frameworks React, Node.js, Spring e outros que são bastante populares no mercado atualmente.

Aprenda mais sobre Full Stack gratuitamente

Acesse gratuitamente as primeiras aulas da Formação Full stack JavaScript: crie um projeto com React e Node.js, feita pela Escola de Programação da Alura e continue aprendendo sobre temas como:

  1. React: comece seu projeto full stack;
  2. Node.js: continue seu projeto full stack criando uma API com Express;
  3. React e Node.js: consumindo APIs no React no projeto full stack.

Como aprender melhor? Com Diogo Pires | #HipstersPontoTube

Deixamos também como recomendação esse outro episódio do HipsterPontoTube, que te dará ideias de projeto para adicionar no seu portfólio.

5 projetos pra quem está na carreira tech com Mario Souto | HipstersPontoTube

Portfólio

Agora que você entendeu o que é full stack e o que você precisa estudar para se capacitar, é importante, ao longo da sua jornada nessa carreira, mostrar suas habilidades para conseguir uma vaga como dev full stack. Para isso, desenvolva projetos e monte um portfólio.

Nesse episódio do HipsterPontoTube, você pode aprender o que é necessário para criar um bom portfólio:

Como fazer um bom portfólio em tecnologia com Diogo Pires | #HipstersPontoTube

Apostilas — Você profissional em T

Com as Apostilas de tecnologia sobre Front-end, Programação, UX & Design e Ciências de Dados da Alura avance nos estudos e no desenvolvimento da sua carreira em T.

Você poderá se aprofundar nos seguintes tópicos:

  • Desenvolvimento Web com HTML, CSS e JavaScript;
  • UX e Usabilidade aplicados em Mobile e Web;
  • Java para Desenvolvimento Web;
  • Java e Orientação a Objetos;
  • Python e Orientação a Objetos;
  • C# e Orientação a Objetos;
  • SQL e modelagem com banco de dados;

Baixe ela completa e as demais apostilas da coleção da Alura em: Apostilas da Alura - Conteúdo livre para o seu aprendizado.

Conclusão

Neste artigo aprendemos sobre full stack, o que é, sua história, algumas vantagens e desvantagens, além de entender como dar um pontapé inicial nessa carreira cheia de oportunidades.

Além disso, apresentamos uma panorama geral de tecnologias e áreas do conhecimento que podem te ajudar nessa jornada para se tornar dev full stack. Nesse sentido, passamos pelas linguagens de programação mais usadas, frameworks, bibliotecas e as stacks mais relevantes no mercado de trabalho.

Se deseja ter a visão de projetos como um todo, conhecimentos sobre todas as áreas do desenvolvimento e ter valorização profissional pelo mercado, te convidamos a mergulhar na área de full stack com a Formação Full stack JavaScript: crie um projeto com React e Node.js, nela você aprenderá sobre front-end e back-end de forma prática! Tudo isso usando apenas uma linguagem de programação, o JavaScript.

Mas, como mencionado ao longo do artigo, a carreira full stack te dá diversas opções de especialização, portanto, caso queira se aprofundar em front-end recomendamos a formação JavaScript para Front-end, onde você vai aprender mais sobre criação de páginas Web e ter uma base para os frameworks mais utilizados no mercado de trabalho usando JavaScript.

E caso tenha interesse em se aprofundar no back-end para entender mais sobre o desenvolvimento de sistemas back-end, APIs e bibliotecas, recomendamos algumas formações:

Parabéns por chegar até aqui, agora você pode mergulhar de vez nessa área!

Emerson Laranja
Emerson Laranja

Sou monitor da Alura e granduando em engenharia de computação (Ufes).Minha dedicação está centrada no desenvolvimento de conteúdos voltados para a área de backend, com enfoque especial em JavaScript e TypeScript. Estou comprometido em proporcionar uma experiência de aprendizado envolvente e enriquecedora para todos os alunos, contribuindo assim para o sucesso de suas jornadas no universo do desenvolvimento web.

Gabrielle Ribeiro Gomes
Gabrielle Ribeiro Gomes

Gabrielle é estudante de Engenharia de Software na Universidade de Brasília - UnB. Faz parte do Scuba Team da Alura atuando principalmente com Python. É apaixonada por programação, robótica, machine learning e gatos.

Veja outros artigos sobre Programação