Artigo original: https://www.freecodecamp.org/news/how-to-become-a-full-stack-web-developer-in-2020/

Desenvolvedores para a web full-stack são o canivete suíço do mundo da programação. Ter essa designação significa que você pode produzir soluções de ponta a ponta, um conjunto de habilidades altamente comercializáveis e ágeis. O que, no entanto, é realmente necessário para alcançar esse status?

Seja você novo, experiente ou especializado em uma das pontas da stack, há muito o que digerir aqui. Sinta-se livre para mergulhar fundo desde o início ou para pular direto para o tópico no qual você precisa de mais ajuda.

Primeiro, o que realmente torna um desenvolvedor full-stack?

É divertido e está na moda dizer que qualquer desenvolvedor de front-end é um desenvolvedor full-stack (texto em inglês), mas ser capaz de pôr um site no ar através do Netlify não o torna full-stack.

Não se sinta desencorajado – é só que, sendo realista, essa experiência por si só não será suficiente para justificar o título em sua próxima entrevista. Apesar de você estar tecnicamente criando e implantando seu trabalho do início ao fim, Netlify, Zeit e outros provedores dão a você o poder de fazer isso com suas ferramentas mágicas que removem a necessidade de realizar a maioria das operações da stack.

Não que eu queira desdenhar do que podemos realizar agora como desenvolvedores de front-end. O crescente movimento de compilar e fazer deploy de sites estáticos simplificou esse processo no lado do back-end, com benefícios para todos.

Além disso, com a flexibilidade das diferentes ferramentas disponíveis, como a possibilidade de executar JavaScript no servidor, nossas habilidades podem ser transferidas para mais casos de uso do que nunca.

De onde viemos

O cenário de desenvolvimento para a web está mudando rapidamente. O Wordpress vem sendo o rei do CMS há algum tempo, representando mais de um terço dos sites que usam CMS e ajudando o PHP a ganhar popularidade. Outros, contudo, preferem suas próprias soluções.

wordpress-cms-share
https://trends.builtwith.com/cms

Essas "soluções próprias" representam uma stack da web mais tradicional, como a LAMP. Nesses casos, você tinha servidores da web, geralmente executando algum tipo de sistema de gerenciamento de conteúdo e uma linguagem do lado do servidor (como o PHP), que faria a interface com os bancos de dados e produziria o código que acabaria por ser entregue ao navegador.

Além disso, você pode ter o JavaScript fazendo alguns recursos interativos e CSS gerenciando a exibição da página. Agora, em alguns casos, basta ter um servidor gerenciado com Wordpress para determinados provedores. Outros sites maiores, porém, exigiriam outra equipe para gerenciar esses serviços e o pipeline de deploy para colocar o código em produção.

Onde estamos e para onde vamos

Embora o Wordpress não vá desaparecer tão cedo, as arquiteturas serverless e JAMstack estão ganhando força (textos e sites em inglês). Para quem não está familiarizado, a ideia não é literalmente a de que não existem servidores, mas de usar servidores que são gerenciados para você na nuvem.

Serviços como o AWS Lambda permitem criar uma "função" que processa entradas e saídas simples. Anexe-a ao gateway da API e você terá imediatamente um endpoint com o qual poderá interagir sem precisar gerenciar um servidor.

Outros, como o S3, deixam você despejar HTML, CSS, JS, imagens e qualquer outro recurso estático no armazenamento e servir o site diretamente neles. Nada é processado no servidor, você está simplesmente servindo os arquivos estáticos para o client.

A parte brilhante disso é que o servidor não fica sobrecarregado e normalmente sai bem mais barato. Em muitos casos, você também terá um enorme aumento de desempenho, já que servir um site usando o S3 exigirá menos processamento para enviar a primeira resposta ao navegador, o que pode levar a uma melhor experiência do usuário.

brett-rambo-thumbs-up
Um joinha para uma boa experiência de usuário!

A ideia não é convencê-lo a usar o JAMstack, mas mostrar que o paradigma do full-stack está mudando e vale a pena prestar atenção nisso. Ainda existe uma noção conservadora da diferença no trabalho, mas isso está mudando.

Agora, são as equipes de DevOps que gerenciam recursos na nuvem e deploys. Os desenvolvedores de back-end agora criam APIs e código que fazem interface com serviços usando ferramentas como funções lambda. Os desenvolvedores de front-end trabalham principalmente com Javascript na criação de aplicações em React ou Vue, que acessam os serviços que os desenvolvedores de back-end criaram. Isso pode ou não incluir coisas como CSS, mas é mais um vespeiro discutir sobre em qual título essa tarefa se enquadra "oficialmente" (spoiler: depende da equipe).

Embora ainda haja uma noção de divisão de tarefas, a linha está ficando turva, tornando mais viável expandir o seu foco.

Antes de seguir em frente, vamos falar sobre foco

Pode ser bastante tentador querer mergulhar a fundo e tratar de todo o espectro de um desenvolvedor full-stack, mas há algo que precisa ser dito sobre foco. É a base da expressão "jack of all trades, master of none" (algo como "pau para toda obra, mestre de nada" em tradução livre), em que você tenta aprender um pouco de cada parte do full-stack, mas nunca domina nada de verdade.

Isso pode ser perigoso quando você ainda é um iniciante e está começando a desenvolver seus pontos fortes. Portanto, tente avaliar que tipo de aluno você é e concentre-se no que é importante. Se você estiver tendo dificuldades com um currículo muito abrangente, ele não necessariamente vai ajudá-lo a adquirir a experiência necessária para conseguir aquele primeiro emprego ou o emprego dos sonhos que você está buscando.

Uma abordagem diferente seria, por exemplo, ter um foco em particular, mas desenvolver suas habilidades full-stack ao redor desse ponto forte. Você pode ser um desenvolvedor de front-end que pode fazer deploy de suas próprias aplicações da web e constrói seu conhecimento em cima desse conhecimento fundamental.

Além disso, ser um desenvolvedor full-stack não é necessariamente ser capaz de dizer que você conhece as linguagens x, y e z. Entender de programação e conceitos de design de software, bem como ser capaz de enfrentar qualquer desafio pela frente, seja qual for a stack, é o que faz um grande desenvolvedor.

Resumindo, tente descobrir o que é melhor para você e não deixe que grandes ambições atrapalhem o domínio da sua jornada.

mr-miyagi-approves
O Sr. Miyagi aprova

Então, por onde começamos?

Para fins deste artigo, vamos manter as divisões tradicionais que compõem a stack (front-end, back-end etc.). Embora algumas pessoas digam que isso não existe mais (texto em inglês), realisticamente, existe uma infinidade de empregos para desenvolvedores full-stack e, no dia a dia, eles se referem a essas divisões tradicionais. O "desenvolvedor full-stack" definitivamente veio para ficar.

No que diz respeito à stack, tenderemos às arquiteturas serverless/JAMstack, porque elas não param de crescer. Se você as aprender, isso só o tornará mais desejável, com diversos empregos surgindo em torno delas.

boomshakalaka
Boomshakalaka!

Como você notará abaixo, o objetivo não é ser abrangente com todos os tipos de banco de dados e todas as soluções de renderização. Um desenvolvedor forte deve ser capaz de ser flexível com suas ferramentas, se esforçando para entender os conceitos de seu trabalho, em vez de ter a mente fechada e só ser capaz de ser produtivo em um framework.

Em um momento, você pode estar confortável usando React no seu trabalho atual (e está tudo bem!), mas seu próximo trabalho pode ser pesado no Vue, ou ("surpresa!") seu líder de equipe decide reescrever a aplicação com Svelte. Tente entender por que você está usando um framework de interface do usuário em primeiro lugar e como ele está ajudando você a resolver o problema em questão.

Agora, vamos ao que interessa...

Front-end

O front-end de um site ou aplicação geralmente é a interface do usuário com a qual a pessoa que usa seu serviço interage. A linguagem de mais destaque aqui é o Javascript, do qual você normalmente dependerá para usar bibliotecas de interface de usuário, como o React ou o Vue, para gerenciar os componentes do seu projeto.

O uso desses frameworks de IU permite que você crie "componentes", essencialmente blocos de código que acabarão por produzir HTML com a capacidade de criar interações e estados dinâmicos junto com seu código. Isso é muito poderoso e, embora possa haver uma pequena curva de aprendizado no início, fica muito agradável de utilizar depois que você pega o jeito.

Seja você novo na área ou bem experiente, alguma hora você deve se deparar com o jQuery. Embora tenha seus méritos e tenha servido bem à comunidade, os recursos nativos do Javascript cresceram muito e diminuíram a demanda pela funcionalidade que o jQuery era capaz de fornecer. Agora, em vez disso, os desenvolvedores se utilizam dos frameworks de IU e do Javascript nativo.

Por isso, é bom entender o que é o jQuery, mas não recomendo dedicar seu tempo a aprendê-lo a essa altura. O lado bom é que, se você conseguir um trabalho que o use, pode escrever Javascript nativo junto com o jQuery. Então, aprender o Javascript puro é a resposta certa.

Então, o que devo aprender?

Se você realmente está começando agora, dedique seu tempo a aprender o básico do HTML e CSS. Pode não ser tão divertido e atraente como mergulhar direto no Javascript, mas ter uma boa base sobre os fundamentos (texto do autor em inglês) do que faz a web será a chave para começar com o pé direito.

Em seguida, aprenda Javascript. Ele continuará sendo o rei no futuro próximo. O Javascript fornecerá a base de qualquer framework ou biblioteca que você utilizar. Assim, entender os detalhes de como a linguagem em si funciona ajudará a impulsioná-lo em sua jornada para aprender o lado do front-end das coisas.

Isso também vai facilitar a sua vida quando você estiver tentando entender algumas das complexidades dos diferentes padrões e conceitos por trás dos frameworks que você usar.

Falando em frameworks, React e Vue são provavelmente os melhores candidatos, dada a sua popularidade. O React é o mais popular do grupo e vai continuar crescendo. Sua equipe está sempre trabalhando para amadurecer o framework e produzir APIs que ajudarão a criar aplicações para a web modernas e rápidas.

front-end-framework-usage
Estado dos frameworks JS em 2019

Iniciar um projeto com create-react-app ou Gatsby, inclusive, facilita a configuração de uma aplicação em React para que você esteja imediatamente pronto para mexer no código.

Embora haja benefícios em citar pré-processadores de CSS e ferramentas como o Sass, há uma porção de soluções agora para CSS, incluindo o CSS-in-JS.

Embora colocar o CSS dentro do JS tenha seus prós e contras (texto do autor em inglês), não vale necessariamente a pena indicar uma direção específica do que usar, já que depende muito da equipe.

Compreender o básico e o poder do CSS e como usá-lo em sua forma mais básica vai ajudar você a se preparar para utilizá-lo, independentemente do framework.

Recursos

Back-end

No mundo do JAMstack, o back-end geralmente se refere às APIs que nossos front-ends usam para criar experiências dinâmicas ao interagir com os endpoints do client (como os das APIs CRUD). A possibilidade de fazer essas solicitações do lado do client elimina a necessidade de ter que fazer qualquer processamento antes que a página seja servida ao navegador.

Apesar de não ser bom achar que você só pode programar com uma linguagem, ser capaz de escrever em JavaScript dá uma boa vantagem aqui, já que você pode se introduzir aos fundamentos de trabalhar com o lado do back-end das coisas com uma linguagem familiar (ou vice-versa, com o front-end).

O NodeJS é um ambiente de tempo de execução comum, que você encontrará na maioria dos ambientes na nuvem como opção e que dará a você uma experiência semelhante ao que você esperaria em um navegador. A principal diferença é que você não terá acesso a determinadas APIs do navegador nem haverá um objeto Window com suas APIs associadas.

Dito isto, o Python também é outra linguagem popular que está crescendo, especialmente devido à sua popularidade na comunidade de ciência e engenharia de dados. PHP e Ruby, embora sejam ambos válidos e ofereçam opções no mercado de trabalho, não parecem ser tão populares e nem tendem a crescer tanto quanto Javascript e Python.

language-popularity
Linguagens populares no GitHub

Com a linguagem de sua escolha, sua melhor aposta será aprender a criar serviços na nuvem com os quais suas aplicações possam interagir.

Criar um lambda simples com que você possa brincar, seja na AWS, na Netlify ou em qualquer outro provedor de serviços na nuvem, proporcionará uma boa experiência sobre o que você pode esperar ao trabalhar na área.

Mesmo que você não trabalhe diretamente em um lambda no emprego que conseguir, vai poder começar a se familiarizar com conceitos que são fundamentais para se trabalhar com o back-end. Cedo ou tarde, você usará essas funções para se conectar a outros serviços e bancos de dados para criar seus próprios serviços dinâmicos.

Então, o que devo aprender?

Se você já está se empenhando em aprender Javascript do lado do front-end das coisas, continue usando o Javascript para o seu back-end. Rode um lambda usando as funções do Netlify, onde você só precisa se concentrar no código e o Netlify cuida do resto (como compilar e fazer o deploy da função).

Com a sua linguagem de escolha e primeira função, tente começar a trabalhar com outros serviços dentro do seu código para adquirir experiência trabalhando com APIs de terceiros.

Talvez construir um endpoint que possa enviar um tweet usando a API do Twitter (mas não abuse dela). Aprenda a criar um banco de dados e configurar sua função para interagir com ele em um padrão CRUD. Isso dará a você um caso de uso mais realista de como uma aplicação típica pode interagir com um back-end.

Seu objetivo aqui deve ser criar serviços com os quais seu front-end interaja por meio de um endpoint para executar operações para a pessoa que usa sua aplicação. A boa notícia é que, dado o crescimento de tecnologias da nuvem, você terá uma porção de opções, algumas delas gratuitas, para começar a brincar.

Recursos

DevOps e a nuvem

O DevOps decorre da necessidade de se criar soluções que suavizam e aceleram o processo de levar o código da sua escrita à sua implementação.

Esse trabalho pode variar de muitas responsabilidades a umas poucas, seja escrever scripts bash para uma solução personalizada, seja escrever um modelo de CloudFormation que cria todos os recursos necessários para que uma aplicação seja executada.

Normalmente, você encontrará isso como parte de uma orquestração maior de fluxos de trabalho de CI/CD que automatizam os processos de compilação e deploy.

continuous-integration-continuous-deploy-1
Pipeline CI / CD

Isso muda constantemente! Dada a febre do serverless, surgiu o framework serverless para gerenciar muito disso para você de uma maneira mais fácil, o que levou a AWS a criar sua própria solução, o SAM. Ferramentas como o Jenkins já existem há algum tempo para parte do CI/CD, mas agora estamos vendo o GitHub, o GitLab e outros provedores de controle de versão fornecerem suas próprias soluções. Vemos também ferramentas, como o CircleCI, que se conectam diretamente ao seu projeto.

Essas soluções, contudo, ainda não são perfeitas – escrever modelos do CloudFormation pode ser assustador. Escrever scripts de automação também não é muito divertido, embora seja supergratificante quando eles funcionam!

O processo, porém, está melhorando. É aí que produtos como Netlify e Zeit entram. Apesar de estarem mais enraizados no lado da hospedagem estática, onde você compila sua aplicação e a despeja no armazenamento, suas ofertas estão crescendo, como as Funções da Netlify, que não passam de AWS Lambdas mais fáceis de configurar e de fazer deploy para um endpoint totalmente funcional (é realmente superfácil).

Então, o que devo aprender?

Se for a primeira vez que você configura esse tipo de coisa, comece com o Netlify. Configure uma aplicação do React ou mesmo apenas um arquivo HTML simples em um repositório do GitHub, conecte-o a uma nova conta do Netlify e veja o deploy acontecer.

netlify-setup
Configuração fácil com Netlify

A partir daí, ou se você já tiver um pouco de experiência, comece a pesquisar sobre o que está acontecendo internamente. O Netlify, provavelmente, está pegando seu código, executando os comandos que você configurou (como yarn build) em um ambiente virtual, despejando os arquivos gerados em algum armazenamento, como o S3, e colocando uma CDN, como o CloudFront, na frente para servir de endpoint.

Primeiro, tente fazer isso manualmente do seu computador, usando o AWS Console e sua CLI e, em seguida, escreva um script para automatizar todo o processo de integração com o Circle CI em seu projeto no GitHub em vez do Netlify para que o deploy realmente aconteça no AWS.

Indo mais além, você pode criar serviços para fazer interface com o seu back-end. Você tem um banco de dados que seus serviços usam? Você pode automatizar a criação desse banco de dados usando CloudFormation ou scripts bash.

Tratar sua infraestrutura como código, com recursos descartáveis e facilmente recriáveis, ajudará você e seus projetos a se tornarem mais flexíveis e a terem uma melhor capacidade de voltar a funcionar em caso de falha.

Tudo isso vale para qualquer provedor de nuvem ou CI/CD, não apenas para a AWS e o Circle CI. Escolha sua ferramenta de nuvem e fluxo de trabalho favorita e mande ver. A questão é começar a observar as necessidades do seu projeto e descobrir o que realmente está acontecendo nas partes automatizadas da stack. Assim, você vai aprender mais e se tornará mais criativo para lidar com necessidades do seu projeto.

Recursos

Design

Sim, você deve entender o básico de design. Não, você não precisa ser um designer.

Há muitos aspectos do design que acelerarão suas habilidades como desenvolvedor. Todo mundo sabe que designers visuais e de experiência do usuário fazem mágica, mas ter um entendimento básico pode impedir que sua aplicação se torne uma grande decepção.

pied-piper-user-interface
A aplicação fictícia Pied Piper deu ruim por causa de uma má experiência de usuário

Todos no processo de desenvolvimento estão trabalhando em direção a uma meta que afeta um usuário final de uma forma ou de outra. Ser capaz de entender quais necessidades seu trabalho está tentando resolver e como isso afeta os usuários ajudará a equipe como um todo a desenvolver uma solução final mais abrangente.

Considere um desenvolvedor de back-end criando uma API para permitir que alguém gerencie usuários em uma aplicação. Os requisitos da API são bastante enxutos e incluem apenas o nome do usuário. Fornecer isso como um único campo "nome" em vez de "nome" e "sobrenome" pode não ser a solução mais intuitiva para a maioria, mas pode ser um descuido que complica como o desenvolvedor do front-end expõe isso na interface do usuário, o que tornaria difícil para o desenvolvedor exibir ou poderia confundir o usuário final que está consumindo o produto.

Além de tudo isso, o design pode impactar diretamente a conversão. Se você estiver desenvolvendo na área de comércio eletrônico, fazer um botão que não se parece com um botão pode impedir que as pessoas adicionem um produto ao carrinho. Isso, é claro, impedirá uma compra, o que significa receita perdida. Entender como humanizar a interface do usuário, mesmo em um nível básico, pode literalmente gerar mais dinheiro para o seu projeto ou, pelo menos, ajudar as pessoas a usá-lo com mais facilidade.

Mais importante do que isso, é importante que seu site seja acessível. Muitas pessoas têm necessidades diferentes, seja porque elas não podem ver cores do mesmo jeito ou porque não podem ouvir os sons que sua aplicação produz. Você precisa reconhecer as necessidades alheias e tentar criar um design de tal modo que sua aplicação seja acessível a todos.

Então, o que devo aprender?

Embora eu não espere que você faça um curso inteiro para isso, tente ser consciente e curioso. Talvez, da próxima vez, não pule aquele artigo de design que você viu aparecer no Twitter do freeCodeCamp.

Ao criar soluções, tente imaginar como seu trabalho será usado. O que os outros desenvolvedores da sua equipe precisarão na sua API? O que as pessoas que usam sua aplicação precisam na sua interface?

Você também pode tentar se inspirar no que os outros estão fazendo em seu espaço. Que aparência você espera que uma aplicação tenha ao fornecer funcionalidades semelhantes? Isso não é licença para copiar ou roubar, mas é bom entender as necessidades que a solução está resolvendo. Reflita no motivo do botão Adicionar ao Carrinho ser tão grande, por que estão deixando os usuários darem zoom em uma foto de produto ou como você pode tornar o design de uma tabela um pouco mais utilizável.

dribbble-table-design
Design de produto "tabela" no Dribbble

Quanto à acessibilidade, tente aprender o básico. Há cada vez mais recursos disponíveis para ajudá-lo a entender as necessidades das pessoas. Tente entender quais deficiências existem e como elas podem afetar o uso da sua aplicação. Quem sabe, você poderá até encontrar alguns padrões comuns de como lidar com essas questões.

Na maioria das vezes, não é muito difícil incorporar essas questões. Se você adquirir o hábito de fazer isso desde o início, nem vai pensar sobre o assunto na próxima vez em que você construir uma aplicação.

Recursos

Outras coisas se você está apenas começando

Muito deste artigo pressupõe que você já domine alguns conceitos básicos, como entender o que é o Git e o controle de versão ou simplesmente configurar o editor de código. Se você está mesmo começando só agora, vai ser útil ter pelo menos uma compreensão simples desses conceitos, porque vai ficar cada vez mais desafiador sem eles.

Também é preciso falar sobre aprender a usar o terminal. Pode ser assustador não usar uma GUI quando se está começando, mas uma vez que você começar a se acostumar, vai descobrir rapidamente que será mais produtivo usando um terminal, e, de qualquer maneira, muitos projetos exigem o uso do terminal.

Então, o que devo aprender?

Primeiro de tudo, configure seu editor de código. O Visual Studio Code está em alta agora, mas há outros que o servirão bem, dependendo de suas preferências, como o Atom ou o Sublime Text. Você também vai encontrar IDEs baseados na nuvem, como o Repl.it, ou pode começar com uma barreira de entrada mais baixa, brincando no CodePen ou no JSFiddle.

visual-studio-code-so-hot
O Visual Studio Code tá pegando fogo agora

De qualquer modo, assim que estiver pronto para programar, você vai precisar entender o que é o controle de versão. O Git é o maior representante disso no momento. O Git é uma ferramenta poderosa que permite rastrear alterações no código e se tornar mais produtivo colaborando com outros desenvolvedores.

Familiarize-se com alguns dos comandos básicos do Git, como adicionar novas alterações, bem como o que são as branches e como usá-las. O mundo do Git é enorme, você não precisa dominá-lo imediatamente, mas logo vai aprender que há uma quantidade infinita de coisas novas para aprender em sua jornada para dominar o Git.

Muitas ferramentas que você vai usar, como o GitKraken, têm interfaces gráficas disponíveis, mas elas ainda são um pouco limitadas no que podem fazer. Aprender a lidar com os terminais padrão na sua máquina ou baixar outras opções, como o iterm2 (minha preferência) ou o Xterm.js, valerá mais a pena. Bônus: você vai se sentir como um hacker dos filmes toda vez que usá-los (ou será que sou só eu?).

hacking-swordfish
Hugh Jackman hackeando em Swordfish

Recursos

Outras coisas se você estiver procurando por mais

Existem muitas outras coisas em que você pode se aprofundar. Lembre-se de não dispersar o seu foco e tente não se sobrecarregar. Se, no entanto, estiver se sentindo confiante com a sua situação, há alguns outros conceitos que ajudarão você a enfrentar desafios no mundo real.

Testes e as diferentes metodologias

Escrever código é uma coisa, mas ser capaz de configurar testes eficazes solidificará o seu código e evitará que bugs apareçam. Você não quer perder seu tempo no futuro ou mesmo perder a renda do seu produto quando o site cair. Aprender a escrever testes e as diferentes abordagens é importante para solidificar seu código.

Ferramentas do navegador, como o Chrome DevTools

Uma das ferramentas mais poderosas que você pode ter ao depurar sua aplicação, na minha opinião, é ser capaz de fazer isso no navegador.

Seja observando como o DOM está sendo renderizado, mexendo no CSS (texto em inglês) ou depurando suas solicitações de rede, você aprenderá rapidamente a economizar tempo e identificar mais facilmente de onde o bug está vindo.

HTTP e como depurar solicitações no painel de rede

Já que a web é baseada na internet, sua aplicação acabará fazendo solicitações para outros servidores. Quando isso acontece, entender os gargalos de solicitação ou simplesmente como uma solicitação está sendo feita pode ajudá-lo a entender por que sua aplicação parece lenta ou por que o botão Salvar não está funcionando.

Ter uma compreensão básica de como as solicitações funcionam e de como visualizá-las para depuração ajudará muito na sua jornada.

Software de código aberto e gerenciadores de pacotes

Aqui, o assunto não é tanto sobre uma habilidade ou ferramenta para aprender, mas um modo como o software é distribuído. Ao começar a criar soluções com código, você logo perceberá que muitos de nós dependemos de pacotes de código aberto. Na maioria das vezes, é através do npm, se estiver escrevendo em Javascript, o que nos ajuda a sermos mais produtivos, já que não precisamos reinventar a roda toda vez.

Passe algum tempo entendendo o conceito de código aberto e até considere retribuir colaborando no seu projeto favorito. Dar uma mão é geralmente muito bem-vindo, além de ajudá-lo a ganhar experiência, e você pode até mesmo ganhar brindes no seu primeiro pull request aprovado (texto em inglês)! Porém, seja respeitoso! Há uma pessoa de verdade do outro lado da solicitação também.

O que mais?

Esta lista pode não acabar nunca, pois o mundo da programação é imenso. O que mais você acha que é importante na jornada para se tornar um mestre do desenvolvimento? Envie um tweet ou mensagem direta para o autor se acha que ele deixou passar algo importante!

Você está com tudo! Hora de unir todas as pontas

Dada toda a experiência que você terá acumulado com o que vimos, você já deve ser capaz de criar uma aplicação inteiro do início ao fim sozinho. Você tem ideia do poder que tem?

thanos-glove-1
Thanos preparando a manopla

É aqui que a diversão começa. Tente criar uma aplicação do zero – não importa o que seja, basta criar algo. A melhor coisa que você pode fazer para aprender é ganhar experiência fazendo. Não importa se é um dos milhões de tutoriais de listas de tarefas por aí ou se vai se ensinar a programar construindo uma das maiores redes sociais, como o criador do Instagram (texto em inglês).

A partir daqui, você deve ser capaz de criar:

  • Um front-end de aplicação da web que é executada no navegador
  • Serviços de back-end para os quais sua aplicação da web pode fazer solicitações por meio de endpoints
  • Escrever um script para se conectar a uma ferramenta de CI/CD para automatizar seu processo de compilação e deploy
  • Bônus: tomar boas decisões sobre a aparência da sua interface para que as pessoas possam usá-la bem!

Vá em frente e desenvolva! Compartilhe com o autor sua jornada na programação no Twitter usando a hashtag #codejourney. Adoraríamos de saber mais sobre o que você passou, o que construiu ou para onde está indo e o que quer construir.

Siga-me para mais Javascript, UX e outras coisas interessantes!