Debug is on the table
Um dos meus melhores professores da faculdade disse certa vez, enquanto programávamos: “Sempre converse com seu programa. Se você não ensiná-lo a falar onde está o erro, vai demorar mais para descobrir e arrumar“. Foi a lição mais importante que reebi naqueles quatro anos.
Programadores novatos (e até alguns ‘velhos de guerra’) tem uma mania estranha de criar seus algoritmos sem qualquer forma de ‘debugar’ (encontrar e consertar) possíveis erros. Programadores burros fazem o mesmo, mas jogam o código direto na linha de produção, para só depois descobrir que o negócio tinha um ‘errinho’. Coisinha simples, só apaga todo o banco de dados, pela falta de um “where id=$variavel”. E depois reclamam que o mercado é difícil, que o chefe é um burro, que os usuários não sabem usar o sistema, e por aí vai.
Você, jovem que já completou (ou não) 18 anos, e deseja ingressar na fantástica carreira de programador, deve aprender a “conversar com seu programa” (aliás, isso me lembra uma história. Falo sobre isso no final do post). Criem formas de fazer com que, pelo menos no momento dos testes, os resultados necessários apareçam na tela, assim como possíveis erros. Só Deus sabe quantas vezes um simples e bobo “or die(mysql_error())” me salvou de horas e horas em cima do código.
Outra coisa que costumo fazer é mandar exibir as variáveis na tela, para saber como elas se comportam durante a execução do programa. Depois, é só comentar o código, e descomentar caso algum usuário reclame que a conta está errada.
Exemplo: Como saber por que $z = $x + $y não está trazendo os resultados corretos? Oras, se você usa php, um echo “$z = $x + $y (Resultado: $z)”; resolve. Acreditem, já peguei um código feito pelo estagiário que exibia 1 = 2 + 3 (Resultado: 6). Tudo porque o sem-noção já estava usando aquela variável…..
Outra dica é nunca, nunquinha, em momento algum, executar algum comando que realize alterações permanentes antes de verificar se os parâmetros estão sendo passados corretamente. Acredite, você não quer descobrir que havia um erro crasso nas variáveis passadas para o SQL enquanto recupera os backups do banco de dados… Prefira comentar os códigos que fazem alterações, verificar antes se está tudo certo, e só então. Novamente, usuários de php podem executar um echo “código sql”; e só então descomentar o código propriamente dito.
Parece bobagem, coisa simplista? Parece, e na verdade É! Mas, mesmo assim, o que eu mais vejo é maluco programando sem pensar nisso, e depois reclamando. Aprendam a conversar com seu programa, isso evita muitas dores de cabeça!
PS: Essa história é real - Há uns dois anos, contratei um estagiário que se achava o mestre supremo do universo em programação. Como ele ainda era novo na empresa, pedi para ele criar um programa simples, um controle na intranet para lançamento e controle de consumo de água.
Lá pelas tantas, percebo o rapaz nervoso, teclando com raiva, e vou o que está acontecendo. Havia um erro, os inserts não funcionavam, e ele não conseguia descobrir o porquê. Enfim, usei o ‘mysql_error’, e na hora pude ver que havia um erro na sintaxe. Quando disse a ele que era importante saber ‘conversar com o programa’, ele olhou para o monitor, e disse em tom irônico “Olá, programa, tudo bem?”
Foi mandado embora duas semanas depois. Ainda não tinha passado da segunda tela do programa….
- Textos Relacionados
- Resumo do meu trabalho
- Certos bugs não deveriam ser publicados
- Existe, na programação, um erro conhecid
- Automatizar todas as tarefas nem sempre é uma boa idéia
- Bomba na blogosfera: Cardoso plagiou Mushi-san????
Se você gostou deste post, escreva um comentário e/ou cadastre-se em nosso feed.
Comentários
Acho que no lugar do teu estagiário eu diria “fdp!! funciona!” ou isso.
Mas provavelmente aprenderia a lição..
Hoje na empresa implementamos um controle de exceções que tira screen shot da tela e cria um arquivo de log pra podermos ver onde deu pau… (e se tiver no cliente ele pode tentar enviar o e-mail pro nosso bug report).
Por incrivel que pareça isso foi ideia minha(o cara que não gosta de testar as coisas).
Bem melhor que na matriz, onde já vi gente dar drop table na tabela principal do sistema em ambiente de produção. (lindo de se ver)
Huhauhauhaua, estagiários são foda.
Lá na empresa de vez em qdo o povo mexe na estrutura do banco da produção ‘online’, desabilitando umas constraints enquanto faz alguma alteração, etc…
Esse povo gosta de viver perigosamente XD.

Eu fico imaginando a risada maligna ao despedir o estagiário, hehe…
Uma vez a secretária da escola onde eu trabalhava e era o nerd de plantão perguntou algo simples sobre se conectar na internet. Eu comecei a responder e ela “bah, muito difícil”. Eu larguei na cara dela “tu parece um aluno com esse comentário”. Até hoje me evita quando encontro.