De Padawan a Jedi
por Rodrigo Allemand em Aug.10, 2009, como Desenvolvimento
Recentemente um desenvolvedor da minha equipe e eu estavamos conversando sobre como dar soluções bem feitas. Ele se queixava de demorar muito para achar uma solução, construindo e re-construindo por muitas vezes um determinado pedaço de código até chegar a uma solução realmente boa. Refactoring é a saida para um bom código, mas existem outos pontos de falha na sua maneira de programar.
O conhecimento hoje é uma jóia que está a apenas alguns cliques de todos nós. Hoje em dia se aprende desde a fazer arroz a até uma bomba nuclear. Mas como adquirir conhecimento na nossa área? Como programar melhor? Como otimizar o seu tempo de desenvolvimento? Muitas dessas respostas estão a disposição de todos os programadores desde o inicio do ano 2000, numa das melhores -senão a melhor – compilações de boas práticas para a área de desenvolvimento de software.
Trata-se do livro The Pragmatic Programmer, From Journeyman to Master, de Andrew Hunt e David Thomas. Eu já li o livro pelo menos umas duas vezes (falando nisso, preciso entregar o livro ao dono!) e recomendo a quem não leu ainda, seja ele junior ou sênior.
O livro traz uma série de dicas sobre como se tornar um bom programador. Segue um pequeno resumo.
- Preocupe-se em fazer um código bom
- Pense!! Critique o seu trabalho
- Dê opções, não dê desculpas.
- Conserte falhas ao encontrar a falha
- Seja um catalizador de mudanças
- Lembre-se o ‘porquê’ do projeto
- Faça da qualidade um requerimento
- Invista regularmente no seu portifólio de conhecimento
- Analise e critique o que você ouve e vê
- É o que você fala e COMO você fala
- DRY – Don’t Repeat Yourself
- Faça facil para ser reutilizavel
- Elimine efeitos entre coisas não relacionadas
- Não existem decisões finais
- Use traçantes para achar o alvo
- Prototipar para aprender
- Programe para o problema do domínio usando a linguagem do domínio
- Estime para evitar supresas
- Itere o cronograma com o código
- Deixe o conhecimento em arquivos textos
- Use o poder das linhas de comando
- Use BEM apenas um editor
- Sempre use um controlador de versão
- Resolva o problema, não a culpa
- Não entre em pânico ao debugar
- O problema normalmente não é no ’select’
- Não assuma algo, prove!
- Aprenda uma linguagem de manipulação de texto
- Excreva código que escreva código
- Não, você não pode escrever softwares perfeitos. Proteja o seu código.
- Desenhe soluções baseadas em contratos
- Pegue os problemas precocemente. Teste desde o inicio.
- Use asserções para prevenir o impossivel
- Use exceções apenas para o excepcional
- Termine o que começou
- Minimize acoplamentos entre módulos
- Configure! Não integre!
- Coloque abstração no código e detalhe no metadata
- Analise o workflow para melhorar a concorrências
- Desenhe usando serviços
- Sempre desenhe pensando em concorrência
- Separe a visão do modelo
- Desenhe e conheça o fluxo da informação
- Não programe por concidência
- Estime a complexidade dos seus códigos
- Teste as suas estimações em unidades reais
- Refatore frequentemente, agora e sempre!
- Desenvolva para os testes
- Teste o seu software, ou os usuários testarão
- Não use geradores de código que você não entenda o que foi gerado
- Não apenas leia os requisitos. Mergulhe neles. Escave eles!
- Trabalhe com um usuário para pensar como um usuário
- Abstrações sobrevivem mais do que os detalhes
- Crie um glossário de projeto
- Ache, pense e pese as ‘necessidades’
- Comece quando estiver pronto!
- Algumas coisas são melhores prontas do que descritas
- Não seja escravo da formalidade
- Ferramentas caras não produzem as melhores arquiteturas
- Organize o time por funcionalidades, e não por funções.
- Automatize o que puder ser automatizado.
- Teste frequentemente e automaticamente
- Só está pronto quando o teste roda com sucesso
- Use sabotadores para testar o seu teste
- Não teste apenas o código. Teste as situações do domínio
- Ache erros apenas uma vez
- Escreva documentos com os mesmos princípios que vc escreve código
- Não separe tanto a documentação do código
- Exceda a espectativa do seu cliente
- Assine o seu trabalho
PS: Qualquer duvida, só comentar que eu detalho os itens.
Comente e Recomende!!