Executando verificação de segurança...
8

A Surpresa de Ver um "Simplão" Funcionar: O Exemplo do Filipe Deschamps e o Tabnews

Eu sempre fui o tipo de pessoa que adora abstrações. Camadas, microserviços, sistemas desacoplados, API externas... quanto mais complexo, mais "profissional" parecia ser. Eu acreditava que a solução perfeita para qualquer projeto era criar uma arquitetura complexa, separando tudo em camadas, APIs e serviços. E é até irônico, porque eu mesmo já escrevi um post dizendo que, às vezes, não precisamos quebrar tudo em microserviços. Mas, quando me dei conta, o vício por abstrações era maior do que eu.

Até que eu olhei o código do Tabnews e levei um baita choque. O cara fez tudo usando Next.js — e não foi só o front, não. Ele construiu a plataforma inteira, backend e frontend, com as API Routes do Next.

E aí vem a pergunta...
Por que complicar tanto, sendo que o Filipe fez tudo de forma simples e funcionou? Quando será que a simplicidade é a melhor escolha e quando devemos realmente optar por soluções mais complexas?

A lição...
Eu ficava preso ao perfeccionismo. Sempre buscava a "melhor" solução, com mil abstrações e modularizações, quando o que o projeto realmente precisava era de algo direto e funcional. Filipe fez isso de forma inteligente, sem se prender a padrões só porque são considerados "bons". E isso me fez repensar o quanto, muitas vezes, complicamos o simples.

Então, a reflexão é...
Será que estamos tão preocupados em abstrair e desacoplar que esquecemos de focar no que realmente importa? Quantos projetos eu poderia ter entregado mais rápido, sem perder tempo com detalhes que não faziam tanta diferença no final?

E calma... Eu não tô falando daqueles projetos gigantescos onde você recebe o escopo e você tem que seguir padrões, garantir escalabilidade e segurança, e toda aquela complexidade que a situação exige.

Estou falando dos projetos pessoais, aqueles onde você tem total controle, onde poderia ter feito de forma simples e eficiente, mas acabou travando no perfeccionismo e nas abstrações.

E você?
O que você tem feito? Está complicando demais suas soluções ou buscando o caminho mais direto e eficiente?

Deixa seu comentário aí!

Carregando publicação patrocinada...
-1

Posso discordar? Especialmente de uma frase?

às vezes, não precisamos quebrar tudo em microserviços (sic)

Mesmo se eu inverter isso, ainda estarei falando uma mentira:

às vezes, precisamos quebrar tudo em microsserviços

Vamos falar a verdade:

quase nunca precisamos quebrar tudo em microsserviços

Às vezes, precisamos ter alguns microsserviços separados do monólito, mas fazer o sistema inteiro pensado assim, é muito difícil achar motivação técnica, até mesmo as grandes plataformas, inclusive algumas das maiores não usam a técnica e funcionam melhor do que as que adotam. Instagram, Shopfy, Wikipedia, Stack Overflow, etc. Esquece "ser escalável" isso é uma bobagem que até os mais ferrenhos proponentes já não estabelecem como diferencial.

Existem basicamente dois motivos principais que as pessoas adotam essa arquitetura:

a) Lei de Conway, fazer o sistema se encaixar com a estrutura já descentralizada da empresa que funciona como pequenas empresas em vez de algo mais centralizado. Isso tem vantagens e desvantagens, alguns fazem melhor que outros, e na hora de transpor isso para o software pode funcionar bem ou não.
b) a pessoa é deslumbrada e quer estar na moda sem saber 10% do que precisa sobre microsserviços, talvez ela só queira colocar no currículo que fez isso em um trabalho.

Eu sempre peço para as pessoas provarem o contrário quando discordam, ninguém o fez até hoje, elas só garantem que o caso delas é necessário. Só devemos adotar algo, especialmente complexo, quando podemos provar que será melhor. Nunca vi alguém publicando algo mostrando uma prova que o caso delas era necessário.

E eu observo alguns dos softwares mais famosos que adoraram essa arquitetura, quanto mais o tempo passa, mais lentos eles ficam para dar manutenção cometem mais erros, tem mais inconsistências e provavelmente vai ficando mais caro.

Falando do Tabnews, eu não sei se ele é tão simples assim. Eu sou mais radical em simplicidade. E não gosto de soluções lock-in, mas ok, ele não me causa maiores problemas, o maior problema que causava, arrumaram e era extremamente simples, mas ficou anos sem ninguém fazer. Tem outros problemas, mas já acostumei. Eu hoje entendo qual era o objetivo dele melhor que antes, então nem reclamo mais.

"Melhor" é algo altamente subjetivo sem parâmetro algum e nunca serve para balizar nada. Mas se eu criar a minha definição simplista e olhando só uma faceta, melhor é o simples, sempre. Grande parte do que se ensina hoje, geralmente falando que é melhor, que é boa prática, é o complicado.

Eu tenho diversas postagens e vou reunir tudo de forma mais estruturada fundamentando porque está "todo mundo" fazendo software errado, e o maior problema é justamente usar coisas que a pessoa nunca vai precisar ou se precisar não é tão difícil assim mudar. O YAGNI é conhecido da maioria dos programadores que passaram razoavelmente do Hello World, mas quase ninguém o segue. Porque tem o contrário bombardeando a cabeça das pessoas. E esse é outro caso das pessoas não saberem porque estão fazendo aquilo e não conseguem provar a necessidade, mas brigam que tem que fazer assim e ponto.

S2


Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente (não vendo nada, é retribuição na minha aposentadoria) (links aqui no perfil também).