IGTI Blog
Como a falta de qualidade em linhas de código de software impacta o tempo de execução das atividades

Processos recorrentes que prejudicam a produtividade das empresas

Como a falta de qualidade em linhas de código de software impacta o tempo de execução das atividades?

A área de software, por ser um ramo mais recente em nossa economia, ainda engatinha quando o assunto é a qualidade. O campo de trabalho sofre constantemente com alguns paradigmas e frases prontas que parecem nunca sair de nosso cotidiano: ‘software nasceu para dar problema’, ‘pegar software legado é arrumar confusão’, ‘fazer customização de software só traz problema’ e a mais famosa e incorreta de todas é a ‘se os bugs acabarem, acaba-se a carreira do desenvolvedor’.

Provavelmente você já fez ou já viu alguém torcer o nariz quando a palavra ‘testes’ é dita. Quando é exigido do desenvolvedor que ele documente as tarefas ou funções realizadas é impossível não ver uma cara de decepção. Desenvolvedores e analistas que preconizam a qualidade de processos de desenvolvimento de software são cada vez mais rotulados como os burocratizadores de um processo que poderia acontecer de forma mais dinâmica. É comum existirem em equipes de desenvolvimento pessoas que são exímios programadores e péssimos documentadores. Isso prejudica as ações futuras de manutenção e evolução do código pois o conhecimento fica restrito ao desenvolvedor naquele lapso de momento, já que a vida dos programadores está sempre agitada, pulando de sistemas em sistemas, linguagens distintas para atender a diversos contextos de caso de uso.

Percebe-se que esse profissional é cada vez mais dinâmico para alguns aspectos e letárgico para outros. O que muitos não conseguem enxergar é que a qualidade de software, seja no momento de aplicar um padrão de desenvolvimento de software orientado a objetos ou até mesmo realizar a criação ou atualização da documentação utilizando padrões comumente entendidos pela comunidade de desenvolvedores facilita as ações futuras.

Em alguns processos de software, a desorganização parte dos gestores que sucumbem a prazos impossíveis de serem cumpridos dentro da normalidade de um processo para que uma demanda seja atendida e o seu capital de giro aumente, possibilitando o aumento de sua capacidade de investimento e captura de novos negócios. Esse fator deve ser sempre levado em conta, pois sem dinheiro não existe a continuidade das atividades da empresa, porém um compromisso que não for cumprido ou entregue sem as devidas solicitações efetuadas pelos clientes pode colocar em risco a imagem da empresa, transformando-a em uma referência negativa de prestação de serviços.

Os gestores devem saber ponderar e principalmente conhecer a sua capacidade produtiva em relação a um software. Nesses casos, o processo a ser sacrificado para adequar o cronograma as necessidades dos clientes é a qualidade. Testes, documentações e as devidas validações são descartadas para que o produto seja entregue em prazo hábil. Já os gerentes de projetos e gestores como um todo acabaram em sua maioria perdendo um grande papel na qualidade das linhas de código, que é o de acompanhar a produtividade de seus funcionários e verificar se a qualidade em linhas de código (preconizada por padrões como GRASP e SOLID) estão sendo aplicados de forma efetiva. Um bom gestor conhece todos os sistemas que ele tem em sua responsabilidade e o ideal é que ele também conhecesse a essência de seu funcionamento, permitindo assim que soluções já desenvolvidas fossem aproveitadas através de reúso de software.

Por fim os desenvolvedores vivem em um dilema: os que gostam de testes e documentação se sentem estranhos fora do ninho quando estão realizando essas ações e acabam sendo questionados sobre a queda de sua produtividade, ao mesmo tempo que desenvolvedores que não são tão adeptos a essas técnicas desenvolvem soluções com baixo tempo e alta produtividade, distorcendo assim algumas avaliações gerenciais. Por fim, ainda existem os clientes que se aproveitam de um ambiente com baixo controle gerencial e de estimativas de trabalho e solicitam demandas muito além do que previamente acertado. Essas demandas, mudanças de fluxo de negócios, alterações de caso de uso geram diversos retrabalhos e insatisfação por parte dos desenvolvedores.

Mas você deve estar pensando: que exagero! Porém existe uma grande probabilidade de você já ter se defrontado com as seguintes situações:

  • sistemas legados impossíveis de darem manutenção;
  • sistemas que somente um desenvolvedor sabe todas as regras e funcionalidades do código;
  • sistemas incompletos que devem ser colocados em produção;
  • correção excessiva de bugs;
  • sistema com mais de 2 anos de desenvolvimento que ainda não foi para produção;
  • classes que não fazem nada ou fazem tudo;

Se você já atuou em sistemas com algumas dessas características, releia o primeiro parágrafo deste artigo e verifique se alguma das situações levantadas não poderiam ter sido a causa do problema enfrentado junto a seu software.

Não adianta conhecer os princípios de qualidade de códigos orientados a objetos se o sistema ou a equipe de trabalho não desenvolvem o código preconizando a qualidade na construção de sistemas. Quando o prazo torna-se cada vez mais escasso para entregar uma versão, a qualidade de software intuitivamente é deixada de lado. Portanto para que um software tenha um desenvolvimento próximo do ideal e as empresas possam ser exigidas a nível de qualidade do serviço que estão entregando alguns fatores são fundamentais:

  1. Qualificação contínua da equipe (diretores, gestores e desenvolvedores);
  2. Escopo de tarefas e tempos bem definidos,
  3. Utilização de ferramentas de qualidade para acompanhamento do planejamento, execução e controle de produção de um software,
  4. Organização de processos, onde a qualidade seja evidenciada e não descartada.

Acredito que seguindo essas premissas a chance de seu aprendizado sobre as técnicas de qualidade de software orientados a objetos serem mais bem aproveitados é bem mais elevada, fazendo com que o seu produto final tenha menos falhas e possa ser facilmente utilizado por outras soluções.

As empresas e desenvolvedores devem trabalhar em conjunto buscando ferramentas, técnicas e metodologias para facilitar a construção de softwares, melhorar a produtividade e manter a qualidade como alicerce principal das atividades rotineiras das fábricas de software.

Professor autor: Paulo Vitor Campos