Desafios


Roadmap - comece por aqui

  1. Antes de começar um desafio em uma determinada linguagem de programação, é necessário antes aprender o bêábá dela. Isto é, como a linguagem funciona, sua syntax, sua semântica e toda a estrutura inicial necessária antes de iniciar qualquer projeto. Pensando nisso, recomendamos que você assista aos vídeos da Ellen Körbes - Go Aprenda a Programar disponível gratuitamente. Este curso é baseado no curso do Todd Mcleod,chamado Learn How To Code: Google's Go (golang) Programming Language disponível na plataforma Udemy.

    O curso em sí já oferece exercícios que são importantes no processo de aprendizagem. Portanto, se quer começar um desafio, recomendamos que comece por este! Faça os exercícios propostos no curso da Ellen. Após a resolução dos exercícios, poderemos nos reunir online afim de tirar dúvidas, sugerir outras resoluções e compartilhar conhecimento.


100DaysOfCode

Se você já tem alguma experiência na linguagem GO e quer partir para um desafio ainda maior, talvez seja interessante partir daquí. Você já ouviu falar da hashtag #100DaysOfCode? Este desafio foi criado por Alexander Kallaway um desenvolvedor Russo que costumava em seu tempo livre criar grupos de estudos chamados freeCodeCamps para incentivar o aprendizado em grupo.

O desafio do #100DaysOfCode consiste em desenvolver por 100 dias em intervalos diários de no mínimo 1 hora. Alex amadureceu a ideia e escreveu regras explicando o desafio e se comprometendo publicamente com o projeto. Ele esperava que algumas outras pessoas se juntassem ao desafio.

Hoje milhares de pessoas seguem esta hashtag afim de desenvolverem nas mais diversas linguagens de programação e com o mesmo propósito: aprender. Da mesma forma, hoje existem diversos sites que seguem instruções independentes para o mesmo desafio. Pensando nisso, tomamos a liberdade de escrever algumas regras afim de lhe instruir caso você ache interessante fazer este desafio pelos próximos 100 dias:

Nota: as regras aqui apresentadas, são apenas um caminho do qual você poderá seguir para cumprir seus objetivos em aprender Golang. Caso estas regras não façam sentido para você, sinta-se a vontade em faze-lo da maneira que desejar.

Instruções:

  1. Comprometa-se a desenvolver algo por no mínimo 1 hora todos os dias pelos próximos 100 dias.
  2. Crie um repositório no Github e registre lá todas as suas atividades.
  3. Procure seguir boas práticas com o git. Recomendamos que você siga o padrão git flow.
  4. Tweet o seu progresso todos os dias ou registre este progresso em algum lugar (github por exemplo).
  5. O tempo gasto com tutoriais, cursos on-line e outros recursos semelhantes NÃO conta para esse desafio. Busque desenvolver códigos reais em projetos reais.
  6. Se por algum motivo você perder alguns dias, acrescente mais horas durante os próximos dias afim de repor os dias perdidos.

Abaixo estão alguns projetos open source interessantes escritos em Go que precisam de ajuda e que você poderá acolhar para o desafio:

  • Gitea é um projeto open source git simples, rápido de hospedar e objetivo. Gitea é uma ferramenta assim como gitlab, gitbucket que atende muito bem a grande maioria do que a gente precisa no dia-a-dia.
  • Hugo é um framework web para construir páginas estáticas em Golang. Inclusive, este blog é desenvolvido em Hugo!
  • Maattermost é uma alternativa open source escrita em Go para o tão conhecido Slack.
  • Jaeger é uma plataforma de rastreamento distribuído (tracing).
  • Dep é uma ferramenta de gerenciamento de dependências para o Golang.
  • Micro é um poderoso e leve editor de texto que pode ser configurado para digitação de textos em geral, ou programação. O Bruno Rocha do canal Codeshow, publicou um vídeo ensinando a usar esta ferramenta.
  • Taskflow crie build pipelines em Go.

Caso deseje explorar mais projetos, acesse o Codetriage.com ou o Awesome Go.


Dicas para não procrastinar

Talvez o maior desafio do #100DaysOfCode, seja justamente ter disciplina para manter o tempo que você determinou para dedicar-se ao desafio diariamente. Pensando nisso, compartilharemos com vocês alguns artigos que trás orientações de como podemos nos organizar a cerca deste assunto: