Arquitetura para pequenos/médios projetos

Boa noite! Gostaria de compartilhar e pedir opiniões sobre algo que tenho refletido ultimamente. Tenho estudado abordagens de arquitetura de software, como hexagonal, clean architecture e até mesmo a abordagem de domínio rico (DDD). Junto a isso, surgem os conhecidos "boilerplates" que frequentemente acabamos adotando, como use-cases, entidades, etc.

No entanto, tenho percebido que isso tem levado a uma diminuição na velocidade de entrega dos meus projetos e um aumento na complexidade em busca de "desacoplar" o código. Entendo que para aplicações grandes, destinadas a escalar e lidar com uma base de código extensa, essas abordagens podem ser mais apropriadas. No entanto, no meu caso, sendo o único desenvolvedor em uma software house responsável pelo backend de 2/3 projetos simultâneos, estou em dúvida.

Considero que uma abordagem mais simplificada, utilizando NestJS para acelerar o desenvolvimento, poderia ser uma opção viável. Contudo, há uma sensação intrínseca de que a abordagem correta seria criar entidades, use-cases e toda essa estrutura, mesmo que isso resulte no mesmo produto final.

Este é um desabafo e um pedido de ajuda. O que vocês fariam? Continuariam com a abordagem mais complexa ou optariam por algo mais básico e bem feito? Vale ressaltar que, em ambas as opções, utilizo testes para cobrir os cenários, mas na opção mais complexa, preciso escrever de 4 a 5 arquivos a mais apenas para separar as responsabilidades.

Eu já sofri deste dilema, e o tempo sempre me mostrou que o rápido sai caro. Depois você nunca vai voltar para refazer da forma correta, e vai sofrer com as consequências.

A questão não é fazer mais rápido e sim menos complexo, que por consequência acaba sendo mais rápido, a qualidade deve ser mantida atravéz de principios como SOLID, porém ao invés de criar 7 layers para fazer isso, acredito que com um MVC (com melhorias é claro) já supriria.

Quando a pessoa sabe o que eestá fazendo tudo fica melhor. E isso só o tempo dá. Por isso que não existe sênior de 6 meses.

Babam toma nocaute de Popó

Na verdade boa parte dos júniores ficam assim por mais de 30 anos (conheço vários casos).

Aprendizado é algo que começa desde pequeninho e precisa ser praticado o tempo todo. Mais do que saber algo é preciso conseguir aprender coisas novas, e principalmente aprender melhor oque já faz. Ser observador, entender os conceitos básicos, ter lógica apurada, entender até mesmo a ciência e filosofia faz parte do que permite uma pessoa ser profissional com P maiúsculo.

Quem só decora receitas de bolo pode até entregar algo, mas sempre será inferior ao que poderia ser, a não ser por coincidência. O bom profissional entrega melhor (quase) sempre. Ele até erra, quando é para errar, quando está consciente que está tentando algo arrisco e que pode valer a pena. Os melhores entregam cada vez melhores porque também arriscam, mas com critério.

Então devemos estar atentos a todo processo, experimentar, entender o que está funbcionando ou não, e que recebemos um monte de informação que simplsmente não funciona, pelo menos não em todos os contextos.

A maioria das ideias e tecnologias que vemos divulgadas hoje em dia na área são para contextos muito específicos e que geram complexidade, que só se paga quando a complexidade já é inerente ao problema, então você adiciona uma camada de complexidade para gerenciar a complexidade.

Novamente, não tem fórmula mágica, não é possível responder universalmente, nem mesmo sabendo bem do problema, porque envolve também as condições que ele está sendo desenvolvido, passando inclusive por quem está fazendo isso.

O que ue sei é que a esmagadora maiora das pessoas hoje usam ou querem usar técnicas complexas para se sentir importantes, para se sentirem compententes, o que por definição não são, porque falta o básico que é o discernimento sobre o que agrega valor e o que é adoção de modinha.

Não tem livro ou curso que ensine isso, alguns levarão anos para aprender, outros serão tantos que a pessoa morre antes. Então se não comecou, comece já.

O fato de observar que está entregando menos já é um passo adiante de muita gente até bem experiente. Se isso está sewndo bom ou ruim nesse caso é o próximo passo.

Um dos meus primeiros vídeos do canal será sobre isso. E será dos longos.


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).

Que alegria ter você por aqui Maniero. Obrigado pela resposta, concordo com você. Talvez eu esteja usando essas tecnicas para me sentir mais importante e um programador melhor. Porém isso está adicionando um nível muito grande de complexidade que não é necessário. Vou acompanhar com certeza sua série de vídeos e gostaria (caso não seja pedir demais) que você me recomendasse alguns livros ou vídeos que eu pudesse estar estudando. Obrigado novamente, forte abraço!
Comece pela gramática :P Você trabalha em *call center*? "que eu possa estudar" é mais curto, simples e correto. Viu como a complexidade pode estar até onde não percebemos? :) espero que isso seja ilustrativo como podemos observar mais, aprender mais, e tentar a simplificação sempre. É muito comum usarmos o complexo porque "todo mundo" usa está usando, mesmo que ele seja o errado. Engenharia de Software do Ian Sommerville.

Pelo seu questionamento e sua dor, acredito que você não domina a sopa de letrinhas que está se propondo a usar, melhor voltar aos estudos e quando dominar realmente, perceberá que os problemas não eram elas.