Durante os anos trabalhando com programação, passei por inúmeras situações intensas e difíceis: mudança de carreira, muitos estudos, mudanças de foco e transição para outras linguagens, entre outras. Nesse processo, adquiri uma série de aprendizados, principalmente nos últimos anos.
Compilei aqui algumas dicas que incorporei no meu dia a dia à medida que fui evoluindo na área.
Bora lá?!
Se desafie!
Programar a mesma coisa todos os dias ajuda bastante na absorção de conhecimento, mas não vai te ajudar a evoluir. Tente formas novas ou desafios novos; assim, quando você trocar de emprego ou até de linguagem, já superou diferentes barreiras e desafios. Quando for aprender algo novo, tente praticar com frequência (mesmo que 10 minutos por dia) para te ajudar na absorção. Aproveitando pra dar uma dica: o curso Aprendendo a aprender me ajudou bastante com métodos e formas de melhorar o processo de aprendizagem.
Faça projetos
Bem ligado com a dica anterior, fazer projetos ajuda muito na evolução. Sempre que vou estudar ou praticar algum tema, mesmo que seja ler lendo um livro, artigo ou vídeo, tento bolar um pequeno projeto em que faça sentido usar aquele assunto. Isso melhora muito a absorção do conteúdo.
Não tenha medo de errar
Programadores sempre são "movidos a erro". Toda tarefa começa com algo não funcionando (ou não existindo). Mesmo assim, vários de nós temos medo de errar por diversos motivos, parece que estamos em busca do código perfeito. Não tenha medo de errar e, quanto mais cedo você errar, melhor. Frustrante é passar semanas desenvolvendo uma funcionalidade para, no final, descobrir que ela não funciona da forma como deveria. Saiba que os erros são seus amigos, pois eles te guiam para o resultado do seu problema.
Uma dica secundária sugerida pelo André Kanamura ao ler esse texto também pareceu tão interessante que resolvi incluí-la aqui!
Quando você tem alguma dificuldade, não hesite em perguntar: não existem dúvidas burras. Sua dúvida pode ajudar outras pessoas e a pessoa que vai te responder certamente já teve a mesma dúvida algum dia.
Quebre o trabalho em pequenas tarefas
Algumas tarefas podem parecer complexas num primeiro momento e nem sabemos como começar. Por isso, é muito importante tentar montar alguns passos para atingir o resultado final quebrando em pequenas tarefas. Elas ajudam a te manter motivado com os pequenos sucessos conseguidos ao longo do dia e, quanto mais motivado você está, melhor.
Além disso, é muito mais fácil de ir observando as entregas a cada passo do que demorar alguns dias para desenvolver e, no final, você descobrir que o resultado não era nem um pouco parecido com o esperado.
Essa dica também é muito importante para quem está estudando. Não tente fazer todo o projeto de uma vez, sempre quebre em etapas.
Passos Pequenos
Essa faz um par perfeito com a dica de cima. Vamos começar falando um pouco de baby steps ("passos pequenos"). É o conceito de realizar pequenos incrementos no código, pouca coisa de cada vez e testando o resultado a cada incremento. Desta forma, caso ocorra um erro no processo, sabemos exatamente o que causou e onde devemos corrigir.
Shameless green ("verde sem vergonha") é um termo que ouvi pela primeira vez quando vi alguma das palestras da Sandi Metz (que recomendo para qualquer dev). Escrevemos somente o código mínimo necessário para resolver o problema. Não pensamos no melhor cenário e no primeiro momento não precisamos nos preocupar com DRY, SOLID, melhor uso de orientação a objetos; simplesmente escrevemos um código que satisfaz o resultado.
É melhor entender o problema como um todo antes de escrever código sem duplicações e com alta abstração. Depois, você pode melhorar seu código aos poucos, mas mantendo o resultado proporcionado pela primeira versão.
Se eu pudesse dar apenas uma dica para qualquer pessoa que gostaria de desenvolver software, essa seria ela.
Não complique
Não escreva mais código do que você precisa e muito menos tente prever o futuro. Muitas vezes escrevi código pensando "mas assim é melhor, porque no futuro..." e esse cenário futuro nunca chegou e aquela funcionalidade agora é difícil de manter e modificar. Parece bobo, mas tentar manter o código simples, fácil de manter e lógico é uma tarefa bem difícil no início da carreira.
Ler sobre alguns tópicos como YAGNI e KISS podem ajudar a entender melhor como fazer isto.
Escreva Testes
No início da minha carreira em desenvolvimento, eu subestimava muito o uso de testes e escrever TDD. Fazer ou não TDD é uma questão um pouco pessoal. Acho que todo mundo deveria pelo menos tentar algum dia, mas testes não devem ser subestimados.
Testes automatizados são muito importantes para ter certeza que seu código entrega aquilo que propõe, além da possibilidade de testar fluxos específicos que seriam muito difíceis de simular somente abrindo o programa e usando a funcionalidade.
Pessoas cometem erros e esses erros podem ocorrer por vários motivos: design de tela, performance, defeitos de código (como algoritmos e sintaxe incorretos), entre outros. Por isso testar é importante: podemos entender o comportamento do código e tomar precauções.
Faça parte de comunidades
Eventos de tecnologia são muito legais para conhecer pessoas, aprender mais, fazer amizades, trocar conhecimento e tomar café/cerveja/água.
Também é legal participar de eventos que tem foco em ajudar pessoas a entrar na área ou iniciantes em programação, assim você reforça conceitos e consolida seus próprios conhecimentos, além de contribuir para que mais pessoas desenvolvedoras entrem no mercado.