Benefícios
- Mantêm um código organizado e limpo;
- Facilita e agiliza as manutenções;
- Possibilita escalonar o seu projeto mais facilmente;
- Mantêm uma coesão sobre o projeto;
- Facilita a leitura e o entendimento do código;
- Evitam códigos repetitivos;
- Evitam classes gigantes com vários IFs ou métodos que fazem a mesma coisa praticamente;
Todos os benefícios que citei ocorrem quando o time esta engajado em manter um código limpo, tendo a consciência de facilitar a manutenção futura e manter o ciclo de vida do projeto saudável, assim como tendo o conhecimento correto sobre como utilizar os padrões. Um padrão mal definido ou mal utilizado acaba gerando o efeito contrário aos benefícios que citei, principalmente gerando complexidade e demora nas manutenções.
Minhas experiências
Durante minhas experiências de desenvolvimento já me deparei com sistemas legados mal escritos com rotinas muito amarradas não permitindo escalonar sem reescrever a rotina toda e durante a manutenção ter que copiar e colar códigos parecidos ou até mesmo iguais em várias classes diferentes para manter o que já foi feito. Nestes caso tenho adotado a postura de estudar a rotina e implementar alguns padrões de projeto.
Na correria do dia a dia de um desenvolvedor, muitos das vezes nos deparamos com prazos apertados, cobranças de agilidade no desenvolvimento e falta de conscientização do time sobre a utilização e importância do código limpo, legível, de fácil manutenção e crescimento saudável. Inserir um padrão de projeto em projeto legado, mal escrito, acaba dificultando ainda mais a vida do programador em meio a um ambiente de cobrança onde tudo tem que ser entregue rápido. Normalmente, em uma rotina nova, escrever um código utilizando os padrões de projeto se demora mais do que escrever um código mal feito, mas são importantes para a manutenção futura. Em um cenário de ambiente conforme citei, tenho adota a postura de conscientização do time e procurando um equilíbrio entre agilidade e implementação de padrões de projeto quando necessário e sempre que me deparo com um problema de implementação de código, paro um tempo para refatorar.