No Silver Bullet, de novo

Sabe o que é bala de prata? Tem um mito de que só é possível matar um lobisomem com artefatos de prata, como flechas, adagas ou balas de revolver. Então criou-se uma expressão ‘bala de prata’ para se referir a única e inequivoca solução para os problemas. Pois bem, o artigo ‘No Silver Bullet, de novo‘ retoma um artigo de Frederick Brooks escrito em 1986 dizendo, naquela época, que não existe solução mágica para a TI.

Na engenharia de software há toda sorte de ferramentas, métodos administrativos, designs, arquiteturas, etc. que dizem ser as resolvedoras da vida dos time de TI. Sempre fui muito cético quanto a isso mas não vou negar que no início da carreira eu adorava cair nessa armadilha. No artigo vou falar de coisas como metaverso, no-code, computação quantica, cqrs ou microserviço e como esses hypes são tão sedutores quando armadilhentos.

No Silver Bullet

Como comentei, Frederick Brooks escreveu o artigo No Silver Bullet (‘Não há bala de prata’) em 1986, dissertando sobre a natureza complexa do software. Para Brooks o software é inerentemente complexo e não há solução mágica capaz de resolver todas as dores de cabeça que temos. Caso tenha curiosidade, o artigo pode ser encontrado em http://worrydream.com/refs/Brooks-NoSilverBullet.pdf

Não quero correr o risco de ser simplista, portanto, entenda o que vou falar apenas como um exemplo didático. Pense que o trabalho de um engenheiro civil é projetar casas. Para uma determinada região pode haver uma formuleta para tal, considerando o solo, clima, mão de obra, material etc. Desse modo as casas serão sempre iguais. Entretanto, essas casas precisam ser produzidas, uma a uma.

Já quando falamos de desenvolvimento, trata-se de algo um pouco diferente. Se é um software completamente igual e repetível, não faz sentido que se faça exatamente do mesmo jeito várias vezes. Mas sim que se faça uma arquitetura que suporte um nível maior de abstração e que resolva as questões desejadas na sua essência, sem repetições. Portanto um novo software deve ser um desafio essencialmente não repetível.

Além disso, Brooks identifica estratégias como a compra de software pronto, compreensão de linguagem natural, refinamento de requisitos e prototipagem rápida. Para ele o software tende a ter um crescimento incremental e dinâmico. Pessoalmente acredito fortemente nessa percepção do autor. E por fim, se por um lado boas práticas de design que podem ser ensinadas, por outro desenvolver grandes designs únicos torna-se crucial para alcançar a excelência no desenvolvimento de software.

No-code e Low-code

Quando eu era mais jovem me deparei com o conceito de RAD (Rappid Application Development). Mas também me deparei com Visual Basic, Delphi e afins. No passado esses conceitos ganhavam destaque a medida que prometiam que qualquer um pode programar e que as entregas de valor serão cada vez mais rápidas. As abordagens modernas de no-code e low-code são assemelhadas tanto em forma quanto em propósito com as abordagens antigas.

Embora esses ofereçam agilidade e participação ampliada, não são a panaceia. Brooks argumenta que desafios fundamentais persistem, como a compreensão precisa dos requisitos e o design conceitual. No entanto, ao adotar princípios de crescimento incremental e prototipagem rápida, essas ferramentas podem proporcionar avanços significativos, desde que não subestimemos a importância de mentes excepcionais guiando o processo de design, caso contrário haverá o engessamento da empresa.

Hypes: Metaverso, Cripto, NFT, Computação Quantica, Datascience, etc.

O gartner publica anualmente um diagrama com as tecnologias mais na moda, naquele período. Mas ele sempre utiliza como base uma linha curva, como segue, considerando 5 momentos: Lançamento (gatilho), pico das expectativas infladas, vale da desilusão, subida da iluminação, e platô de produtividade. As tecnologias e as cabeças das pessoas fluem por esse gráfico.

Veja, tecnologias como, por exemplo, o bitcoin. No incio ninguém se interessava, num segundo momento surgiram mercados com corretoras, carteiras, muita compra e venda, valores altíssimos mas sem, necessariamente, ter geração de valor. Depois tecnologias mais maduras foram criadas, redes secundárias (lightening network), mecanismos de comunicação entre exchanges, cold wallets a preços populares, aperfeiçoamentos no bitcoin. Hoje ele se materializa como reserva e valor, tal qual ouro ou minérios do tipo. Esse é só um exemplo, mas diversas tecnologias passam por isso ciclo.

Hypes em desenvolvimento de sistemas

Os desenvolvedores, ao meu ver, são especialistas em cair nessas armadilhas. O cenário dinâmico de desenvolvimento de sistemas é um grande berço de soluções que buscam ser o novo hype. Por outro lado há os vendedores de livros, cursos e conceitos que estão prontos para potencializar-los. Talvez esse blog seja um desses.

Me lembro de uma tecnologia chamada SilverLight, que concorria com o Adobe Flex (versão do Adobe Flash para construção de aplicações com visual moderno). Ambas as tecnologias vinham como uma alternativa para o JavaScript da época e o HTML4. Acontece que o mercado tomou outros rumos e hoje (NOV/2023) JavaScript é uma técnologia muito consolidada e presente.

Adordagens de design sofisticados como CQRS (Command Query Responsibility Segregation), EDA (Arquitetura Orientada a Eventos) ou mesmo microserviços têm espaço especial nessa prateleira. Embora sejam visões interessantes sobre o software, não são adequadas para qualquer equipe ou empresa, ainda que lobos solitários possam tentar emprega-las por motivos que nem sempre são os da companhia.

No passado algo semelhante ocorreu com o emprego de webservices que utilizavam o padrão SOAP em arquiteturas SOA, altamente sofisticadas e de difícil manutenção. Talvez por isso, as vezes fico pensando qual será o futuro do REST frente ao WebAssembly.

Veja, não quero desmotivar quem se interessa por esses hypes, desde que entenda o local deles e o risco que carrega, aplicando-os adequadamente ao contexto do negócio que trabalha. Para mim o fundamento bem internalizado é , muitas vezes, mais importante do que o uso propriamente dito do conceito ou tecnologia. Saber porque usar algo vale mais do que efetivamente usar.

Conclusão de No Silver Bullet, de novo

Em resumo, a exploração dos conceitos de Frederick Brooks e a análise dos hypes contemporâneos destacam a incessante busca por uma bala de prata no desenvolvimento de software. Ele desafia a ideia de soluções mágicas, enfatizando a importância de mentes brilhantes na engenharia de software. Ao investigar os hypes e abordagens em voga, reforçamos que a maturidade tecnológica surge da compreensão profunda e aplicação consciente de cada ferramenta.

Nesse cenário, onde No-code, Low-code, Metaverso e Computação Quântica coexistem, a sabedoria está em discernir entre modismos e soluções duradouras, enquanto a busca pela excelência continua como uma jornada incremental, guiada por mentes excepcionais e princípios sólidos diante das marés da inovação tecnológica.


Thiago Anselme
Thiago Anselme - Gerente de TI - Arquiteto de Soluções

Ele atua/atuou como Dev Full Stack C# .NET / Angular / Kubernetes e afins. Ele possui certificações Microsoft MCTS (6x), MCPD em Web, ITIL v3 e CKAD (Kubernetes) . Thiago é apaixonado por tecnologia, entusiasta de TI desde a infância bem como amante de aprendizado contínuo.

Deixe um comentário