3 pontos por GN⁺ 2023-12-09 | 1 comentários | Compartilhar no WhatsApp

Ausência de ensino sobre como construir qualidade de software

  • Ao estudar ciência da computação na universidade, falta ensino sobre garantia de qualidade de software (QA).
  • A maior parte do tempo é dedicada a algoritmos, ao funcionamento dos computadores, à história das linguagens e dos conceitos etc.
  • Há semestres sobre abordagens de gestão de projetos e Scrum, mas QA não é abordado de forma alguma.

Como as empresas lançam produtos dentro do prazo

  • Por questões de orçamento, as empresas são as primeiras a cortar padrões e medidas de QA dos projetos.
  • Quando o desenvolvimento atrasa ou o escopo aumenta, não sobra tempo suficiente para QA.
  • Lançam software instável após no máximo alguns testes não estruturados.

Como sair da roda do hamster

  • Leva anos para acumular experiência e confiança para falar sobre medidas de QA que estão faltando em um projeto.
  • Você encontra monitoramento ausente e enfrenta problemas como falhas em sistemas de produção.
  • Se as medidas de QA não forem implementadas, surge o problema de não aprender de verdade.

Falar sobre dinheiro

  • Explicar que o software será “mais estável” ou “muito mais fácil de manter” não é algo concreto para quem não é desenvolvedor.
  • É preciso falar sobre o custo de não fazer QA.
  • Explicar as medidas de QA em termos de custo, com exemplos, é eficaz.

Dose mínima eficaz

  • Não se deve projetar em excesso as medidas de QA nem bloquear o andamento do projeto.
  • É importante testar as funções principais da aplicação e verificar se elas sempre funcionam como esperado.
  • Usa-se o conceito de “dose mínima eficaz” (MED), começando pelas partes mais importantes.

O que observar com atenção

  • Ao iniciar ou entrar em um novo projeto, procure conceitos de QA.
  • Documentos ou planos de teste que mostrem se a equipe pensou em QA são importantes.
  • Escrever testes junto com o novo código ajuda a estruturar o código para que ele seja realmente testável.

Benefícios para o projeto

  • Ao falar sobre qualidade e sugerir soluções possíveis, você amplia sua influência como desenvolvedor.
  • Medidas de QA permitem que o projeto cresça em um ritmo saudável.

Como melhorar o projeto

  • Ao usar medidas de QA, você pode passar a ser conhecido como alguém que escreve software de qualidade no projeto.
  • É preciso considerar o MED no projeto e ser uma voz de mudança dentro da equipe.

Opinião do GN⁺

O ponto mais importante deste texto é a falta de consciência sobre a importância da garantia de qualidade (QA) no processo de desenvolvimento de software e sobre como implementá-la. QA costuma ser negligenciada, mas é essencial para o sucesso e a estabilidade do projeto no longo prazo. O texto é interessante e útil por conscientizar engenheiros de software iniciantes sobre a importância de QA e por apresentar formas concretas de integrá-la em projetos reais.

1 comentários

 
GN⁺ 2023-12-09
Comentários do Hacker News
  • Engenharia de software muitas vezes não é um tema central da ciência da computação (CS), sendo ensinada em outras áreas, como disciplinas optativas ou cursos de engenharia de software.

    Na CMU, há programas de mestrado e doutorado em engenharia de software, e diversos tópicos são ensinados, incluindo os mencionados no post do blog.

  • Há a experiência de que é mais fácil colaborar com pessoas que têm formação em ciência da computação. Elas entendem a importância de bons algoritmos e não tentam implementar por conta própria coisas como parsers ou criptografia.

    Aponta-se que, na área de engenharia de software, falta um processo de correção de visões ingênuas sobre trabalho em equipe e qualidade.

  • É possível aprender a desenvolver software de alta qualidade em empresas experientes.

    Antigamente eram empresas FAANG, mas hoje também dá para aprender em empresas como a TailScale. Em vez de abusar de microsserviços sem sentido, Docker e processamento de JSON, é possível elevar a qualidade usando QuickCheck, teste de hipóteses e fuzzing.

  • A afirmação de que é preciso entregar software sem bugs dentro do prazo é uma premissa inadequada para começar um artigo sobre software de qualidade.

    Acreditar que é possível entregar código sem bugs é uma ideia distante da realidade.

  • Existem programas de engenharia da computação e universidades que enfatizam estágios e experiências práticas.

    Muitos departamentos de CS em universidades surgiram a partir de departamentos de matemática e, por isso, têm foco em teoria. A universidade não é apenas uma escola profissionalizante, mas um lugar para treinar a capacidade de dominar materiais complexos.

  • A alegação de que a universidade ensina a construir software industrial é exagerada.

    Hoje, com pipelines de deploy contínuo generalizados, ter um departamento de garantia de qualidade verificando bugs manualmente é visto como um método ultrapassado.

  • O argumento de que o software será “mais estável” ou “mais fácil de manter” não convence pessoas que não trabalham diretamente no codebase.

    Os desenvolvedores falam sobre o custo de não fazer garantia de qualidade (QA), e essa é uma linguagem que o negócio e os gestores entendem.

  • É possível escolher três entre qualidade, tempo, complexidade de comunicação e custo.

    Engenharia de software é um esporte coletivo no qual é difícil aplicar processos de fábrica; por isso, é preciso valorizar o trabalho em equipe e o crescimento individual.

  • Desenvolvedores de software aprenderam a fazer software de alta qualidade, mas enfrentam dificuldade para aplicar isso na prática porque MBAs ou conselhos que dirigem a empresa não entendem isso.

    Na maioria dos locais de trabalho, a opinião dos desenvolvedores de software em geral é ignorada.

  • Qualidade é, na prática, uma característica que só pode ser adquirida por meio de exercício.

    A capacidade de produzir resultados de alta qualidade é obtida por meio de prática repetida.