E aí galera! Virada de ano e de novo volto a ter tempo hábil para as minhas mau traçadas linhas aqui neste blog.
Espero que todos tenham passado as festas muito "de boa" como se diz em São Paulo.
Hoje estarei refletindo sobre como as coisas podem ser feitas para que sejam feitas apenas uma vez na vida, e claro mantidas e somente evoluídas. Durante minha pequena vida corporativa como desenvolvedor de softwares, não raras vezes me deparei com a tarefa de ter que reformular ou reescrever ou "tunnar" funções, métodos, stored procedures, enfim qualquer objeto de software. E muitas vezes diante desta tarefa me perguntei: Será que o cara que fez isso (algumas vezes esse cara era eu mesmo) não pensou enquanto construía esta joça? Pois é isso que penso ainda hoje. Apesar de não gostar muito de testar minhas soluções - na verdade prefiro até que outros testem por que minha capacidade de testes é muito limitada - eu procuro fazer as coisas o melhor possível já da primeira vez, mesmo que voltem de testes umas trocentas vezes.
Se formos seguir os pensadores POG (Programação Orientada a Gambiarras), a primeira lei diz: "Funcionou está certo". Eu discordo veementemente desta tese, pois funcionar é o objetivo de qualquer coisa que se construa (ainda mais no mundo do software), o problema é que via de regra o que funciona hoje um dia precisa ser de alguma forma estendido um bom exemplo para isso é a escalabilidade que qualquer aplicação pode demandar num dado momento de sua vida, ou seja, o sistema nasce com 10 usuários e em menos de um ano já tem mais de 1000 e aí? Como fica? A carga de dados, o número de conexões ao banco de dados ou de requisições ao servidor HTTP aumentam na proporção de 1 pra 100 e num intervalo de tempo muito pequeno. Às vezes o sistema já nasce com a premissa de ser massivamente acessado, mas mesmo assim as soluções que são dadas não são ideais para este cenário.
Seja num sistema pequeno ou grande as boas práticas são sempre as melhores saídas para não se enveredar por este caminho pecaminoso. Muitos de nós meros desenvolvedores, programadores ou analistas-programadores atuamos em ambientes de extrema pressa e de prazos cada vez mais curtos. Porém mesmo nessas horas onde é necessário corrigir um bug em 3 segundos para colocar em produção com o seu chefe ao seu lado. É importante nos portarmos com uma boa dose de sabedoria e gastar mais 3 segundos pensando se aquela solução soluciona completamente o problema, é manutenível no futuro, tem a performance ideal para 10 ou 10000 usuários (ou quantos usuários sua aplicação vá suportar) , o código é claro o bastante para o trouxa que tiver que mexer depois essas coisas todas que a gente sempre escuta falar, mas muitas vezes acaba deixando de lado por conta da agitação da construção do software. Mesmo que estejamos utilizando um framework bem escrito como, por exemplo, um LUMIS da vida (eu trabalhei com ele na versão 3.0 em ASP, mas todos os amigos que ainda vivem dele o elogiam bastante) é importante verificar essas regras básicas do desenvolvimento de software.
E não acho que essa avaliação seja baseada apenas em achismos e no bom e velho feeling profissional. Para tal tarefa existem hoje ferramentas capazes de validar o código, o desempenho, e uma série de outros fatores que podem afirmar: O código escrito está bem escrito.
Sempre ouvi dizer a frase que intitula este post de hoje. E procuro sempre obedecer mesmo que alguma coisa saia errado e os encarregados do teste defiram meu teste. “Faça certa da primeira vez e faça apenas uma vez”. Esta postura pode economizar horas e horas de retrabalho e até mesmo evitar trabalhos em dias não muito auspiciosos como sábados, domingos e feriados.
Mais uma vez agradeço a vocês a paciência e a atenção investidas nestas linhas.