Muito se fala sobre a necessidade de treino, muito treino, para alguem se tornar um bom programador. Apoio totalmente essa ideia. Mas, nesse artigo, gostaria de chamar a atencao para uma habilidade que poucos bons programadores chegam a adquirir: a habilidade de nao precisar programar. Nao, nao estou me referindo a "habilidade" que alguns tem de se esquivar do seu trabalho. Estou falando sobre realizar um trabalho de qualidade, mas usando pouco ou nada do seu proprio codigo.Quando aprendemos a escrever codigoNo comeco, tudo e uma beleza. Com algum material de estudo e pouco tempo de pratica, podemos ver nosso primeiro Hello World! funcionando, seja qual for a linguagem. Nesse ponto, nao ha a pressao das boas praticas ou da economia de recursos; precisamos apenas descobrir como fazer as coisas funcionar. Qualquer um que passa algum tempo nessa fase aprende a programar, ainda que nao possa ser considerado um bom programador.Quando aprendemos a deletar codigoPassada a fase inicial de aprendizado, descobrimos que ha algumas boas praticas que nos ajudam a criar programas mais estaveis e faceis de manter. E a fase em que aprendemos a deletar codigo. Pegar um codigo grande e complexo e torna-lo mais simples e eficiente e fonte de grande orgulho e prazer para muitos programadores. Com algum tempo praticando essa "arte", aprendemos quais codigos valem o esforco de refatoracao e como executa-la de maneira responsavel, sem quebrar a estabilidade do software. Muitas dessas refatoracoes dao origem a bibliotecas que podem ser reaproveitadas em outros projetos, gerando uma grande substituicao de codigo ruim e duplicado por codigo mais eficiente e estavel. Que maravilha, hein? So nao e melhor porque a maioria dos bons programadores estaciona aqui.Quando aprendemos a nao escrever codigoMuitos programadores se tornam tao bons na codificacao que acreditam que seu codigo e a melhor forma de resolver todo tipo de problema. Isso nao seria ruim se nao fossem pequenos detalhes:Tempo e um recurso caro;Todo codigo novo e propenso a bugs e leva tempo para que se torne estavel e confiavel;Existem inumeras bibliotecas, componentes e frameworks de qualidade que resolvem uma infindavel quantidade de problemas;Nem todo problema se resolve com codigo.Esses pontos obvios sao frequentemente ignorados por causa de uma cultura existente em muitas empresas e individuos: a cultura do Not Invented Here (Nao Inventado Aqui)."Not Invented Here (HIH) e um termo usado para descrever uma cultura social, corporativa ou institucional em que se evita o uso ou compra de produtos, pesquisas, padroes ou conhecimento existentes por causa da sua origem externa." (Wikipedia)As razoes para se preferir escrever seu proprio codigo podem incluir o medo de nao entender as solucoes de terceiros ou a indisposicao de valorizar o trabalho de outros. Seja qual for o motivo, reinventar a roda raramente e a melhor alternativa.Ha uma historia interessante que posso contar sobre isso. Muitos anos atras, uma empresa onde trabalhei precisava tornar seus aplicativos desktop capazes de serem atualizados automaticamente. Desenvolveu-se entao um aplicativo que, integrado aos aplicativos que seriam atualizados, cuidaria da verificacao da existencia de uma nova versao, do download e da instalacao dela. O aplicativo era