Recentemente me dei conta que minha vida de programador já tem mais de 20 anos, aprendi muito neste período e gostaria de compartilhar algumas dicas que, se eu soubesse naquele tempo, teria feito toda a diferença na minha vida.

Simplicidade é tudo

Simplicidade é uma das coisas mais difíceis de conseguir. É muito fácil se perder no meio do caminho, o código vai se tornando mais e mais complexo ao longo do tempo. É quando pequenas alterações sem alguns cuidados tornam o seu código um monstrinho pronto para devorar toda a sua produtividade e trazer a qualquer momento os mais estranhos tipos de bugs.

Busque reduzir ao máximo o número de linhas quando você faz qualquer coisa com seu código, seja claro, aprenda que uma função que devemos usar o scroll para entende-la é algo muito errado. Tenha um faro para buscar maus cheiros em seu código e sempre use técnicas de refactoring e TDD.

Procure sempre deixar seu código melhor do que estava quando você iniciou as mudanças nele.

Leia bons livros que tragam fundamentos

Existem problemas que, sem os fundamentos necessários, você não será capaz nem de identificar que aquilo é um problema, como eu disse ali em cima “tenha um faro para buscar maus cheiros”, quando você tem bons fundamentos, você se desvia de uma série de armadilhas. Isso fará você economizar um tempo enorme.

Eu sempre recomendo um livro que foi capaz de mudar para sempre a minha vida profissional fazendo eu dar um salto enorme na qualidade. Recomendo muito que você leia este livro. Cara, ele realmente vai salvar a sua vida e te dar uma visão de código muito diferente.

Mas eu estou desenvolvendo o código aqui, ele é novo, não é um código legado!

Negativo, segundo o genial Michael C. Feathers, código legado é todo código que não existe algum teste automatizado. Somente este conceito faz faz toda a diferença.

Simplesmente leia!

Tenha sempre um objetivo em mente

Uma das coisas que me ajudaram muito ao longo da minha carreira é que sempre que eu resolvi aprender alguma linguagem nova, eu tinha um projeto. Algo que me fizesse resolver um problema específico.

Quando aprendi Visual Basic, ainda criança, resolvi fazer um programa onde eu cadastrava todos os golpes do Mortal Kombat, me recordo de passar mais tempo fazendo aquele programinha do que jogando o jogo em si e foi muito divertido!

Quando aprendi C/C++, resolvi criar um parseador e adicionador de sessões em um arquivo PE. Com isso aprendi realmente o que eram ponteiros, técnicas de debugging, gerenciamento de memória entre outras coisas.

Em suma, tenha um projeto, ele vai te manter motivado e, ao ver seu programa funcionando, mostrará ao seu cérebro que você está indo no caminho certo.

Seja um automatizador neurótico

Automatizar é uma benção que todo desenvolvedor possui e muitas vezes não utiliza. A ideia é simples: automatize tudo o que você gasta um tempo maior do que 3 minutos e você tenha que fazer repetidas vezes.

Isso é muito importante, principalmente quando temos tarefas do dia a dia do desenvolvimento que são feitas manualmente repetidas vezes e não levaria mais do que 5 minutos para criar um script e depois ir melhorando conforme as necessidades.

Diversas vezes vejo desenvolvedores corrigindo um bug e fazendo todo o processo de testes manualmente para verificar e/ou simular o problema. Desenvolver Unit Tests é uma excelente forma de automação, sempre que possível, simule seu bug através de testes automatizados, isso vai te poupar tempo e vai garantir que pelo menos aquele erro nunca mais ocorra no futuro.

Mas não é só isso, pegue tarefas cotidianas e faça de tudo para automatizar. Backup, assinatura de arquivos, builds, instalação de programas, enfim... Automatize!

Alguns exemplos interessantes e até mesmo engraçados podem ser vistos aqui e aqui.

Concluindo

Como tudo na vida, ser programador é tomar decisões para entregar o máximo de valor no menor tempo possível, decisões pequenas e simples, seus fundamentos, seus objetivos e sua capacidade de automatizar fará com que você entregue mais valor em menos tempo com menos dor de cabeça.

Isso fará com que você seja cada vez mais valioso e eficiente no mercado.

Ahh se tivesse entendido isso antes...