Este é uma tradução quase integral do artigo escrito por Andrei Neagoie para a revista Medium.com, para saber mais clica no seguinte link: https://medium.com/zerotomastery/top-libraries-tech-to-learn-in-2019-for-full-stack-developers-f8c0331b8a00

Um “full stack developer” é um termo ainda por definir e que nem todos concordam. Para mim, um Full Stack Developer é alguém que consegue construir do principio ao fim um programa ou aplicação. Que compreende as tecnologias por detrás de um front end e back end, as ferramentas e serviços e tem o conhecimento para colocar a funcionar algo que irá funcionar num ambiente web. Uma coisa é certa, em 2019 vai existir uma grande procura por profissionais nesta área e tu deves estar preparado.

Não vamos perder mais tempo. Aqui está o que precisas saber para 2019 se o teu objetivo é ser uma referência como Full Stack Developer.

Front End

O Básico

HTML, CSS e Javascript é a base e é algo fundamental, contudo, é também importante apreender uma das seguintes frameworks/bibliotecas React, Vue ou Angular. Qual delas escolher? Provavelmente esta.

A decisão é tua, qualquer uma delas estará em expansão em 2019.

Atualizações do React 16

Vais precisar sempre de saber o básico e os componentes de uma arquitetura de fluxo de dados unidirecional e este ano surgiu imensas atualizações com a versão React 16, mas para 2019 está previsto apenas pequenos updates que passo a listar:

Isto significa que deves apreender como utilizar React.lazy() com <React.Suspense> para divisão de código. React.memo para optimização e manter o olho abertos nas novas funcionalidades que vão surgir especialmente React Hooks que tem potencial para modificar a forma como iremos utilizar eco-sistemas construídos em React.

Também, não deves adquirir alguns conhecimentos básicos sobre a versão standard da API React Context, (mais informações daqui a pouco).

Eco-sistemas React irão aumentar em 2019 e irão contribuir para a liderança do React em relação às outras frameworks abordadas neste artigo, não só por causa da sua arquitetura mas também pela sua capacidade de ser utilizado em plataformas como a mobile, loT e AR/VR.

Vue 3.0

Vue cresceu no coração dos Developers em 2018 e 2019 não será excepção… mas será suficiente para ultrapassar as outras duas frameworks? Iremos ver.

O eco-sistema está a crescer e uma nova versão (Vue 3.0) vem a caminho com melhoramentos no Vue CLI. A nova versão irá incluir ferramentas para o Vue Native que permitirá mais desenvolvimento para múltiplas plataforma à semelhança do React Native, aproximando o Vue do seu concorrente.

Vue tem crescido e ao contrário do React e Angular, esta é uma framework open source independente sem ligação a um gigante da tecnologia.

Este é utilizado principalmente na China por empresas como a Alibaba, Baidu, Tencent, Xiaomi e DJI.

Angular Ivy + Angular Elements

O 3º motor de rendering, Ivy está muito próximo de sair e será mais leve, mais rápido e muito mais simples de compilar. Talvez quando leres este artigo tenha já saído, para saber clica aqui.

Angular Elements irá nos dar a capacidade de utilizar componentes do Angular em outros ambientes. Para bom português: Vais conseguir construir componentes e coloca-los em qualquer página HTML sem a necessidade de instalar o Angular… tipo o Web Components (ambos criados pela Google… Se queres descobrir o porque do interesso da Google neste tipo de tecnologia, escrevi sobre isto aqui). Agora podes criar os melhores componentes do mundo com Angular e dar ao teu amigo que usa React na sua aplicação.

En 2019, Angular irá continuar a fazer aquilo no qual são bons: fornecer uma framework completa para a criação de aplicações web complexas. Isto porque o Angular remove muitas das decisões dos Developers, através do seu código padronizado.

Angular, Vue, React  – Mais pequeno e rápido

Resumindo, em 2019 iremos ver as 3 frameworks a percorrer um percurso similar e como referi se conquistares qualquer uma delas estarás pronto a conquistar o mundo. 2019 é esperado pequenas atualizações ao nível da velocidade e tamanho das frameworks… mas nenhuma delas irá trazer alterações significavas que farão um dominar em relação às restantes.

CLI com toda a força

Vai o tempo onde terias de construir um projetos de raiz com babel, webpack, eslint, testing libraries, entre outras ferramentas. Quer dizer, esta é ainda uma opção, mas CLis fizeram desta uma experiência mais agradável e simples para o desenvolvimento de qualquer tipo de projeto. Esta é uma solução ideal e deves afastar apenas quando esta impedir de fazer o que queres.

State Management

  • Vue irá continuar a usar Vuex para state management.
  • Angular continuará a utilizar principalmente o RxJS.
  • React por sua vez teve uma crise de identidade este ano, com o surgimento do Context API e o GraphQL + Apollo. Pela primeira vez em muito tempo o Redux deixou finalmente de ser a escolha óbvia para managing state. Contudo, não deves colocar de parte o Redux , com ele apreenderás alguns dos princípios da ciência da computação, como Event Sourcing e CQRS. Redux ainda é a melhor escolha para 2019 (mais sobre isso abaixo).

Novo Context API vs Redux vs GraphQL

Apollo tem cache offline embutido que tornará Apollo + GraphQL uma séria alternativa ao Redux em 2019 (sim, tecnicamente poderás usar os dois juntos). A nova Context API quando lançada levou muitas pessoas a declarar a morte do Redux, mas este não passa de Reduz com uma nova roupagem.

Indo para 2019, deves estar ciente de como funcionam as 3. Redux ainda é uma ótima escolha quando se trata de empregabilidade. Por sua vez, o Context API é simples de apreendes e GraphQL iremos falar mais na seção de back end neste artigo.

Rendering no lado do servidor

Rendering no lado do servidor não é ainda completamente natural para o JavaScript. Com aplicações de uma página e rendering do lado do cliente, apreendemos que podes acabar por carregar o teu projeto com demasiado JavaScript e afectar o teu SEO. 

Existe contudo, formas de dar a volta a estes problemas: PRPL Patternprerender.io, ou simplesmente aceitar que que o bots do Google não são tão maus quanto se pensa em crawling aplicações de uma página:

Há… páginas estáticas irão voltar a entrar na moda, dá uma olhadela ao site JAM Stack. A ideia: blocos pré-construídos (página estática) que se transformam numa aplicação dinâmica de uma página do lado do cliente e utilizando APIs para o servidor. Isto será algo que poderá modificar o modo como os servidores fazem o rendering e suponho que ferramentas como GatsbyJS terão um forte papel nessa transição. Com GatsbyJS os developers deixam de stressar tanto em como construir rendering do lado do servidor.

Componentes Web

A adoção de Componentes Web pelos browsers está finalmente a chegar ao pontos que todos esperavamos. Entrar em 2019 vai ouvir falar mais em Componentes Web mas não será o pique (ver seção anterior). Mantém-te apenas atento mas não percas dias e semanas a tentar dominar, pelo menos para já.

A promessa de componentes que poderão normalizar e integrar com React, Angular, Vue e HTML simples soa bem, mas precisamos de mais benefícios e uma maior adesão e para já é difícil dizer como será o futuro.

Desempanho

Toda a gente gosta de falar sobre performance. Ao entrar em 2019 mantém atento ao Code Splitting este será uma prática standard e novas optimizações para imagens irão surgir, como por por exemplo o WebP.

Ps.: As pessoas irão continuar a odiar a ideia de AMP pela Google.

Aqui está o que deves apreender e estar preparado para 2019:

PWA

Aplicações Web Progressivas irão continuar a estar no top em 2019 (e podia fazer parte da seção Desempenho acima) mas continua limitado em recursos mais complexos por exemplo, notificações Push.

Na maior parte do tempo vais estar a utilizar HTTPS, App Shell e Service Workers para recursos offline, segurança, desempenho e para isso deves apreender como construir uma PWA e testar com Lighthouse.

Com o Safari finalmente a adicionar algum suporte a PWA, a utilização de aplicações web progressivas passa a ser uma decisão simples de adotar nos teus projetos. No final do dia, a única coisa que precisas saber para começar é combinar o ficheiro manifest.json com service workers.

Back End

Não te preocupe, o mundo de back end não é tão louco e não se move tão rápido como o front end. Vamos a isso:

HTTPS em todo lado

HTTPS é obrigatório para qualquer site que envia dados do utilizador para o servidor. Google vai te penalizar se não o fizeres, felizmente é muito simples obter HTTPS com HTTPS Everywhere ou algo tipo Caddy.

REST vs GraphQL (não realmente)

RESTful API não vai desaparecer em 2019, vais precisar aprofundar conhecimentos e melhores práticas de implementação com Node.js ou Express.js.

GraphQL está de momento muito na moda e será uma das maiores tendências de 2019, mas não significa que irá ganhar toda a cota do mercado. Apreende que problemas o GraphQL resolve e como podes utilizar com RESTful API para optimização de certas routes (mais sobre isto no fim desta seção).

HTTP2

HTTP2 está a tornar-se mais e mais comum e deves ter já uma ideia de como usar este protocolo para optimizar a entrega dos teus conteúdos aos utilizadores. Também, HTTP3 está já em desenvolvimento por isso mantém-te atente mas para já não deves preocupar.

Infra-estrutura como um Serviço

Construir e gerir o teu próprio servidor está a tornar uma solução rara, aqui está algumas das novas soluções que 2019 tem para oferecer:

  • Digital Ocean  -  para servidores simples.
  • Heroku  –  para servidores simples, integrados ou desenvolvimento.
  • Now  – super simples, para desenvolvimento.
  • Firebase – Para gestão de infra-estruturas e base-dados (especialmente aplicação móveis)
  • AWS  – para praticamente tudo o que precisas sobre servidores e gestão de servidores (mais informação nisto na secção “Outras Tendências”)

Precisas apreender SQL

https://www.hntrends.com/2018
https://www.hntrends.com/2018

Base-dados geridas como é o caso do Firebase, AWS, etc… irão continuar a crescer mas é importante apreenderes SQL. Base-dados como PostgreSQL continuará também a crescer em 2019, enquanto base-dados NoSQL como MongoDB parece estar a cair de popularidade. Deves apreender os prós e contra de cada, afinal, não existem soluções perfeitas para todos os problemas quanto falamos de base-dados. É também uma boa ideia apreender como construir base-dados relacionais de uma forma escalável.

Não te esqueças de análise de pesquisa

Quase não inclui este tópico porque não é o mais necessário, mas análise de pesquisas em geral é uma parte importante da internet e é sempre bom compreender duas das melhores opções disponíveis para Full Stack Developers em 2019:

Apreender um pouco sobre Redis

Apreende um pouco sobre caching com Redis e como funciona o armazenamento in-memory. Caching e armazenamento in-memory é um conceito importante para apreender e aproveitar em 2019 para optimizar as tuas aplicações. Redis é um óptimo ponto de partida para compreender este conceito.

Testar

Apreender os 3 tipos

Muitas pessoas discutam este tópico mas para simplificar, podes simplesmente dividir em 3 tipos:

  • Unit Tests: Teste função a função ou classes, começando por aplicar um determinado valor para obter o resultado.
  • Integration Tests: Testar processos ou comportamento de processos (incluindo os efeitos secundários).
  • End to End (UI) Tests: Testar as ações e reações do utilizador e analisar a aplicação como um conjunto.

Estupidamente simples

Existem muitas opções, mas estas são provavelmente as duas melhores opções para 2019:

  1. Jest
  2. Mocha + Chai + Sinon + Istanbul

Pensa em Jest como uma framework all in one para testes onde não precisas de adicionar diferentes ferramentas e bibliotecas. Se queres algo simples, utiliza Jest. Se queres algo mais customizável o modelar, escolhe Mocha.

Pontos bónus se apreenderes: MocksSpiesStubs, e Snapshot Testing.

Talvez um pouco, mas não muito de End to End

Testes End to end custa imenso dinheiro para implementar, por isso, dependendo da tua situação poderás ou não encontrar esta situação na tua carreira. Em qualquer dos casos, aqui está as melhores opções:

Mobile

Adeus mobile?

https://www.hntrends.com/2018

O mundo do mobile irá ter um 2019 duro. Aplicações não estão a ser descarregadas como antes e no topo de download estão jogos ou aplicações de grandes companhias de tecnologiaa tendência está nas aplicações web progressivas. Por este motivo, para um Full Stack Developers e Mobile Developers, o foco será aumentar a engajamento através de aplicações web progressivas em dispositivos móveis.

Developers para iOS e Android continuam a ser procurados mas a procura começa a cair de popularidade e a mudança devesse a uma forte mudança para o desenvolvimento de aplicações híbridas (ou quase nativas) lideras pela framework React Native. No gráfico acima vais notar que o React Native superou o Swift, a principal linguagem de programação para o desenvolvimento de aplicações para iOS.

Aqui está as frameworks que deves estar atento:

React Native tive um pequeno contra-tempo em 2018 com algumas publicações de grandes empresas a dizer que iriam deixar de utilizar React Native, mas estas, acabaram por adicionar React Native às suas aplicações já existentes.

Flutter surgiu em 2018 como uma solução viável. Mas para já é cedo para dizer se irá sobreviver a 2019. Deves ficar atento, mas para já não tem grandes benefícios quando comparado com React Native para justificar uma mudança em massa. (não inclui Flutter no gráfico acima porque a sua utilização é significativamente inferior quando comparado com as restantes)

Ionic e NativeScript irá continuar a cair em 2019 e é algo que deves ficar preocupado, excepto se tiveres a utilizar Angular.

Por isso… se já utilizas React Native mantém-te a utilizar em 2019.

Ferramentas

NPM packages que deves utilizar

  • Prettier – Focado no que estás a escrever em vez em como estás a escrever.
  • eslint  – Mantém as coisas organizadas.
  • datefns  – Solução leve e uma alternativa ao moment.js.
  • lodash  – principalmente para funções throttle() e debounce().
  • rambda  – Se gostas realmente do teu tipo de programação.

Javascript vs o mundo:

Javascript é sem dúvida a linguagem mais debatida e mais utilizada nos últimos anos. 2018 não foi excepção e o Javascript deu um grande avanço com a popularidade do static typing em comparação com o dynamic typing.

Os concorrentes?

  • TypeScript – É um superconjunto de JavaScript desenvolvido pela Microsoft que adiciona tipagem e alguns outros recursos.
  • Flow – Static type verificador para JavaScript.
  • Reason – Utiliza na sua base eco-sistema JavaScript e OCaml.
  • PureScript – Linguagem strongly-typed que compila para Javascript. Escrito e inspirada em Haskell.
  • Elm – Linguagem funcional, fortemente tipada que possui estruturas de dados imutáveis. Compila para Javascript.

Linguagem Typed Static vs Dynamic é um debate que não terá um fim não cedo. Nenhuma das mencionadas irá reinar sobre o Javascript como a principal linguagem de programação para a web. Contudo, com o Angular e agora Vue a utilizar Typescript e a fazer deste um standard no seu eco-sistema, Typescript irá provavelmente continuar a crescer e ganhar cota de mercado.

Deverás apreender o básico em Typescript e como funciona (entender os benefícios do static types), mas este não é necessariamente a solução para bom código, Javascript pode também ser uma boa solução.

Module Bundlers

Webpack 4Parcel são as ferramentas que irão dominar o ano de 2019. Ambas estão a reduzir na complexidade e a facilitar os Developers com a lógico do “do it for me already” (tal como as bibliotecas de CLIs). Apreende como funcionam, mas tem em conta que CLIs ocupam os primeiro 80% da complexidade quando estás a começar um projeto.

Ps.: Utiliza Rollup se estás a utilizar pacotes NPM.

Bases do CS

Data Structures + Algorithms ❤️

Agora muitos artigos falam sobre modas e todas tem como base a ciência computacional. Este é provavelmente o tópico onde tenho 99,99999% de certeza: As bases do CS serão importante se queres ter sucesso como Full Stack Developer em 2019 e nos anos seguintes. Porque, a base não muda e existe há muitos anos, ao contrário de frameworks que surgem e saem de moda.

Tira algum tempo para apreender Data Structures e Algoritmos. Apreende também alguns conceito em volta de Design de Sistemas e boa arquitetura.

Outras Modas

Containers e Serverless

Containers (popular principalmente pelo Docker) deu-nos um modo de configuração de arquiteturas completamente diferente desde há uns anos para trás. Uma das maiores ideias a surgir com esta moda foi o Serverless. Serverless não significa deixar de utilizar servidores, como sugere o nome, mas em vez disso é focado na ideia de outra pessoa se focar na gestão do servidor enquanto desenvolves a tua aplicação.

Este conceito surgiu em 2017 e continua a crescer em 2018. 2019 será igual com as opções mais comum sendo AWS API Gateway combinado com AWS Lambda (a funcionar como servidor) para a tua aplicação front end.

Platform as a Service / Backend as a Service

Amazon, Google e Azure (e talvez um pouco de IBM) irão lutar pelo mercado dos servidores em 2019. Cada um oferece serviços de gestão.

AppSyncAmplifyApp ServicesApp Engine e outros serviços com pacotes pré-construídos irão continuar a evoluir, mas nenhum deles irá dominar porque Developers tem imensa dificuldades em perder o controlo dos seus projetos. A menos que estejas a trabalhar num projeto pessoal ou pequeno e queres uma solução rápida e fácil.

Em 2019, Azure irá dominar o mercado das empresas, AWS tudo o resto e Google irá controlar o mercado de machine learning. Por falar nisso…

Machine Learning

Em 2019 deves apreender e compreender como podes utilizar Machine Learning através de APIs como as seguintes:

Mais do que Platform as a Service ou Backend as a Service referido na seção acima, as APIs de machine learning e os modelos fornecidos pelas grandes empresas de tecnologias serão uma tendência importante em 2019. Deves aprender como usar alguns deles para projetos no futuro (e não te preocupes, elas simplificam e a base é muito semelhante a outras APIs).

Em 2019, irás ver uma tendência maior na utilização de APIs em machine learning, isto porque a maioria dos Developers ou empresas não tem os recursos ou os dados para criar um machine learning de raiz ao contrário dos grandes gigantes da tecnologia mencionados acima.

Web Assembly

Web Assembly irá continuar a incluir pequenos melhoramentos mas continuará a ser para uma minoria de Developers que precisam (ex.: jogos, processamento de imagem). Vais ficar bem, lê este artigo e saberás o suficiente para quando se tornar mais mainstream nos próximos anos.

O que não deves apreender:

Não me odeies pela lista acima, lembra-te que nunca é má ideia apreender algo novo.

Previsões arriscadas e imprevisíveis

  • Vue nunca irá atingir o nível do Angular e React mas continuará como uma minoria forte.
  • O hype do GraphQL não passará disso. REST continua a ser uma excelente forma de organizar endpoints, enquanto GraphQL apenas irá resolver problemas específicos. Combinar GraphQL com REST para situações específicas será provavelmente a tendência.
  • Menos e menos configuração e tooling: Saber webpack e tooling será menos importante com a popularidade de CLI tools.
  • Web Components não irá crescer e talvez nunca cresça, em vez irá surgir provavelmente algo novo.
  • O crescimento de TypeScript irá abrandar e continuará popular apenas por causa do Angular e grandes empresas.

Não concordas com alguns destas previsões? Facto é que o ser humano está longe de ser bom a prever o futuro… 😉