Pessoal,
Sou fã de diversas séries de Tv, entre elas House MD. Acredito que todos conhecem o médico manco, egoísta, drogado e especialistas em doenças bizarras e incomuns.
Ontem reprisou um episódio onde ele dá uma aula sobre diagnóstico. Ele apresenta 3 paciêntes que ingressam com dores nas pernas. No decorrer da aula ele mostra que os diagnósticos vão sendo cada vez mais complicados e isso implica na sobrevivência dos pacientes. Inclusive ele é duro com os alunos: muitas vezes eles vão errar e isso vai custar vidas. Quem não pode conviver com isso, que mude de profissão.
Foi nesse episódio que eu fiz um paralelo com o desenvolvimento de software: Hoje em dia os sistemas estão tão complexos, envolvendo tantas camadas, hardware específico, tres letrinhas pra todo o lado, que um problema (ou bug) pode ser encarado como uma doença. E nem sempre é obvio, pode ser um pequeno delay em algum processo, um consumo de memória incomum, um erro que quase nunca conseguimos reproduzir… mas estão lá, como sintomas.
E o House? Bom, ele parte do principio que todos nós mentimos. Testadores e programadores mentem.
Em House vemos sintomas bizarros e as vezes esbarramos em nosso egos, em consumo de drogas, em chefes loucos, em advogados e ‘processos’ atrapalhando e o paciente morrendo. E ninguem é acima da média para sempre estar certo: as vezes o paciente está bem e sofre um AVC.
Puxa, quantas vezes nos deparamos com erros bizarros que resistiam a todas as alterações de codigo (ex: “eu não entendo, era para estar funcionando”)? Quantas vezes o sistema morreu nas nossas mãos? Quantas vezes a solução teve de ser exótica, devido a natureza igualmente exótica do erro (como bugs de compilador, problemas de acesso concorrente em situações específicas, etc)?
Bom, foi só uma analogia. Felizmente os sistemas doentes podem ser reescritos (seres humanos não), porém nem sempre isso é facil, e estão nos pagando para fuçar num caso de câncer crônico causado por um Vector ou == num lugar errado…