The 2020 Web Developer Roadmap - Um guia visual para se tornar um desenvolvedor front-end, back-end ou DevOps

Há muitas maneiras de adquirir as habilidades necessárias para se tornar um desenvolvedor.

Existem currículos lineares que ensinam um pouco de tudo - como o currículo de desenvolvimento full stack do freeCodeCamp.

E há listas enormes de habilidades - e às vezes listas de recursos - que você pode usar para "escolher sua própria aventura" por meio do processo de aprendizagem.

Uma das melhores listas de habilidades é o Developer Roadmap de Kamran Ahmed, que ele atualiza regularmente.

Esta não é uma lista comum de recursos. Kamran mapeou meticulosamente todas as habilidades que ele considera essenciais para entrar em diferentes campos de desenvolvimento.

Já escrevi sobre seu roteiro no passado. E para comemorar que todos nós estamos na metade do caminho para 2020, vou compartilhar todo o seu roteiro aqui - todos os três.

Isso mesmo - ele tem listas de ferramentas e recursos necessários para os seguintes caminhos:

  • Desenvolvimento web front end
  • Desenvolvimento web back end
  • DevOps (também conhecido como "confiabilidade do site" - isso é uma espécie de evolução da antiga função de Administrador do Sistema)

As habilidades que todos os desenvolvedores precisam, independentemente de sua especialização

Além desses caminhos, Kamran também recomenda que todos que desejam trabalhar como desenvolvedores aprendam as seguintes habilidades:

Git - controle de versão

Git é um sistema de controle de versão poderoso que a partir de 2020 é usado quase universalmente. Se você não conhece - sim, está relacionado ao GitHub e ao GitLab, e você também pode aprender a usar essas ferramentas.

Uso básico do terminal - A linha de comando Bash, SSH e outras habilidades

Pode ser o terminal em um Mac, um prompt do DOS do Windows ou Bash / ZSH. Observe que, independentemente de qual sistema operacional você usa, provavelmente você deve aprender Linux. Mesmo se você não o estiver usando para seu ambiente de laptop / desktop, quase certamente o usará para servidores.

Estruturas de dados e algoritmos

O currículo do freeCodeCamp cobre isso em profundidade. Você provavelmente vai querer aprender isso resolvendo muitos problemas de algoritmo no freeCodeCamp, CodeWars, Project Euler ou outro site de perfuração. Eu pessoalmente recomendo fazer isso em JavaScript ou Python, mas se você está pronto para um desafio e tem muito tempo disponível, fazer em C não faria mal.

Uma compreensão de como a web funciona: HTTPS e APIs

Existem muitos outros conceitos que você pode aprender. Eu recomendo trabalhar em um bom curso de ciência da computação de nível básico para começar. Aqui estão todas as palestras do curso CS50 de Harvard sem anúncios no canal do freeCodeCamp no YouTube.

Padrões de design, YAGNI, KISS, SOLID

Não acho que os iniciantes precisem de um conhecimento profundo sobre isso, mas não faria mal.

Os padrões de projeto são basicamente maneiras testadas pelo tempo de implementar diferentes tipos de sistemas de software e estruturas de codificação. Você pode aprender isso gradualmente à medida que avança.

Quanto à sopa de letrinhas, aqui está o que significa:

  • YAGNI - Ya Ain't Gonna Need It - A filosofia de que a maior parte do código que você acha que precisará escrever e os recursos que precisará implementar acabarão sendo desnecessários
  • KISS - Continue simples, bobo! - Quanto mais simples você manter seus projetos, mais fácil será sua vida no que diz respeito à manutenção.
  • SÓLIDO - Este é um mnemônico para " Responsabilidade única, ‌‌Aberto-fechado, substituição de Liskov, segregação de interface, inversão de dependência". Sim - não são coisas para iniciantes, mas dê uma olhada nisso se estiver curioso.

Roteiro de desenvolvimento front-end da Web

O primeiro roteiro de Kamran se concentra no desenvolvimento front-end da web.

Aqui está seu roteiro de front-end completo:

Minhas ideias sobre o Front End Roadmap

Esta é uma lista sólida de habilidades fundamentais.

Como desenvolvedor front-end, você definitivamente trabalhará com HTML, CSS e JavaScript - muito e muito JavaScript.

As únicas coisas que acho desnecessárias aqui:

  • Pré-processadores CSS. Eles costumam ser necessários, mas o próprio CSS adicionou muitos dos recursos que tornaram esses pré-processadores tão úteis. O freeCodeCamp atualmente ensina Sass, mas também estamos em processo de eliminação disso.
  • Arquitetura CSS: Não acho que isso seja necessário, a menos que o design de sistemas CSS seja uma grande parte do seu trabalho diário.
  • Um pouco problemático: o TypeScript é uma maneira promissora de reduzir bugs e codificar com confiança. Estamos adicionando isso à versão 7.0 do currículo principal do freeCodeCamp. Acho que isso deveria ser ainda mais proeminente no roteiro, mas está lá.
  • O Web Assembly é bom ter na minha opinião. Os desenvolvedores estão começando a fazer coisas interessantes com ela, mas vai demorar um pouco até que essa tecnologia se torne realmente onipresente.

Roteiro de desenvolvimento back-end da Web

O segundo roteiro de Kamran se concentra no desenvolvimento back end da web. Se você combinar isso com seu mapa de front-end, terá um bom caminho para se tornar um desenvolvedor full stack.

Aqui está todo o seu back-end roadmap:

Minhas ideias sobre o Back End Roadmap

Eu concordo com tudo aqui.

Sim, você deve aprender SQL e bancos de dados relacionais

Quero concordar totalmente com sua recomendação de que você aprenda um banco de dados relacional.

Sim - bancos de dados como MongoDB e Neo4j podem fazer muito por você e são mais adequados a certos tipos de aplicativos do que bancos de dados relacionais.

Mas você ainda deve aprender SQL e entender como funcionam os bancos de dados relacionais.

Eu recomendo PostgreSQL (que usamos para vários projetos no freeCodeCamp), mas outros bancos de dados relacionais são muito semelhantes.

Aqui está o curso gratuito de 4 horas do freeCodeCamp sobre SQL, que vai te ensinar o básico.

E se você quiser se aprofundar ainda mais, aqui está nosso curso gratuito de 8 horas sobre design de banco de dados relacional.

Como escolher a linguagem de programação de desenvolvimento de back-end certa

Também quero adicionar uma nota sobre a escolha de um idioma.

Mesmo que existam muitas linguagens - e você pode fazer essencialmente qualquer coisa com qualquer linguagem - eu recomendo fortemente aprender Node.js (JavaScript) ou Python como sua primeira linguagem.

Aqui está um guia detalhado de qual linguagem de programação você deve aprender primeiro.

Roteiro DevOps

Por fim, Kamran aborda como se tornar um DevOps ou Engenheiro de confiabilidade de site. Isso envolve trabalhar com muitos serviços em nuvem e supervisionar a infraestrutura.

Aqui está todo o seu roteiro de DevOps:

Meus pensamentos sobre o roteiro de DevOps

Linux, Linux, Linux.

Além disso, eu recomendaria trabalhar primeiro como desenvolvedor e, em seguida, gradativamente me especializar em DevOps.

Aqui está uma rápida introdução de 30 minutos ao campo de DevOps que deve dar uma ideia melhor se DevOps é algo de seu interesse.

Isso é tudo. O que você acha? Kamran deixou de fora alguma habilidade ou tecnologia essencial? Deixe um comentário e vamos resolver isso.

Além disso, se você tiver quaisquer recursos que funcionaram muito bem para você aprender essas habilidades, compartilhe-os abaixo como um comentário.

Boa codificação!

- Quincy