A pedido da comunidade fiz uma lista com 50 erros comprovados cometidos por um programador durante sua vida, sendo erros técnicos, falta de conhecimento, uso indevido de código, copy/paste, anti-pattern, alienação ao negócio entre outros. Todos os erros eu mesmo já presenciei e claro, também já cometi alguns.
Sem ordem de importância, simplesmente uma lista:
1 – Sair fazendo.
Quem nunca viu alguém sair fazendo e desenvolvendo um código sem ao menos pensar na solução? Simplesmente já sai programando, sem planejamento e análise mais detalhada. Chega lá na frente muda tudo ou desiste.
2 – Não tem conhecimento total do negócio.
Não tem conhecimento do negócio como um todo, simplesmente recebe uma solicitação e tem uma visão pontual da funcionalidade e não sabe quais são problemas que podem ocorrer mais a frente devido ao negócio.
3 – Não conhece infraestrutura.
Muitos programadores não sabem ou não querem saber de infraestrutura, como funciona basicamente um servidor web por exemplo, como funciona a reciclagem de memória entre outros fatores. Se soubessem o mínimo talvez as soluções de programação seriam diferentes.
4 – Não fala a língua do usuário.
A maioria são extremamente técnicos e não conseguem falar a língua do usuário. Ou seja, podem até entender de programação, solucionar os códigos, mas não conseguem fazer a análise da solicitação do usuário.
5 – Isenção de Culpa.
Programador nunca tem culpa! A culpa é do cara que não testou, a culpa é do cara que pediu que fosse desse jeito, ou melhor, a culpa é do cara que fez o código anterior.
6 – Estima horas somente para desenvolvimento.
A estimativa de horas é baseada na quantidade de vezes que a asa da mosca bate dividido pelos passos que a tartaruga dá em um minuto. A maioria das estimativas não tem fundamento e se esquecem que eles mesmos precisam de horas de análise e testes, além do desenvolvimento.
7 – Medo de mudanças.
Surgiu uma tecnologia nova… “Ai meu Deus do céu! Vou demorar para aprender, é difícil, não vou conseguir entregar…” já se arrepia todo sem ao menos procurar saber o que é. Na maioria das vezes vai ajudá-lo mais ainda, tanto através do conhecimento como a qualidade do seu trabalho.
8 – Achar que o outro é melhor que ele.
O programador sempre acha o outro melhor. Mas ele acaba se esquecendo que o melhor as vezes não é somente conhecimento e sim o pacote todo, comprometimento, responsabilidade, pontualidade entre outros. Relaxa cara!
9 – Quer fazer web com conceitos de desktop.
O programador acha que só o fato de programar em C#, ter mexido com Windows Forms vai conseguir fazer uma aplicação web em MVC por exemplo. Começa a programar usando conceitos desktop e se perde no conceito client/server.
10 – Ciúmes do seu código.
Ai código lindo! Maravilhoso! “Deixa eu ver?” Não põe a mão!!! Não mexi naquela parte do código… Se outra pessoa vai mexer no código que o outro fez sempre é Deus nos acuda, sempre o gestor tem que interferir.
11 – Quer fazer mobile com conceitos de web.
Outra coisa interessante é o programador começa a desenvolver aplicativos mobile com a cara ou conceitos web. Aí percebe que aquilo que ele fez parece uma página web responsiva.
12 – Não usar nenhum design pattern.
Os design patterns foram feitos para serem usados pois foram exaustivamente testados antes de se tornarem um padrão. Então, não vamos inventar a roda. Use design patterns!
13 – Não seguir nenhum arquitetura de software.
Arquitetura de Software? O que é isso? Programadores são arquitetos do seu próprio ego e ignoram o princípio básico da separação das responsabilidades.
14 – Viewstate é a casa da Mãe Joana.
Já vi diversos programadores usarem e abusarem do famoso viewstate do Web Forms, colocando DataSet e quase um banco de dados inteiro lá.
15 – Tentativa e erro, não lê documentação.
Essa é uma coisa interessante. Quem nunca viu um programador tentar, tentar e tentar até conseguir sem ao menos ler a documentação?
16 – Não faz comentários no código.
Sem comentários.
17 – Copia e cola código que nem sabe o que é direito.
Muitos programadores dizem: “Copia e cola aí que vai dar certo!” Ai você pergunta: “Para que server isso?” Resposta: “Não sei, mas funciona!”.
18 – Não segue boas práticas.
Cara, funcionou? É o que importa!
19 – Não adota um padrão ou coerência.
Faz uma coisa em um lugar de um jeito e outra coisa em outro lugar de outro jeto, assim não dá neh!
20 – Não sabe o significado dos erros de exceção.
Exception são hieroglifos!
21 – Não trata possibilidade de referência nula.
Esse é o campeão de erros de programação e pau nos softwares.
22 – Variáveis de classes públicas.
Propriedades foram criadas como acessores à variáveis, então ao invés de deixar uma variável pública, torne-a privada e crie uma popriedade que acesse-a.
23 – Concatenação de string com sinal +.
Usar + para concatenar poucas strings OK, mas um texto gigantesco, ai não neh! É comprovado que o StringBuilder é mais rápido para concatenações.
24 – A não aplicação de IDisposable.
Criar classes sem um IDisposable não é totalmente um erro vai, as vezes a gente esquece!
25 – Deu erro? Põe no Stack Overflow.
Simplesmente ignora o que está escrito, copia e cola e joga no StackOverflow ou Google. Leia o erro porr!!!
26 – Não sabe debugar.
Debugar é magia negra, não mexo com isso aí não…
27 – Deixar de estudar, zona de conforto.
Só faz curso presencial, tem que ter alguém que fique coxeando o cara… toma jeito e vai estudar!
28 – Não saber as premissas da plataforma.
Acredito que o programador deva inicialmente conhecer algumas premissas da tecnologia, linguagem de programação ou plataforma que irá trabalhar, para assim posteriormente iniciar o desenvolvimento.
29 – Dizer não sei.
Acho que esse é o maior problema de um programador, até do ser humano mesmo. Não sabe? Tenha coragem e diga: Não sei!
30 – Resolver problemas paliativamente.
Põe aí e depois a gente vê…
31 – Meter o pau em um código que ele não fez.
Esse código é uma bosta, pimenta nos olhos dos outros é refresco.
32 – A primeira solução é implementada.
Essa é boa, achou a solução implementa! Mas será que é a melhor?
33 – Dizer que é fácil ou rápido.
Dá para fazer tal coisa? Programador responde, isso é fácil fazer… quando vê já passou 1 mês…
34 – Diz que fará uma coisa mas faz outra.
Isso me deixa puto da vida! Acordamos sobre o que tem que ser feito, diz que entendeu e faz outra coisa.
35 – Usa switch/case para tudo
Programação orientada a switch case, já vi código com mais de 20 cases, hard…
36 – Repete código constantemente.
Criar uma DLL de métodos úteis para que né? Melhor replicar o código e mandar bala!
37 – Diz que entendeu mas volta em 5 minutos.
Você entendeu o que tem que fazer? Sim, entendi! Volta em 5 minutos, cara não entendi.
38 – Uso de foreach em grande quantidade de dados.
Usar foreach com uma grande quantidade de dados chega a ser um erro técnico e conhecimento de tecnologia… vamos dar um crédito vai.
39 – Não usa versionamento de código fonte.
Põe o código na rede e está tudo certo… código compartilhado!
40 – Simplesmente faz, não questiona ou sugere nada.
Programador faz, não sabe o que está fazendo, simplesmente faz.
41 – Código orientado a gambiarra.
Gambis é uma solução paliativa para resolver um problema que não tem solução imediata.
42 – Usar try/catch dentro de try/catch ou try/catch em cadeia.
Eu já vi cada cadeia de try/catch que chega a impressionar. Poderia quebrar em mais de um método e até evitar a Cyclomatic Complexitity
43 – Web.config é somente para guardar AppSettings.
Tem mais alguma coisa no web.config além da string de conexão com banco e AppSttings?
44 – Uso excessivo do System.IO.
Usar o disco System.IO para tudo ao invés de usar a memória.
45 – Esquecer o design / UI.
Design é para web designer, não quero nem saber.
46 – Não tratar exceções.
Você sabe que em uma determinada parte do código há grande chance de ocorrer um problema… se você sabe, porque não trata?
47 – Não habilitar cache para arquivos estáticos.
Larga todas as imagens, estilos e scripts sem configuração de cache.
48 – Usar mais de um site ou diretório virtual para o mesmo pool de aplicativos.
As boas práticas dizem para criar um pool para cada site/diretório virtual… mas isso dá muito trabalho neh!?
49 – Não ter perfil para programador.
Programador copiador de código fonte.
50 – Se achar um Deus.
Se achar Deus acima de todos e tudo.