Muito se fala sobre o que caracteriza um bom código, como escrever um bom código e por que um bom código é… bom do lado da programação.
Hoje, no entanto, queremos abordar o impacto do código bom (ou ruim) no software do lado comercial. Por que não vale a pena economizar no início da criação de um novo sistema e como um código ruim pode gerar custos enormes no futuro?
Qualidade do código – o que torna um bom código?
Aí vem o primeiro problema. Como desenvolvedores, podemos avaliar facilmente, mesmo após uma análise inicial grosseira, se o código é bom ou não. Somos capazes de apontar erros específicos e explicar por que as soluções utilizadas estão erradas. Porém, como a qualidade do código pode ser avaliada por quem compra o software, ou seja, o cliente que não o conhece completamente?
Ao usar o aplicativo, é difícil avaliar se ele é baseado em um bom código, especialmente se ainda não foi divulgado e não é amplamente utilizado. No entanto, existem dois sinais que podem aparecer e nos alertar de que há algo errado com o software.
Velocidade de operação
Se acabamos de comprar um sistema de uma empresa de software (independentemente de ser um aplicativo móvel, site ou aplicativo da web), devemos prestar atenção especial à velocidade de operação. Se houver problemas de desempenho logo no início, eles certamente vão piorar no futuro. Um aplicativo recém-escrito não deve ser executado lentamente. Se o servidor no qual este software está localizado tiver problemas para lidar com um único visitante, certamente não será capaz de lidar com todos os seus usuários quando mil ou mesmo vários milhares de pessoas começarem a usar o aplicativo ao mesmo tempo.
Estabilidade de operação e ausência de erros
Normalmente, a construção de um aplicativo é realizada em vários estágios. Primeiro, os desenvolvedores criam a versão alfa, depois a versão beta, depois a versão RC (release candidate) e, finalmente, a versão de produção. As duas primeiras versões (alfa e beta) podem conter bugs e o uso desses aplicativos pode ser um incômodo. No entanto, essas não são versões destinadas ao uso público, mas sim para testadores. Toda empresa de desenvolvimento de software confiável possui procedimentos adequados que permitem encontrar e corrigir bugs desde as primeiras versões.
Portanto, se recebermos um produto final que contenha erros, significa que a equipe de teste foi negligente ou a empresa não tem nenhuma e os aplicativos são liberados sem verificação.
Infelizmente, os dois sintomas acima podem ocorrer rapidamente, mas não necessariamente. Então, se obtivermos um aplicativo mal escrito, mas que ainda funciona de maneira rápida e estável, qual é o problema? Vamos explicar.
Código incorreto pode arruinar seu orçamento
O fato de problemas de velocidade e estabilidade do aplicativo não terem ocorrido desde o início de seu uso não significa que eles não aparecerão no futuro. Problemas que não foram detectados imediatamente se darão a conhecer. No entanto, quando ainda não os conhecemos, nós – como proprietários de software – assumimos uma espécie de dívida técnica (uma situação em que soluções aparentemente mais fáceis e simples acabam sendo menos lucrativas a longo prazo). Deixamos os problemas para depois. Infelizmente, com o tempo, haverá cada vez mais deles e seu reparo se tornará mais oneroso. Vejamos o cenário que acontece com muita frequência.
No início, o cliente escolheu a oferta mais barata entre as empresas de software e recebeu um aplicativo com código ruim. Inicialmente, tudo funcionou bem, mas com o tempo, mais e mais problemas começaram a aparecer. O software estava ficando lento e os clientes estavam saindo porque estavam insatisfeitos com ele devido à instabilidade e travamentos constantes. O dono do aplicativo finalmente se cansou e decidiu contratar outra equipe de desenvolvimento, agora por um preço mais alto, esperando justamente que junto com o preço, a qualidade dos serviços prestados também fosse maior. O cliente tinha grandes esperanças na nova equipe de desenvolvimento, sabendo que o código precisava ser melhorado. Nesta situação, apenas dois cenários eram possíveis:
- escrever todo o aplicativo do zero, o que estaria associado a custos enormes,
- reparar, peça por peça, o que já existe (o que também significaria custos muito elevados).
Escrevendo o aplicativo do zero
Escrever todo o aplicativo do zero pode parecer uma boa ideia. Finalmente, teremos certeza de que a qualidade do código será alta e o aplicativo funcionará de maneira estável. Infelizmente, como escrevemos anteriormente, isso estará associado a custos enormes. O dinheiro que gastamos inicialmente na criação de um novo software será perdido e teremos que investir mais.
Lembremos também que estamos considerando um cenário no qual o aplicativo já está em execução e os clientes o estão usando. Mesmo se começarmos a construir um novo aplicativo ao mesmo tempo, ainda teremos que incorrer nos custos de “corrigir” os erros no sistema antigo continuamente. Além disso, a criação de uma nova solução envolverá a transferência de dados, alteração de sua estrutura etc. Durante esse processo, o aplicativo em execução terá que ser desligado por pelo menos algumas horas e os clientes não ficarão satisfeitos com isso.
Corrigindo o aplicativo atual
O segundo cenário possível é consertar, peça por peça, o código existente. Esta solução também tem suas desvantagens. Em primeiro lugar, como no cenário anterior, ainda teremos que corrigir os erros existentes de forma contínua, o que obviamente aumentará os custos. Além disso, tal operação deve ser planejada com precisão cirúrgica. Leva muito tempo para analisar e descobrir cada etapa. Muito tempo também deve ser gasto na escrita de testes automáticos para que, ao corrigir uma funcionalidade, possamos ter certeza de que não quebraremos acidentalmente algo em uma área completamente diferente. Todo o processo de reparo é muito demorado e arriscado.
Não podemos indicar facilmente qual dos dois cenários descritos é melhor. Cada um deles tem suas desvantagens. A tomada de decisão deve ser precedida de uma análise detalhada da situação, características da aplicação, qualidade do código e custos.
Um bom código é um investimento
Muitas vezes, durante sua busca, o cliente solicita um orçamento de projeto de diferentes empresas e depois compara as ofertas. Não há nada incomum ou ruim nisso. O problema surge apenas quando o preço é o único ou o principal critério na escolha de uma empresa. É difícil para quem não conhece programação perceber por que é que uma empresa vai fazer a encomenda por 3 mil euros e a outra por 15 mil euros. Qual é a razão por trás de tal diferença de preço? Por que não é uma boa ideia economizar logo no início, mas é melhor tratar essa compra como um investimento que terá retorno no futuro?
Uma boa empresa oferece muito mais do que apenas escrever códigos
Como escrevemos anteriormente, uma empresa de software confiável tem padrões apropriados desenvolvidos para evitar o lançamento de código de baixa qualidade. Esses procedimentos incluem:
- Revisão de código. Cada pedaço de código escrito por um programador é revisado antes do lançamento por pelo menos um outro desenvolvedor. Se eles tiverem algum comentário ou encontrarem algum erro, não será possível liberar o código até que todos os comentários sejam resolvidos.
- QA (garantia de qualidade). Esta é uma equipe de testadores que verifica minuciosamente a estabilidade e a segurança do aplicativo. Esses testes podem levar vários dias e mostrar até os menores erros.
- Testes automatizados. Além de uma equipe separada cuja tarefa é o teste manual, também existem testes automatizados. Graças a eles, com um único comando podemos verificar se o código que acabamos de escrever não quebrou acidentalmente o aplicativo em uma área completamente diferente e inesperada (isso acontece com bastante frequência).
- Documentação – Uma boa documentação nos permite apresentar rapidamente novos programadores ao projeto e entender como os componentes individuais do aplicativo funcionam. Isso pode parecer trivial, mas a falta de documentação é um problema real, principalmente no caso de grandes sistemas.
Manutenção e desenvolvimento de aplicativos
Vamos ter em mente que a tecnologia está se desenvolvendo muito rápido. O código do nosso aplicativo também deve se desenvolver junto com ele. Mesmo que no começo tenhamos um ótimo aplicativo com código de alta qualidade, depois de alguns anos pode acontecer que não valha mais nada. Uma boa empresa de software realiza atualizações continuamente e adapta o código às tendências e tecnologias atuais. Um site que parecia supermoderno há cinco anos, mas carecia de desenvolvimento contínuo, hoje parecerá desatualizado e não estará de acordo com os padrões modernos.
Conclusão
A qualidade do código se traduz diretamente na qualidade da operação do software. Nenhum de nós gostaria de usar um aplicativo que trava o tempo todo, é lento e contém erros. Infelizmente, o preço anda de mãos dadas com a qualidade. No entanto, tenhamos em mente que quanto mais dinheiro investirmos no início, menores serão os custos que incorreremos no futuro.