Como se tornar um desenvolvedor full-stack no próximo ano

(Última atualização em: 20 de dezembro de 2016)

Cada vez mais e mais desenvolvedores fazem parte do mercado de trabalho e muitos tem o objetivo de se destacar na carreira, mas ainda tem dúvidas de como chegar lá?

É muito comum encontrarmos profissionais que conhecem back-end profundamente e sabem todos os detalhes de como fazer uma integração multiplataforma através de mensageria assíncrona de forma eficaz. Ou então o profissional front-end que é craque em todas as nuâncias do CSS e design responsivo.

No entanto, quando esses dois tipos de profissionais precisam se conversar sobre a especialidade de um ou de outro, a conversa não flui. O profissional back-end não conhece de front-end e vice-versa. Quer adicionar mais uma pimenta aí nessa conversa? Inclua o DBA, que administra os bancos de dados.

Seria muito mais interessante se todos esses profissionais conhecem um a área de especialidade do outro, por exemplo, que o especialista de back-end tivesse conhecimento suficiente para trabalhar bem com banco de dados e com front-end.

É justamente isso que significa ser um desenvolvedor full-stack. Ter conhecimento de toda a pilha que envolve a área de desenvolvimento para que você possa colaborar em todas as áreas do projeto.

Cada vez mais esse tipo de profissional é requisitado pelas empresas no brasil e no exterior e geralmente com remunerações atrativas. Mas como conseguir chegar lá?

O que devo aprender para ser um desenvolvedor full-stack?

O primeiro ponto que deve ficar claro para você é que não é necessário ser especialista em todas as áreas e todos os assuntos.

Provavelmente haverá uma área que mais te atrai e nela terá mais conhecimentos, ou seja, você será especialista nessa área e as outras vertentes serão conhecimentos que te ajudarão no dia a dia, mas sem necessariamente ser especialista. Esse perfil de profissional é conhecido como T-shaped.

0) Controle de versão

O requisito básico para qualquer desenvolvedor é ter conhecimentos de pelo menos uma ferramentas de controle de versão. Atualmente as mais demandadas são o Git e o SVN e aqui na Alura você consegue aprender Git de forma bem fácil.

1) Aprender programação front-end, HTML, CSS e JavaScript

Front-end não pode ser um trauma para você. Aprender o básico pode ser muito divertido e com certeza vai ser bastante proveitoso na sua carreira. Aprenda bem HTML, entenda as noções de posicionamento e as nuâncias do CSS, além de claro, conhecer os principais recursos do JavaScript para front-end. De quebra, aprenda também como funcionam os designs responsivos e como eles são feitos.

2) Noções de Usabilidade

Quem nunca viu um desenvolvedor back-end que precisou colocar uma mensagem na tela e acabou fazendo isso através de um javascript com um alert() (não vou negar que eu já fiz muito isso) que fugia completamente do padrão e estragava toda a usabilidade da aplicação ou site.

Conhecer UX e saber o que pode ser feito e como aquela nova funcionalidade vai ser encarada pelo usuário final é fundamental para qualquer profissional full-stack. Isso vai ajudar a tomar decisões que tenham o usuário final como objetivo principal.

3) Aprenda desenvolvimento back-end

Aqui a gama de linguagens e opções é enorme. Para quem está vindo de aprender front-end, talvez seja o maior passo de todos.

Se você nunca teve contato com uma linguagem back-end, recomendo fortemente começar por linguagens em que a curva de aprendizado sejam mais tranquilas, como PHP e Ruby. Aqui na Alura temos as carreiras que te guiam a aprender tanto PHP como Ruby.

Depois que se sentir confortável, você pode partir para novas linguagens e paradigmas, como Java e ASP.NET e depois se aprofundar.

4) Banco de dados

Sim, você vai precisar trabalhar com bancos de dados no dia a dia. E isso não significa apenas fazer selects básicos. Aprenda a realizar joins complexos, como fazer queries eficazes e que não exijam desnecessariamente do banco de dados também é fundamental no dia a dia. Além de conhecer como funciona os mecanismos de indexação disponíveis.

Você pode começar por aprender MySQL, Oracle, PostgreSQL ou qualquer outro servidor de banco de dados que seja o utilizado por você no seu atual ou futuro trabalho.

5) Mobile

Esse é um grande diferencial, dado que cada vez mais as empresas tem adotado as apps mobiles. Saber como funcionam e são estruturadas os aplicativos mobile para as principais plataformas também é um ponto importante.

Na maioria dos projetos, os aplicativos mobile se integram com um back-end, então esse conhecimento dos dois mundos pode ser um enorme diferencial para a sua carreira.

Você pode começar aprendendo Android ou iOS, mas caso tenha mais familiaridade com HTML, CSS e JavaScript, pode optar também por aprender Ionic ou Cordova, que através de um HTML, geram aplicativos para as principais plataformas mobile.

6) Infraestrutura, cloud e devops

Se você vem do mundo de front-end, é importante conhecer a infraestrutura, saber, por exemplo, que com HTTP2 você pode ter muito mais recursos legais para as suas páginas ficarem muito mais rápidas, entre outras coisas importantes e saber como configurar e disponibilizar tudo isso para o usuário final.

Já para quem vem do mundo back-end, montar um servidor de aplicação e preparar o terreno para o deploy é tarefa mais que comum nos projetos e que atualmente fica bastante a cargo dos desenvolvedores.

Entenda como funciona os diferentes tipos de serviços de cloud, como automatizar processos de montagem de ambientes e perca o medo de mexer na linha de comando e com certeza você terá muitos benefícios na sua carreira.

7) Bônus: conhecimento do negócio

Imagina o presidente da empresa chegando ao seu lado e perguntando: “Mas essa funcionalidade que você está fazendo, traz qual resultado para a empresa?”.

Sua resposta poderia ficar apenas no aspecto técnico como “Estamos fazendo essa funcionalidade para saber desenvolver em Angular 2”, o que provavelmente não faria os olhos do CEO brilhar, apesar de ser importante, claro.

Por outro lado, se a resposta fosse: “Essa funcionalidade é importante para diminuir o tempo o usuário espera para receber o atendimento. O legal é que depois dela no ar, a gente vai conseguir atender 20% mais pessoas, ou seja, muito mais clientes felizes com a gente.”

Sempre tente entender o impacto do que você está fazendo no negócio como um todo. Desde a mais simples das funcionalidades, até a mais complexa, todas geram um valor para o negócio. Entender qual é esse valor é fundamental até para justificar o seu próprio trabalho.

Como aprendo tudo isso?

Tenha em mente que você não precisa ser especialista em todos esses itens. Especialize-se em um desses pontos (se já não for) e, em seguida, comece a aprender os outros aspectos. Os principais desenvolvedores full-stack que conheço começaram sendo especialistas onde já trabalhavam e depois foram aos poucos aprendendo novas habilidades.

O ponto importante aqui é fazer isso regularmente mantendo uma rotina de estudos!

A grande vantagem de ser um desenvolvedor full-stack é ter desenvoltura para participar das diferentes fases do projeto, podendo se tornar até mesmo uma peça chave dentro dele, sendo aquela pessoa que tem um conhecimento especial sobre o projeto, que sabe de ponta a ponta como as peças se encaixam e claro, esse pode ser um diferencial importante para sua própria valorização como profissional.

E você, o que vai aprender no próximo ano? Compartilhe conosco aqui nos comentários!

  • Cada vez mais cool ser full-stack, apesar de muito criticado o termo full-stack recentemente. Ótimo artigo.

    • Opa Valdir, legal que gostou :). Realmente ser full-stack está cada vez mais cool mesmo. Até entendo algumas críticas, mas vejo que conhecer toda a pilha de desenvolvimento só traz vantagens para o profissional.

      • Juaum

        Correto! Conhecer toda a pilha de desenvolvimento para ajudar a destravar algumas áreas é muito bom. Porém trabalhar em toda a pilha de desenvolvimentos é meio que surreal.

    • Igor Nobre

      No Caso do Desenvolvimento Móvel acaba já existindo pois tenho que ter noções de UX, Banco de Dados além de noções específicas de cada plataforma seja ela “Android ou IOS” coisas que nem mesmo o Xamarin consegue solucionar!
      Me vem a pergunta em mente preciso também ajudar no webservices …

  • Thadeu Cotts

    Já coloquei como minha meta para o próximo ano! Como tenho uma escala de trabalho totalmente alternativa, com o alura consegui manter um foco e um ritmo constante, nem que seja uma horinha por dia…
    Excelente post… uma outra coisa que também não pode ficar de lado são as boas práticas de uso de cada linguagem.

  • Simone Villas Boas

    Ser full stack developer é utópico e esta busca por entender áreas com paradigmas tão diferentes é só mais uma forma de precarização do trabalho e uma forma de manipularem você. Não se sinta inferior porque é traumatizado com front-end, se esqueceu um alert na página ou achou que foi preterido em alguma vaga porque não é full-stack de verdade.

    • Opa Simone, bom ponto. O que precisa ficar claro também é que o objetivo de um full-stack não é ser o expert em todas as áreas. Muito pelo contrário, pois aí sim seria algo bem difícil de atingir e para muitos essa jornada seria desmotivadora, como você mesma indicou.

      Claro, é importante ser especialista em uma coisa. Como o psicólogo é especialista em sua área, ele também pode ter um conhecimento de psiquiatria e com isso vai poder, até no seu trabalho mesmo, indicar para um paciente que o mais recomendado para o problema dela é um psiquiatra e não um psicólogo.

      • Simone Villas Boas

        Você mesmo diz que a questão não é ser especialista no seu texto, mas porque vende isso nas entrelinhas? Ah, deve ser porque este é um blog de uma empresa que vende conhecimento, que trabalha a insegurança para lucrar e que lucra muito em tempos de crise como esta.
        Não me leve a mal. Você está fazendo corretamente o seu papel, mas já que abriu este espaço acho que é bacana passar outras informações também.
        Por exemplo, não existe isso de especialista em psicologia. Existem áreas que algumas pessoas conhecem bem e trabalham bem o network para fazer uma indicação. Quando vemos isso de especialista, é influência da medicina, como na neuropsicologia. Mas isso é uma discussão para outro forum.

        • MIchel Dias

          Exatamente, penso da mesma forma, já é a terceira ou quarta matéria que recebo com o mesmo conteúdo. Pretendo mudar de área em 2017 e cada vez que vejo esse tipo de material entro pra ler e sempre fala a mesma coisa. Sou assinante da Alura e estou gostando bastante dos cursos, mas ao invés de ficar somente nessas matérias que mais parece um anuncio de “faça os nossos cursos”, poderiam indicar vagas para estágio/CLT, mostrar o que as empresas costumam fazer nas entrevistas, etc….

    • Priscilla Caldeira

      Oi Simone, boa noite. É complicado mesmo e cansativo ser full-stack, mas dependendo das circunstâncias em que cada desenvolvedor acaba encontrando, devido aos clientes, e em geral, os clientes não querem pagar o preço justo dos projetos, as equipes acabam sendo reduzidas. Concordo que não deveria ser assim, o mundo correto seria ser menos penoso para os desenvolvedores, mas tem muita concorrência…. Aí a gente se adapta e tem também o gosto pessoal, cada um é livre, quem gosta mais de front-end e pode ser apenas de front-end tudo bem, tem outros desenvolvedores que não podem ser apenas front-end ou back-end devido ao mercado. E é legal estudar tecnologias novas, é bacana também. Cada um tem a sua “praia”. Abraços!

      • Simone Villas Boas

        Miga, o mercado quer que você trabalhe de graça e sorrindo (alguns querem até que você pague para trabalhar para eles). Quem negocia com o mercado é você. Quem faz seu preço e suas condições de trabalho é você.

        • Priscilla Caldeira

          Sim, Simone, com certeza, você está certa. Concordo com você, precisa existir equilíbrio, senão nos tornamos escravos. Eu, porém, entendo que também existam vantagens em ser full stack, mas é uma escolha pessoal. No meu caso, algum tempo atrás, meu perfil no Linkedin foi encontrado pela empresa Amazon e o cargo era para Engenheiro Java e era solicitado que o profissional desenvolvesse e aplicasse a demanda nos servidores e fizesse manutenção das aplicações. Se eu tivesse 5 anos de experiência com servidores linux, eu tenho 1 ano comprovado apenas, estaria com meu Green Card e estaria trabalhando em Herndon, Virginia. Para mim vale a pena ser full stack, conseguiria ir trabalhar no exterior.

  • Michel Guedes

    Pode ser falta de visão minha, mas seria o mesmo que querer que um médico de determinada especialidade saiba todas as especialidades à fundo. Ou não?

    Eu sempre achei bom (e sempre me disseram isso) você ter uma noção de como cada pedaço funciona, mas o ideal é você se aprofundar e dominar uma ou duas coisas muito bem. Senão, você acaba não se aprofundando em nada, e se perde.

    Aliás, também concordo com o que a Simone Villas Boas disse.

    • Opa Michel, justamente não. A ideia do full-stack, e que está no post, é justamente você ser especialista em um (ou mais tópicos, caso queira), e ter conhecimento mínimo adequado para conseguir se comunicar com outras áreas.

      A analogia que você usou do médico é excelente. O clínico geral é justamente a pessoa que seria o full-stack. Ele pode ter um conhecimento profundo em uma área, mas também precisa ter um conhecimento mínimo geral em outras (até para poder te encaminhar para o especialista adequado). Ainda assim, por mais que ele conheça um pouco de anestesia, ele não pode entrar em uma cirurgia e assumir o lugar do anestesista. Entende?

    • Eduardo Floriano

      Rapaz, se eu vejo o DBA ou CM vindo dar pitaco no desenvolvimento, eu vou ficar muito fulo da vida rsrs.
      Na minha opinião, a equipe tem que funcionar, e não encher de “dev’s full stack” pra reduzir o custo com recursos na empresa. Se o DBA sabe trabalhar, o CM sabe trabalhar, a equipe de front, back, de integração e um bom gerente de projeto, não há necessidade de “full stack”. Minha opinião… eu odeio essa palavra.

  • Stélio Moiane

    Excelente o post Adriano. Realmente a ideia de ser full-stack para os olhos dos stakeholders é o produto a funcionar… nada como front-end, back-end ou devops faz sentido para eles.

    Parabéns e Sucessos

  • William Morais

    Feito, como sempre Alura apresentando novos objetivos e dando dicas para conseguimos estudar melhor, sem contar com a preocupação com seus alunos, parabéns Alura, já estipulei como meta para o ano que vem, mesmo com pouco tempo para estudar.

  • Haroldo Ramirez

    Muito Interessante! Sempre busco conhecimento e mentalidade para ser um full-stack.

    Sucesso!

  • Priscilla Caldeira

    Olá, sou desenvolvedora desde 2003 e sobre ser full-stack o mercado nos obriga infelizmente e as tecnologias mudam muito. Eu comecei como desenvolvedora Progress por 4 anos, comecei como estagiária e fui efetivada, aqui no Brasil, em 2007 o ERP Datasul era utilizado por muitas empresas e depois muitos clientes migraram para o ERP alemão SAP. A Progress Software possui suas IDEs desenvolvimento voltadas para desktop e web como possui também seu banco de dados específico.
    No meu caso, os treinamentos de SAP eram muito caros para eu poder pagar, então, para prosseguir como desenvolvedora migrei para Java pois o mercado é maior e eu acabei gostando muito de Java. Aprendi a trabalhar com Oracle, pois os primeiros clientes que eu prestei serviço utilizavam Java e Oracle.
    Por um tempo desenvolvi em Delphi 7 com banco Oracle. Depois trabalhei também com Python (aí me apaixonei pelo poder dessa linguagem, salve Guido Von Rossum!!!!) e shell script com bancos Oracle e Mongo DB.
    Atualmente trabalho como desenvolvedora SOA/Java utilizando as ferramentas da BEA da Oracle com banco Oracle.
    E em breve preciso me tornar desenvolvedora de webservices utilizando REST e Json, e pelo que vi nos posts do Hipsters e de uma grande empresa, a Sensedia, o mundo SOA será mudado para a arquitetura de microservices. Preciso estudar a arquitetura de microservices agora.
    Sempre mudando. Acabo me tornando full-stack por necessidade do mercado e por gostar das mudanças, eu sempre fico atenta ao novo.
    Eu sou um pouco velha, kkkkkk, 35 anos, e a maturidade traz também um pouco mais de insegurança, então acabo estudando muito para poder acompanhar a galera nova que está chegando já com conhecimentos mais avançados e atuais.
    A Alura me ajuda muito. 300 cursos, que incluem quase todas as áreas de TI é maravilhoso para mim.
    Respeito outros pontos de vista também. Ser full-stack é desgastante.

    • Alex Felipe

      Meus parabéns por tanto estudo e dedicação, de fato o mercado exige mesmo, não tem jeito… Antes, quando estava no início de meus estudos, reclamava muito pelo mercado exigir muito das pessoas nesta área de desenvolvimento de software, porém, depois que comecei atua como desenvolvedor, percebi que para que todo o produto seja feito conforme o cliente espera, isto é, para que agregue valor para o cliente, é necessário ter pelo menos noção de toda a stack do projeto… Dificilmente vão chegar em você e falar: “resolva essa funcionalidade X no back-end…”, provavelmente vão falar algo como: “a tela da funcionalidade X não está resolvendo o problema Y que não libera o produto Z…” Sendo cada uma das coisas que o cliente pede faz parte de entidades diferentes. Como por exemplo um front-end, back-end e um banco de dados… Nessas situações, se você responder que só lida com o front-end é um abraço para você! Pois existem outros profissionais que sabem o que você sabe e um pouco mais, ou seja, ocuparão o seu lugar!

      Portanto, não se contentar com o mínimo é uma sábia escolha, afinal, se quer fazer diferença no mercado, seja diferentes dos demais, isto é, sempre tenha aquele “as” na mangá que faz você se tornar alguém muito difícil de substituir. E ao Adriano, meus parabéns também, ótimo texto!

      • Priscilla Caldeira

        É essa a minha realidade diária Alex. Bem assim mesmo: “a tela da funcionalidade X não está resolvendo o problema Y que não libera o produto Z…” Passo por isto todos os dias. No meu caso, sempre tive demandas de ponta-a-ponta. Para dar manutenção ou criar uma funcionalidade nova, era da interface, indo para o back-end e depois chegando no banco. Eu não tive circunstância diferente, até o momento, nenhum projeto veio montado com equipes separadas para cada parte. E fora que muda as arquiteturas e tecnologias. Cada cliente tem sua características e o desenvolvedor se adapta. É cansativo, mas é a realidade infelizmente.

    • Eduardo Floriano

      O problema, é que “full stack” envolve todas as camadas do projeto, e não só desenvolvimento como você citou. Você está enquadrada no meio de Desenvolvimento, pois conhece diversas linguagens e ferramentas relacionadas, como você citou. O problema começa quando você tem que estudar para fazer o Trabalho do CM para gerar os pacotes de deploy, fazer o trabalho da Infra para subir a aplicação, fazer o trabalho do DBA para aplicar as mudanças e fazer optimizações, fazer o trabalho do gestor, etc etc etc. Esse conceito do Full Stack que não me agrada.

      • Priscilla Caldeira

        Floriano, boa noite. Justamente a primeira consultoria que trabalhei era esperado do desenvolvedor desenvolver front-end, back-end, banco, realizar testes e aplicar a demanda no cliente. Já trabalhei em projetos onde era esperado que eu fizesse o deploy da aplicação. Por isto digo que depende das circunstâncias de carreira de cada profissional.
        No meu caso, algum tempo atrás, meu perfil no Linkedin foi encontrado pela empresa Amazon e o cargo era para Engenheiro Java e era solicitado que o profissional desenvolvesse e aplicasse a demanda nos servidores e fizesse manutenção das aplicações. Se eu tivesse 5 anos de experiência com servidores linux, eu tenho 1 comprovado apenas, estaria com meu Green Card e estaria trabalhando em Herndon, Virginia. Para mim vale muito a pena ser full stack.

  • Manoel Motoso

    Sou recém formado e trabalho como desenvolvedor, acredito que uma boa dica para 2017 é aprender Javascript e frameworks como Angular2 e em paralelo Nodejs e MongoDB,

    • Priscilla Caldeira

      Para mim Angular2 e Nodejs são objetivos que eu preciso alcançar. O MongoDB eu já trabalhei, banco NoSQL. Outro que eu gostaria de ter experência é o Cassandra. Outro banco que eu já trabalhei é com o MySQL. Tem que estudar muito, as tecnologias mudam muito.

      • Henrique

        Mudarame continuam mudando. Node e Mongo tbm estão na minha lista para este 2017.

  • Anthony

    Esse artigo me lembrou dessa entrevisa que assisti à alguns meses atrás. https://www.youtube.com/watch?v=Bx17ywo-5nM&t=145s

  • Carlos André

    Trabalho na área Administrativa especificamente no setor Contábil, mas meu objetivo no ano que vem é aprender programação, vou começar com Python por ter uma curva de aprendizado menor.

  • Claudeci Goularte

    Bacana, não sabia que meu estilo tinha um nome kkk, full-stack. Achei legal o post. O mercado hoje está mesmo exigindo que saibamos um pouco de cada coisa, não necessariamente ser especialista, mas pelo menos ter “ouvido falar”. Att, http://www.codigomaster.com.br

  • Max

    Uma coisa que acho interessante, é você ler algo que não tenha nada haver com programação para a mente poder enxergar outras coisas, isso para mim seria como um relaxamento para a mente, não é ficar lendo o dia inteiro simplesmente no máximo 1 ou 2 horas.
    É meio difícil explicar, seria como agregar valores ou conhecimentos(raciocínios) que em uma determinada hora você vai incluir no que você estará fazendo.
    Tornando assim as coisas difíceis de forma mais fáceis…

    Por exemplo:
    —> Antigamente não existia tanto e-mail, você conseguia criar um e-mail com o seu primeiro nome, o meu primeiro do do IG.
    Hoje em dia fica difícil criar um e-mail com seu primeiro nome, a não ser que eu nome seja muito diferente.
    Ai chegou o dia eu usava e-mail da microsoft, porém com tanta atualização, confirmações de segurança atravez do celular, etc.
    Então eu decidi sair do e-mail da microsoft e fui para o e-mail do Google.
    Colocava max2016, maxbr2510, etc,… porém achava um nome não muito agradavel e as vezes grande demais, e um dia eu fui na loja de um amigo meu que eu consertava computador para ele ai eu vi o e-mail dele ex. betosoaresrj (este e-mail é ficticio).
    Ai eu olhei a princípio não achei o nome do e-mail chamativo. Mas acabou mim chamando a atenção pelo tamanho do e-mail( pequeno), simples de gravar e facil de falar, que adotei esta prática.
    O meu amigo não entende muito de computador, porém sem querer ele acabou me ensinando como transformar um assunto difícil em fácil.

Próximo ArtigoDesigner na área de tecnologia: 5 passos para ter sucesso!