Como se tornar um(a) desenvolvedor(a) full-stack no próximo ano?
Introdução
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.
O que é um(a) desenvolvedor(a) Full Stack?
É 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.