Seja Um Programador Melhor: 10 Repositórios SENSACIONAIS no GitHub (Tudo Open Source!)

Filipe Deschamps
9 min readNov 13, 2020

--

Eu nunca vi uma lista que agrega tantos repositórios úteis do Github e que tratam desde: 1 — dicas pra conseguir passar em entrevistas de emprego pra engenharia de software de empresas como Google, Microsoft, Facebook e Amazon; 2 — listas enormes de tutoriais para você construir por conta própria o seu, por exemplo, sistema operacional ou sistema de busca; 3 — uma lista monstruosa de livros gratuitos; 4 — uma série APIs públicas, grátis e sensacionais pra você usar nos seus programas; e muito mais!

Clique no play acima para ver sobre o tema deste artigo em formato de vídeo, caso seja da sua preferência.

O massa é que essa lista foi indicação de um queridão seguidor do meu canal do YouTube chamado Paulo Camargo, então muito obrigado Paulo!

E de fato são repositórios muito "delicinha" e essa matéria/artigo foi escrito pelo Simon Holdorf. Então agora partiu destacar o que tem de mais legal nesse artigo começando pelo:

Repositório #1: Construa suas próprias coisas

https://github.com/danistefanovic/build-your-own-x

O nome original desse repositório é “Build Your Own X” e isso significa “Construa o seu próprio X”, onde o X significa coisas como o seu próprio sistema operacional como eu comentei antes, mas tem muitas outras coisas legais e mais acessíveis que eu vou falar sobre mais para frente, mas eu quero antes dar destaque pra uma imagem sen-sa-ci-o-nal que colocaram no topo do repositório:

É uma imagem com uma frase escrita pelo físico Richard Feynman onde ele diz que “O que eu não consigo criar, eu não entendo.”

Caaara! Ler essa frase acendeu um fogo interno dentro de mim em um nível inédito e isso foi muito especial porque naquele exato momento, eu estava justamente aprendendo a programar um dos itens desse repositório que é sobre construir o seu próprio renderizador 3D, mais especificamente o “Raycasting” que foi utilizado em jogos como “Wolfenstein 3D” e turma, é delicioso você digitar linhas de código que você compreende e que começam a montar imagens 3D na tela.

Então eu prometo para vocês que, assim que eu finalizar todos os meus estudos sobre esse assunto, eu vou construir a maior playlist de vídeos do mundo sobre Raycasting. Do mundo mesmo! Não vai ter pra gringo, não vai ter pra ninguém! Vai ser tudo feito em português e a didática que eu quero usar vai ser inédita. Eu quero desenvolver uma capacidade computacional dentro da sua cabeça que você vai olhar pra outros assuntos do dia a dia, tipo fazer uma rota de autenticação num serviço web, e vai pensar:

“Poxa, mas é só isso? Não da pra pôr um renderizador 3D aí no meio não?”

Não, não dá! Por favor não faça isso!

Mas se você tiver interesse em chegar nesse nível de vontade, se certifique de estar inscrito no meu canal do YouTube para quando eu anunciar essa série, fechado?

E voltando para o primeiro repositório, ele é bem simples e direto, então passando pela apresentação inicial e índice, os tópicos e os respectivos links começam a ser listados e temos, por exemplo, uma seção para Renderizadores 3D, construir o seu próprio client de BitTorrent ou Blockchain, ou emulador de Gameboy ou Mastersystem, ou seu próprio framework frontend (porque a gente tem poucos no mercado… COF!), seu próprio jogo em diversas linguagens (C, C++, C#, Go, Java, JavaScript, Lua, Python, Ruby, Rust), sua própria Rede Neural também em várias linguagens, engine para simulação física, sua própria linguagem de programação e compilador (baita tópico avançado), seu próprio editor de Texto e também tópicos não categorizados como um que é um vídeo sobre como fazer uma inteligência artificial para jogar Tetris em JavaScript.

Enfim, é muita coisa massa e com certeza esse repositório vai se tornar fonte de inspiração pra eu aprender tópicos avançados e depois compartilhar esse conhecimento em forma de vídeo no canal e artigos aqui no Medium.

E se você acredita estar muito cru para colocar a mão na massa e quer estudar um pouco mais não tem problema. É por isso que a gente tem o:

Repositório #2: Livros Gratuitos de Programação

https://github.com/EbookFoundation/free-programming-books

Esse repositório vai além de somente livros. Ele apresenta também cursos, podcasts, lista de exercícios e programação competitiva. O mais massa é que tem uma seção exclusiva para conteúdos brasileiros!

Se a gente navegar na parte de livros, tem uma seção específica para materiais em Português/Brasil, e o índice de linguagens de programação é enorme! Dentro da seção Java, por exemplo, tem coisas da Caelum, que é a empresa irmã da Alura. E entrando na parte de “Java e Orientação a Objetos”, a quantidade de conteúdo do livro é monstruosa, e contém um índice enorme que cobre muita coisa mesmo.

O legal é que se você está procurando formas para contribuir no mundo open source, enviar um Pull Request sugerindo novos links para esse tipo de repositório é uma forma fantástica de colocar o pé na água nesse assunto.

Se você acha que já está preparado pra isso e está mais a procura de um emprego, chegou a hora do:

Repositório #3: Universidade de Entrevista de Programação

https://github.com/jwasham/coding-interview-university

O nome é meio estranho né, “Universidade”… Mas é por conta da quantidade de conteúdos organizados neste repositório que vão preparar você para peitar um emprego em empresas do porte do Google, Facebook, Amazon, Microsoft e outras. A estratégia do autor neste repositório foi de anotar nele as coisas que ele estava estudando e, depois de seguir o próprio plano de estudos, ele mesmo conseguiu um emprego na Amazon.

A boa notícia é que se a gente navegar nas traduções, já tem o material em Português Brasileiro. E turma, tem muito material legal, apesar de que vários apontam para outros conteúdos em inglês, então eu lhe dou meu apoio total para aprender inglês o quanto antes porque é muito importante na nossa área.

E super conectado com “se preparar para uma entrevista de emprego” e também conseguir se virar dentro de empresas que têm uma infraestrutura mais complexa e cheias de serviços malucos, chegou a hora do:

Repositório #4: System Design Primer

https://github.com/donnemartin/system-design-primer

O nome é meio maluco mas são recursos para você aprender a construir sistemas de larga escala, ou seja, aplicações com uma arquitetura e infraestrutura pra aguentar muita carga, e esse tipo de tópico é apaixonante!

No repositório você vai encontrar arquiteturas de sistemas inteiros como o do Pastebin.com ou até partes mais específicas como a timeline do Twitter e Feed do Facebook, como fazer um crawler escalável, ou como fazer um sistema usando a AWS que escale para milhões de usuários.

Além desse repositório ser ótimo para aprender, esse tipo de conhecimento pode ser usado em entrevistas, como eu já presenciei e como eu já apliquei, dependendo da área em que pessoa ia trabalhar, e é fundamental você aprender coisas assim pra se virar dentro da infraestrutura da empresa na qual você trabalha ou quer trabalhar um dia.

Já o início do repositório tem um diagrama com coisas muito legais como por exemplo um serviço web que separa o volume de escrita, que é quando algum usuário está enviando alguma informação ao seu sistema e, por exemplo, fazendo um POST para se cadastrar nele e então ele envia esse volume para uma API que tem acesso de escrita ao banco de dados master. E outro volume de leitura como, por exemplo, fazendo um GET para pegar os últimos artigos publicados, para uma API que tem apenas acesso de leitura e que consome ou de um cache, ou réplicas do banco de dados de leitura, e essas réplicas são muito mais fáceis de escalar.

E tem muito mais detalhes que vão fazer você conseguir construir sistemas que são muito mais duros na queda, vamos dizer assim.

Mas tão importante quanto se virar com infraestrutura, é saber integrar APIs. Treinar e dominar isso é realmente fundamental. Então chegou a hora do:

Repositório #5: APIs Públicas Gratuitas

https://github.com/public-apis/public-apis

Esse é um outro repositório com muita, mas muita coisa boa e a visão que a gente tem que ter é que é sim possível a gente se integrar em serviços sérios e grandes como o Gmail pra estender com novos recursos, mas também criar pequenas soluções, pequenos utilitários que podem ser remunerados com anúncios.

Por exemplo, um amigo meu lá no passado fez um aplicativo para celular, usando se eu não e engano o Ionic, que pegava a API de um jogo tipo League of Legends e montava toda uma tela com os "champions", ficou muito massinha e ele remunerava o app com anúncios.

E analisando o repositório, turma, tem muita mas muita categoria, de todos os tipos e tamanhos, e dá pra construir muita coisa legal.

Fora APIs programáticas, você encontra também coisas utilitárias tipo uma seção de Fotografia. O índice te leva pra tabela com as APIs dessa seção e mostra qual a forma de autenticação, e algumas APIs nem precisam disso.

Por exemplo, uma API lá tem o nome “Lorem Picsum” (Lorem Ipsum para imagens)… simplesmente genial! E usar essa API para ajudar a montar layouts é muito delicinha! Você pode definir as dimensões das fotos e sempre vai vir uma foto randômica, ou pode usar uma URL especial para pegar o endereço fixo de tal foto que vier, pode também adicionar filtros e deixar a foto preto e branco caso você esteja desenhando um mock, ou borrada para conseguir escrever algo na frente e tudo ficar mais legível, por exemplo.

E turma às vezes como exercício ou portfólio é legal você montar um app em que a pessoa que trabalha com design vai dando swipe e vai aparecendo essas fotos maravilhosas, daí na segunda versão a pessoa pode clicar duas vezes e marcar como favorita e salvar o link dessa foto. E daí na terceira versão essas fotos favoritadas montam um ranking dos melhores achados do mês, e vai saber onde tudo isso vai parar… não é mesmo? Seja um produto massinha em que você ganhe com anúncios, seja uma empresa que adorou o que você construiu por contra própria e quer te contratar pra construir essas coisas lá dentro.

E se você está com dificuldade de construir coisas, ou acha que talvez está muito difícil de resolver uma certa parte do seu código… será que não está faltando ali um algoritmo que cairia como uma luva pra resolver o seu problema?

Não sei, talvez sim e é por isso que temos o:

Repositório #6: Algoritmos e Estrutura de Dados

https://github.com/trekhleb/javascript-algorithms

O nome do repositório original é “Algoritmos e Estrutura de Dados em JavaScript” e aqui vão dois motivos do porquê isso não deveria te inibir se você programa em outras linguagens:

1 — na minha visão o assunto é tão genérico que na maioria dos casos vai servir pra muitas outras linguagens de programação.

2 — Bom, clicando em algum algoritmo, antes de entrar em qualquer código JavaScript, você tem uma explicação genérica da estrutura de dados e logo depois um “pseudocódigo” que deveria ser adaptável para a maioria das linguagens populares do mercado. E claro, por ser um repositório JavaScript, você encontra nos arquivos a implementação de fato, e o massa é que o código está muito bem organizado, claro de ler e ainda traz um monte de comentários adicionais.

E caso o seu inglês não esteja afiado ainda, sem problemas: voltando na página inicial do repositório, tem um link para a versão em português e já tem muita coisa traduzida, e o que não estiver, vai te levar para a versão em inglês.

Sensacional e agora eu vou dar uma passada rápida por cima dos outros 4 repositórios destacados no artigo, começando pelo:

Repositório #7: Oh My Zsh

https://github.com/ohmyzsh/ohmyzsh

O “Z Shell”, ou “Zsh” é um shell Unix e o “Oh My Zsh” é um gerenciador de configurações desse Z Shell. Eu uso e mudou minha experiência de no terminal, deixou tudo realmente muito mais delicinha.

Repositório #8: Gitignore

https://github.com/github/gitignore

Para quem usa Git, esse repositório tem uma infinidade de templates para o arquivo “.gitignore” e por curiosidade é usado no Github.com, naquela parte onde você cria o repositório e pode escolher um “.gitignore” de largada.

Repositório #9: A Arte da Linha de Comando

https://github.com/jlevy/the-art-of-command-line

A promessa do repositório é “Domine a linha de comando, em uma página”, e de fato, está tudo em uma página, e tem até uma versão em português (pelo que vi, bem completa), só faltam as seções específicas para Windows e macOs.

Repositório #10: Roadmap do Desenvolvedor

https://github.com/kamranahmedse/developer-roadmap

Este é um repositório bastante popular e ele te sugere um caminho caso queira trilhar o mundo do Frontend, Backend ou Devops, e dentro de cada um desses mundos ele sugere qual direção percorrer.

Próximo passo

O que acha de receber no seu email, de segunda à sexta, as notícias mais importantes sobre programação e tecnologia, e que para economizar o seu tempo, foram sintetizadas de humano para humano? Olha só que interessante: https://filipedeschamps.com.br/newsletter

--

--