Boa noite fechamentos, em todos estes anos acompanhando fóruns e grupos de desenvolvimento, uma coisa parece comum e inerente aos novos desenvolvedores, eles estão muito preocupados em desenvolver sistemas performáticos.
Essa galera nova realmente está muito preocupada com a questão do desempenho, isso é ruim? claro que não, um sistema que não é performático com certeza não irá se vender, de que adianta um belo frontend se o sistema demora vários segundos para carregar uma página/tela?
Mas a dúvida que surge com esta questão é: até que ponto devemos nos preocupar com a performance/otimização? ainda mais de forma prematura (o produto ainda não existe).
Devemos lançar um produto sabendo que o sistema não irá atender uma demanda de muitos usuários?
Devemos adiar o lançamento do produto para rever a perfomance do sistema?
Na minha opinião, o foco principal deve estar em escrever código manutenível, com uma arquitetura sólida e de fácil entendimento, micro otimizações devem ser evitadas e padrões/convenções de desenvolvimento devem ser definidos.
Obviamente isso não significa que os requisitos de performance devem ser ignorados, devemos avaliar o público alvo do produto, performance é um fator crítico? existe a possibilidade de lançar um MVP para receber feedbacks enquanto se trabalha em uma versão mais performática?
“Vou fazer de qualquer jeito só pra colocar o produto na rua” não deve ser uma opção, é necessário entregar o produto com uma qualidade mínima.
Usando como parâmetro um app mobile, colocar o mesmo na rua sem levar em questão o fator performance pode minar todas as possibilidades de sucesso do mesmo (digo isso por experiência própria).
Um outro detalhe que deve ser considerado é se a linguagem de desenvolvimento que escolhemos é a mais adequada para o produto que está sendo desenvolvido, é completamente compreensível que desenvolvamos na linguagem que nos sentimos mais confortáveis, mas se tratando de performance, a linguagem que estamos usando é a melhor opção? um projeto misto não seria mais viável? talvez angularJS no frontend com node.js no backend não traria mais velocidade no carregamento das páginas ao invés de fazer tudo com PHP ou ASP.NET?
Linguagens de programação não são balas de prata, dificilmente uma linguagem vai atender bem todos os casos (perceba que atender todos os casos e atender BEM todos os casos nesse contexto são coisas diferentes), o backend do facebook tem mais de 4 linguagens diferentes atuando em conjunto (fora a infra parruda) para que tudo escale tão bem e atenda bem todos os usuários.
Não é necessário DOMINAR várias linguagens de programação, mas ao menos saber as vantagens e desvantagens de cada uma é um ponto a se considerar.
O maior problema é que com essa preocupação excessiva com desempenho, esqueçamos que um bom software tem que ter qualidade, ser bem testado, ser modular e ter um design decente.
No geral, se a performance tem um impacto muito alto no sucesso do produto, é necessário se preocupar com isso já no levantamento de requisitos, deixar para a última hora pode trazer sérias consequências e riscos desnecessários ao projeto, mas temos que nos preocupar com otimizações que realmente vão trazer um diferencial para o nosso produto e parar de se preocupar se vamos concatenar strings com String.Concat ou com +, otimizações são boas quando são necessárias.
Pra variar, digitei digitei e não digitei nada, até o próximo post que possivelmente só irá sair ano que vem, boas festas para todos os visitantes e bons códigos.
Meus dois centavos sobre performance,