Deixe-me abordar isso do outro lado. O que acontece quando você desenvolve um aplicativo não trivial sem testes de unidade? Se você tem um bom departamento de controle de qualidade, uma das primeiras coisas que acontecerá é que você encontrará um grande número de problemas relatados. Por que, porque você não testou o que fez e presumiu que funcionaria e porque não prestou muita atenção aos requisitos e seu aplicativo não os atende. Opa, de volta à prancheta para reescrever e corrigir. Agora você fez as correções e encontrou um novo conjunto de problemas porque não tinha como verificar se as correções não afetaram mais nada antes de enviar para o controle de qualidade. Opa, o prazo já chegou e se foi e a gerência está chateada.
A situação é pior se você não tiver um bom departamento de controle de qualidade, porque os usuários encontrarão os bugs e não apenas isso deixará seu chefe infeliz, como também poderá deixar o ambiente de produção de joelhos e centenas ou centenas de pessoas estarão em uma paralisação enquanto você corrige os bugs que o teste de unidade teria impedido. Esta não é uma boa escolha de carreira.
Agora, suponha que essa abordagem de cowboy continue por anos? Agora, todas as mudanças, mesmo as triviais, parecem provocar novos problemas inesperados. Não apenas isso, mas muitas das coisas que você gostaria de fazer para que o aplicativo funcionasse melhor, você não pode fazer porque elas são muito arriscadas ou muito caras ou ambas. Então você coloca patches nos patches, tornando o sistema cada vez mais complicado, mais complicado e mais difícil de usar.
Os usuários começam a questionar suas estimativas de tempo porque ficam cada vez maiores e é difícil explicar a eles que o sistema se tornou uma bagunça tão complicada que é difícil encontrar onde fazer as alterações e ainda mais difícil para garantir que eles não façam ' Não quebre outra coisa.
Trabalhei em um local como este, onde, após dez anos de desenvolvimento, praticamente nada do que queríamos fazer para solucionar os problemas reais poderia ser feito, porque não sabíamos qual das centenas de aplicativos clientes personalizados seria interrompida. Os desenvolvedores iniciais eram basicamente o tipo de "testes de unidade, não precisamos de testes de unidades fedorentos". Todos que os seguiram sofreram graças à miopia.
Sem testes de unidade, o software é mais complicado e leva mais tempo para desenvolver e manter inicialmente. Por que diabos você não gostaria de fazer testes de unidade? O tempo que você gasta escrevendo o teste será muito menor do que o tempo gasto consertando os problemas que você deveria ter encontrado mais cedo (quanto mais cedo o bug é encontrado, menos tempo leva para ser corrigido) e os problemas que você teria evitado completamente escrevendo os testes primeiro, que fornece uma melhor compreensão dos requisitos antes de começar a codificar.