Chupando menos todos os anos - Jeff Atwood
Eu encontrei este artigo perspicaz.
Eu sempre pensei que chupar menos a cada ano é como os humildes programadores melhoram. Você deve estar insatisfeito com o código que escreveu há um ano. Se não estiver, isso significa: A) você não aprendeu nada há um ano, B) seu código não pode ser aprimorado ou C) você nunca revisita o código antigo. Todos esses são o beijo da morte para desenvolvedores de software.
- Quantas vezes isso acontece ou não acontece com você?
- Quanto tempo antes de você ver uma melhoria real na sua codificação? mês ano?
- Você sempre revisita seu código antigo?
- Com que frequência seu código antigo o afeta? ou com que frequência você precisa lidar com sua dívida técnica.
É definitivamente muito doloroso corrigir erros antigos e códigos sujos que podemos ter feito para cumprir rapidamente um prazo e essas correções rápidas; em alguns casos, talvez seja necessário reescrever a maior parte do aplicativo / código. Não há argumentos sobre isso.
Alguns dos desenvolvedores que conheci argumentaram que eles já estavam no estágio evoluído em que sua codificação não precisa ser aprimorada ou não pode mais ser aprimorada.
- Isso acontece?
- Em caso afirmativo, quantos anos de codificação em um idioma específico se espera que isso aconteça?
Relacionado:
Você já olhou para trás em seu código antigo e fez uma careta de dor?
Momento de Star Wars no código "Luke! Eu sou o seu código!" "Não! Impossível! Não pode ser!"
fonte
Respostas:
Não, mas Chupando diferente a cada ano :-)
Após minhas primeiras críticas, há muitos anos, sofri por falta de convenções de nomenclatura.
Então eu sofri que meu código foi (desnecessário) implementado para ser o mais genérico possível, mas isso dificultou o entendimento e a manutenção do código.
Então aprendi o desenvolvimento orientado a testes, InversionOfControl, que dot net genéricos é onde e muito mais.
conclusão
sofrendo de velhos hábitos ruins diminuídos, mas foi compensado por novos sofrimentos que recebi porque aprendi mais.
fonte
Curiosamente, todos os programadores "rockstar" com quem trabalhei eram extremamente humildes, desejosos de aprender e prontos para admitir que não sabem tudo. Caramba, muitos eram realmente autodepreciativos, pelo menos em momentos de alegria.
Acho que nunca conheci um desenvolvedor que acha que sua codificação "não pode ser melhorada", mas algo me diz que esses caras estariam o mais longe possível da estrela do rock - para dizer o mínimo.
fonte
Os seguintes pontos não são conselhos, mas um registro pessoal:
Eu não aprendi tudo dentro de um ano, tudo leva tempo ...
fonte
Muitas vezes, as pessoas pensam que o bom código acontece de repente, mas para a maioria de nós, meros mortais, o bom código cresce em nossa base de código. Quero dizer, é muito difícil escrever o software perfeito desde o início, pois os requisitos estão constantemente mudando e não somos programadores perfeitos, nem decisões estúpidas são feitas constantemente por gerentes e programadores. Então, vejo cada requisito mudar uma boa oportunidade para refatorar parte do código antigo para um código melhor (e ser pago por isso!) E pagar um pouco da dívida técnica. Como se costuma dizer: "deixe o repositório de código um pouco melhor cada vez que você confirmar o código". Em seguida, seu sistema evoluirá para um sistema mais próximo do ideal.
Não conheço absolutamente nenhum programador que tenha orgulho de seu software, mas que seja bom. Than significa que o programador aprendeu no processo.
Além disso, se você ler o livro "Código Limpo", aumentará seu próprio código "fator de sucção" várias vezes. : D
fonte
Na verdade, tenho os dois lados da moeda para isso.
Por um lado, você olha o código antigo e vê que está cheio de bugs e maneiras complicadas de fazer coisas que são simplesmente realizadas, aproveitando as técnicas e os recursos de linguagem que você não conhecia naquela época.
Por outro lado, você encontra uma solução particularmente elegante para um problema e não pode deixar de dar um sorriso convencido de como era inteligente naquela época.
E então você rola algumas linhas e faz uma careta de horror pelo fato de ter usado o GOTO em C.
fonte
Hmm ... frequentemente fico agradavelmente surpreso com o quão bom é meu código antigo.
Se eu estivesse fazendo isso hoje, muitas vezes escrevia de maneira diferente, mas se tivesse que viver com as limitações da época, não tenho certeza. Quando você pode contar com uma máquina típica com pelo menos alguns shows de RAM, você pode (e geralmente deve) escrever seu código de maneira um pouco diferente do que quando um disco rígido grande tinha 100 megabytes.
fonte
Toda vez que aprendo algo novo, espero que seja todos os dias.
Se eu conseguir implementar o que aprendi, será imediato a partir de quando eu o implementar.
Sim, apenas para (1) Novos recursos, (2) Correções de erros, (3) Nostalgia, (4) Veja como eu resolvi algo, pode ser útil.
Em relação a 1., quando aprendo a fazer algo melhor, sei que alguns projetos mais antigos "poderiam" ter sido feitos melhor. Eu os deixo em paz. Apenas certifique-se de que o próximo projeto seja realizado da melhor maneira. Não me preocupo, a menos que seja um bug real.
fonte
Em outra pergunta , o assunto era sobre as maneiras de avaliar a qualidade do seu próprio código. Uma das minhas sugestões foi revisá-lo em alguns anos, quando sua experiência é muito maior do que quando o código foi escrito. Uma citação da minha resposta a essa outra pergunta está diretamente relacionada à sua pergunta:
Então, sim, na prática, todo código que escrevi se torna insuportável do meu ponto de vista em um ano. E não estou falando sobre código descartável, mas também sobre o código que escrevi com qualidade, capacidade de manutenção e legibilidade em mente. No momento, não havia exceções.
Para responder à sua segunda pergunta sobre a vida útil, isso varia muito. Um código descartável tem uma vida útil de zero segundos : é uma merda logo após você ter escrito, mas não importa. Alguns trechos de código que escrevi eram suportáveis após dois anos , mas precisavam de algumas mudanças cosméticas: um pouco de refatoração, aplicação das regras StyleCop etc. Em média, no meu caso preciso, a vida útil varia entre oito meses e um ano por C # e entre dois e seis meses para PHP.
Eu revisito meu código antigo? Sim, é claro, como todo desenvolvedor, a menos que você não se importe com DRY e reinvente sua própria roda repetidamente. Também há chances de revisar e melhorar o código com muita frequência se você tiver uma base de código comum usada em muitos projetos . Outro ponto é que, se você trabalha em grandes projetos, alguns podem levar anos , então você terá que revisitar o código antigo.
Quando uma pessoa diz que é tão perfeita que não precisa aprender nada, isso significa que ela nem é capaz de entender o quão totalmente burra ela é.
Mesmo se você tiver vinte anos de experiência em computadores / programação, as coisas mudam muito rápido, portanto sempre há coisas novas para aprender e novas técnicas para melhorar o código. Por exemplo, um código C # escrito quando não havia o .NET Framework 3.0 provavelmente pode ser mais legível e melhor com as novidades que temos hoje (incluindo Linq, contratos de código etc.), e isso, mesmo que o código antigo foi escrito pelo desenvolvedor mais inteligente.
fonte
Isso acontece com bastante frequência quando estou olhando o código e me perguntando: "O que eu estava pensando quando escrevi isso?"
Geralmente, há aprimoramentos o tempo todo, pois às vezes uma nova idéia para organizar o código, estilizá-lo ou algo mais virá a mim e, embora não seja uma grande melhoria, tudo pode ajudar a valer a pena.
Dependendo do ambiente de trabalho, posso ver o código de alguns anos atrás, continuando trabalhando na mesma base de código e familiarizando-me com o que está lá e com algo a ser gerenciado.
O código antigo quase sempre está me atormentando, pois normalmente estou mudando um sistema existente ou substituindo o sistema. Em ambos os casos, eu tenho que conhecer as peculiaridades do sistema existente para garantir que elas estejam presentes no novo.
Embora eu tenha certeza de que existem pessoas como Jon Skeet que podem pensar em um código perfeito, a maioria das outras pessoas dizendo que seu código não pode ser aprimorado está dizendo que, a partir de um ponto do ego, isso pode ser pouco atraente. Ao mesmo tempo, em termos de encontrar uma grande melhoria sempre que nem sempre será o caso.
fonte
1.Quantas vezes isso acontece ou não acontece com você?
Quantas vezes estou insatisfeito com meu código antigo? Quase sempre. Existem raras exceções nas quais tenho código do qual realmente me orgulho ... mas, novamente, elas são raras. Foi-me dito que o código que escrevi alguns anos atrás era bom ... Me encolhi e pensei "você pobre coitado por ter visto pior do que o lixo que escrevi".
2. Quanto tempo antes de você ver uma melhoria real na sua codificação? mês ano?
Geralmente está em estágios ... eu gosto muito de um estilo ou metodologia (por exemplo, interfaces fluentes ... como esse foi o último estilo para o qual eu usei muito) e açougue tudo o que escrevo por um mês ou quatro . Então começa a parecer melhor.
3.Você já revisitou seu código antigo?
Não tantas vezes quanto eu gostaria. A maior parte do meu código antigo pertence a empregadores anteriores. O código pessoal é lavado com muita frequência.
4. Com que frequência o seu código antigo o afeta? ou com que frequência você precisa lidar com sua dívida técnica.
Sendo que os empregadores anteriores têm a maior parte do meu código antigo e eu lavo a maior parte do meu código pessoal ... não com muita frequência.
fonte