Como evitar o overengineering? Eu não sei, você sabe?
Olá pessoal, não lembro se esse é meu primeiro artigo ou não, então deixa eu me apresentar.
Sou Analista de Negócios, tendo atuado como Analista Desenvolvedor em sistemas escritos em Delphi, C# e mais recentemente Java (backend).
Em todas essas stacks sempre me chamou a atenção alguns arquitetos puristas escrevendo frameworks/bibliotecas/classes meio que by-the-book.
Não vejo nada de mal nisso, porém a questão é, até que ponto vale seguir à risca todas as boas práticas de uma determinada metodologia? Se muitas vezes coisas básicas como responsabilidade de classes são ignoradas?
Eu sou mais do faça simples e vá aprendendo a fazer robusto com o passar do tempo ao invés de pensar todo um mundo de possibilidades, escrever algo que resolve todos os problemas e entregar na mão dos desenvolvedores para manter o monstrinho que você criou (muitas vezes sem nem perceber).
Qual a experiência e opinião de vocês sobre Como evitar o overengineering?
Ps.: Eu teria pesquisado no TabNews "overengineering" mas a falta de uma lupa no título me fez escrever o artigo antes dessa pesquisa. Lembrei só agora no final disso de talvez haver algum macete pra pesquisar pelo google, mas como terminei o texto que queria vou deixar pra pesquisar agora e depois atualizo aqui com o resultado.
Resultado da pesquisa:
Encontrei esse artigo e já parei nele, pois encontrei o que precisava:
https://www.tabnews.com.br/devsoutinho/overengineering-vs-underengineering-o-dilema-da-vida-dos-devs
Comentei nele o seguinte texto:
Faaaala pessoal, minha empresa atual é minha primeira (e talvez única) experiência como desenvolvedor pra valer.
Entrei como trainee em 2011 e ano a ano fui avançando de fases até chegar à senioridade 👴
O que pude aprender nestes 12 anos, tendo passado por códigos legados em todas as nossas stacks (Delphi, Python, C#, Java, Node, ESB, Angular, React),
é que para um código ser bem feito, basta seguir alguns princípios básicos, como:
- Não repetir código (preferir métodos de responsabilidade única e que, sempre que possível, possam ser usados em mais lugares com a mesma necessidade)
- Não utilizar valores fixos dentro de métodos (preferir classes de constates e enum)
- Manter as responsabilidades das classes a todo custo (regra de negócio é em classe de regra de negócio)
- Faça código para os outros e não para você (a menos que você vá dar manutenção pra sempre, ai o filho é teu então crie como quiser 😅)
- Commit = Legado (que legado você quer deixar?)
Enfim, gostei desse vídeo, onde são expostos alguns destes princípios que sempre carreguei comigo, mas nunca cheguei a trocar figuras com alguém sobre.
Bons códigos a todos ✌🤓