Como faço para aprender coisas novas
- #Planejamento
- #Produtividade
Aprender algo novo é uma arte individual. Cada um funciona de um jeito. Para mim às vezes um simples hello world não basta, outras é o suficiente.
A ideia nesse post é descrever algumas técnicas que funcionam para mim e como eu me organizo para estudar algo novo e aprender novas tecnologias.
Organização
Para me organizar, ou tentar… Uso um board pessoal no Trello.
A ideia, que serve para mim, é estruturar listas de desejos e atividades voltadas aos meus estudos.
Essas listas vão desde livros que desejo ler até cursos que quero fazer. E quando descubro uma ferramenta nova, um framework novo ou uma linguagem, procuro deixar estruturado e organizado com links de vídeos, cursos, livros ou blogs sobre o tema.
Semanalmente estou visitando esse board para atualizá-lo.
Métodos
Abaixo vou comentar alguns métodos que utilizo no meu processo de aprendizado.
Hello World!
Possuo diversos “hello worlds” no meu Github, diversos mesmo.
Essa é a forma que tenho quando quero estudar alguma linguagem ou framework novo.
Nesses repositórios, tento explorar algumas coisas básicas e procuro estruturar um guia no README. Isso me força a escrever mais Markdown e treinar como documentar projetos.
Esporadicamente faço testes unitários que não possuem nenhum valor ou regra de negócio, apenas a exploração de algumas possibilidades das plataformas.
@Test
public void shouldCreateAHobbitByName(){
Hobbit frodo = factory.getHobbit("frodo"); assertThat(frodo).isExactlyInstanceOf(Frodo.class);
}
Projetos Open Source
Algumas vezes eu consigo contribuir para alguns projetos Open Source que me permitem aprender algo novo também.
Um projeto Open Source permite que você consiga se comunicar com diferentes programadores e praticar como expor a sua opinião e aceitar opiniões contrárias, que são skills importantes além da programação.
O GitHub é a ferramenta para isso. Lá você pode encontrar diversos repositórios, desde frameworks importantes como spring-framework e o laravel, até besteiras como eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee ou AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Abaixo vou listar alguns que contribui recentemente:
opensanca/service-validator
NullSafe and DTO validation for Bean Validation in service layer using Aspect. compile…
github.com
Tradeshift/spring-rabbitmq-tuning
This library makes it easy to configure RabbitMQ for use with Spring — Tradeshift/spring-rabbitmq-tuning
github.com
opensanca/website
Website para divulgar eventos, workshops entre tantas outras sobre o mundo opensource e a vida ativa de TI em…
github.com
opensanca/opensanca_jobs
git clone https://github.com/opensanca/opensanca_jobs.git $ cd opensanca_jobs Your environment variables goes here in…
github.com
PoCs
Provas de conceito, do inglês Proof of Concept, servem para validarmos uma ideia, entretanto, essa técnica é ideal para quando queremos testar uma arquitetura nova ou uma integração entre dois, ou mais frameworks.
Ex.: Você deseja estudar um novo sistema de mensageria, digamos RabbitMQ, logo é possível que você aproveite para estudar uma nova linguagem de programação, um novo framework de uma linguagem que você já domina, ou até mesmo melhorar o conhecimento de um framework que já é de seu conhecimento.
PoCs são ótimas para fazer deep dives, que para mim, funcionam muito bem quando quero me aprofundar em algum conceito.
Ex.: Queria estudar Spring Webflux, então em minha PoC spring-boot-webflux-kotlin explorei bastante a API e os conceitos com testes e exemplos, passando por banco de dados com suporte reativo. De quebra entendi como o spring-webflux faz para tratar todo o workflow reativo a cada request em relação ao spring-web:
Plataformas de Cursos On Line
Por muito tempo fui assinante da Alura, mas hoje eu não sou mais membro, nada a reclamar da plataforma, fui perdendo o engajamento em fazer os cursos depois de um tempo.
Deixo aqui uma recomendação da DIO, Digital Innovation One, que possui diversos cursos gratuitos e que tive a oportunidade de gravar algum conteúdo sobre Java e Spring, nos quais tive que estudar novamente alguns conceitos que não visitava há alguns anos.
Nesse momento tenho dado preferência para cursos mais específicos e nesse caso a Udemy poder ser uma excelente opção com preços acessíveis e às vezes por R$ 19,90.
Algo que estou fazendo recentemente: https://www.udemy.com/course/data-structures-and-algorithms-bootcamp
Pensei que seria bom rever alguns fundamentos e reforçar alguns conceitos que tenho. Segui a recomendação de um amigo e comprei esse curso de Estrutura de Dados e Algoritmos.
Comecei assistindo às aulas, mas depois de 3 ou 4 estruturas de dados resolvi voltar e fazer os exercícios que são apresentados em Java. Pensando mais um pouco, tomei a decisão de implementar os exercícios em diversas linguagens diferentes: Java, Kotlin, PHP, Ruby e Go.
Por quê? Pelo simples fato de estudar.
Aqui esta o repo: https://github.com/andrelugomes/data-structures-and-algorithms
O que estou ganhando com isso? Além de rever os fundamentos das estruturas de dados, estou revendo conceitos e detalhes de características específicas em diferentes plataformas, além de rever como organizar projetos nessas plataformas. Ex: Projetos em Ruby usando Bundler… Trabalhar com Benchmarks em Go… Testes unitários em PHP… e por aí vai.
Bom! É isso aí! Espero ter contribuído e estou a disposição para receber quaisquer feedbacks 👍