Há alguns meses, compramos uma nova câmera digital, para tirar fotos de nossos novo processo gerado. Minha esposa, que estava encarregada dessa compra, tirou a câmera da caixa, instalou as baterias e começou a testá-la pela primeira vez. Como muitos aparelhos eletrônicos, ela veio com um CD de software. Então, inocentemente, ela ejetou a bandeja de DVD e colocou o CD.
Percebi por acaso, pelo canto do olho, que isso estava acontecendo. Nesse momento, eu – agora, tente imaginar isso em câmera lenta exagerada, para ter efeito total – gritei “noooooooooooo“, e me lancei freneticamente pela sala em uma tentativa desesperada de impedir que o CD fosse lançado e instalasse sua carga útil de software. Funcionou, mas quase matei um gato no processo.
Não há nada errado com o software que vem junto com uma câmera digital. Ou será que existe?
- Provavelmente é desnecessário. Qualquer sistema operacional moderno (e até mesmo o Windows XP!) pode ver e baixar automaticamente as fotos de uma nova câmera digital. Não é necessário nenhum software adicional. Mas, em uma tentativa questionável de agregar “valor” e se diferenciar de seus muitos concorrentes de câmeras digitais, algum executivo da empresa de câmeras criou um esquema absurdo para incluir um software com vários recursos exclusivos e malucos que ninguém mais tem.
- As empresas de hardware geralmente não trabalham bem com software. As empresas de câmeras digitais são excelentes na construção de hardware de câmeras digitais. O software, se é que existe, é uma reflexão tardia, um efeito colateral, uma caixa de seleção na prancheta de um especialista em marketing.
- Software de procedência desconhecida provavelmente foi escrito por programadores ruins. Se todas as outras coisas forem iguais, as chances de que o software novo e aleatório que o senhor está prestes a instalar seja agradável, útil e livre de estresse são… uh, baixas.
Um dos (muitos) efeitos colaterais infelizes de escolher uma carreira em desenvolvimento de software é que, com o tempo, o senhor aprende a odiar software. Quero dizer, odiar mesmo. Com um paixão. Pegue o usuário mais irritado que o senhor já conheceu, multiplique-o por mil e o senhor ainda não chegou perto do que nós, programadores, sentimos em relação ao software. Ninguém odeia software mais do que os desenvolvedores de software. Mesmo agora, escrever sobre esse assunto me deixa fisicamente irritado.
Essa não é uma atitude estranha vinda de pessoas cujo trabalho é escrever software? Como podemos odiar o que somos pagos para criar todos os dias?
David Parnaso explicou em uma entrevista:
P: Qual é o risco mais frequentemente negligenciado na engenharia de software?
R: Programadores incompetentes. Há estimativas de que o número de programadores necessários nos EUA ultrapassa 200.000. Isso é totalmente enganoso. Não se trata de um problema de quantidade; temos um problema de qualidade. Um programador ruim pode facilmente criar dois novos empregos por ano. A contratação de mais programadores ruins apenas aumentará a percepção de nossa necessidade por eles. Se tivéssemos mais programadores bons e pudéssemos identificá-los facilmente, precisaríamos de menos, não de mais.
Como posso saber, de forma incontestável, sem sombra de dúvida, que o mundo está cheio de programadores incompetentes? Porque eu sou um deles!
Nós trabalhamos na fábrica de salsichas, então sabemos como esse material é feito. E não é bonito. A maior parte dos softwares é criada por programadores ruins como nós (ou piores!), o que significa que, por definição, o senhor não tem o direito de usar o software, a maioria dos softwares não presta. Vamos nos referir ao Por que o software não presta, de Scott Berkun para definir a definição:
Quando as pessoas dizem “isso é uma droga”, elas se referem a um ou mais dos seguintes itens:
- Isso não faz o que eu preciso
- Não consigo descobrir como fazer o que preciso
- Isso é desnecessariamente frustrante e complexo
- Isso quebra o tempo todo
- É tão feio que tenho vontade de vomitar só para ter algo mais bonito para ver
- Não se encaixa em minha compreensão do universo
- Estou pensando na ferramenta, e não no meu trabalho
Quantas dessas situações o senhor acha que seriam verdadeiras para o software do CD que acompanha a câmera digital? Acho que todas elas. É por isso que o senhor a melhor opção de software geralmente é o não software – e, fora isso, o mínimo de software possível e, mesmo assim, somente de fontes confiáveis e com boa reputação.
Não fico ansioso para instalar novos softwares. Pelo contrário, tenho pavor disso.
Gostaria de compartilhar com os senhores um pesadelo recorrente que tenho. Nesse sonho, estou sentado em frente a um computador que é inicializado, executando um sistema operacional que escrevi. Em seguida, lanço um navegador da Web que criei do zero, sozinho, e navego até um site que construí. Clico no primeiro link e tudo fica em tela azul. E a própria tela azul se torna azul e começa a se dobrar sobre si mesma, colapsando em uma enorme explosão que destrói um quarteirão inteiro.
Esse é o bom versão do sonho. Na outra, há apenas … gritos. E escuridão.
Em resumo, odeio software – acima de tudo e principalmente a minha própria – porque Sei como é difícil acertar. Pode parecer estranho, mas essa é uma atitude natural e saudável para um desenvolvedor de software. É um vínculo, um rito de passagem que o senhor verá que todos os programadores competentes compartilham.
Na verdade, acho que o senhor pode distinguir um desenvolvedor de software competente de um incompetente com uma única pergunta de entrevista:
Qual foi o pior código que o senhor viu recentemente?
Se a resposta do senhor não for imediata e sem hesitação, estas duas palavras:
A minha.
Então o senhor deve encerrar a entrevista imediatamente. Desculpe, amigo. O senhor ainda não odeia o software o suficiente. Talvez em mais alguns anos, se o senhor continuar assim.