Qualidade de Software em Pequenas empresas

15/11/2012 8:56:49 - Fábio Ferreira de Souza

Qualidade é o tema central da monografia que estou fazendo, este será o meu primeiro artigo científico, onde o foco é falar sobre como pequenas empresas, como a que eu tive e não deu certo, ou a várias que já trabalheim que em geral são emresas de pequeno e médio porte, como esse perfil de empresa que geralmente tem recursos bem limitados de pessoal, pode ter sistemas de qaulidade.

Neste post do meu site/blog, vou usar como rasculho pessoal deste trabalho onde quero dividir em 3 temas, baseados também em minha experiencia com minha empresa e meus antigos clientes e até fazendo um paralelo com onde sou empregado hoje:

Metricas

Gosto muito da fraze de Kaoru Ishikawa “O que não pode ser medido não pode ser controlado”, ele descreve 7 técnicas para qualidade de software, onde basicamente o foco é quantificar de nodo quantitativo qualquer informação.

E por falar de Informação, temos que lembrar da piramede do conhecimento, pois o que é informação se não um conjunto de dados, onde separados não representam nada, mas agrupados são sim uma informação.
E o conjunto de informação é chamado de conhecimento, e o conjunto de vários conhecimentos forma a inteligencia, o conhecimento, o sáber verdadeiro que é o dominio de forma madura sobre algo.

A fraze que tenho falado mais constantemente é “Mostre-me Números”, hoje há muita informação crua, conceitos sem bases, sem pesquisas, alguem simplesmente diz que uma tecnologia é melhor que a outra, sem nenhuma dado numérico, sem nenhum argumento científico quantitativo ou até mesmo qualitativo, ouço muitas afirmações subjetivas, pessoas fazem meia duzia de busca no Google, e o que encontram acham que é a verdade, mas esquecem que se o resultado de buscadores podem ser manipulados por que sabe fazer SEO, ou seja, nem tudo que parece realmente é.

No meu software Produto Certo que faço desde 2006, em certo momento criei o que eu chamava inocentemente de “indice de qualidade” que basicamente era um percentual baseado em 2 numeros:

  • Número de páginas geradas pelo sistemas (pageviwes)
  • Número de erros (qualquer erro em qualquer situação), onde estes erros são enviados para mim por e-mail até hoje

Essa foi de fato a primeira metrica de qualidade que não apenas fiz, mas entendi o valor de ter um numero que quantifica a qualidade da eficiencia do meu sistema.
Isso pois em alguns casos isolados, as vezes alguem ligava reclamando: “Meu site não funciona”, ai eu acessava e via que estava tudo funcionando, e não entendia o que estava acontecendo, e em geral depois de mais perguntas e testes, era percebido que o problema na aioria das vezes era problemas de mal uso do usuário, ou layout e informação sem claresa, marketing, css, ou seja conceitos abstratos, não logicos, que em caso de e-commerce gera a principal reclamação: “Meu site não vende”

Abaixo o atual desde LOG hoje, com várias outras metricas

Inicio: 14/11/12 07:49:18 (7:51:11) 24,031
Total de Requisições: 64554 / Acessos: 8402 / Robôs: 4320 / Usuários: 6651 / Erros: 9 (0,014%)(TRACE OFF)
Tempo de Processamento: 864s / Media: 102,795ms / Requisições por Segundo: 0,746

Olhando o que chamo de “indice de qualidade” do Produto Certo, tenho 0,014% de erro, ou seja, uma qualidade de 99,996% de páginas renderizadas sem nenhum erro para o usuário final.
Os outros números mostram que há quase que 1 acesso por segundo no sistema, onde o tempo médio com as inumeras consultas ao SQL fica em média um decimo de segundo, ou seja, o sistema é mais rápido que o tempo de PING, pois o servidor é nos Estados Unidos.
E nos e-mails de erro que recebo diariamente, não erros irrelevantes, de URL erradas, sessão expirada, ou tentativas de invasão.

Na ControlID, desenvolvendo o software de gestão de ponto, como serviço no modelo SAAS, ou números se tornaram mais impressionantes ainda, e lá estamos conseguindo medir eficiencias de cada query, proporcionando cada vez mais um sistema rapido com mais funcionalidades.

Testes

O Produto Certo chegou a um tamanho onde não é possivel para cada alteração de qualquer parte do código, não da para calcular, ou testar tudo.
São centenas de milhares de linhas de código interdependente, onde já ocorreu, sem que eu queira logico, alterações e mudanças desapercebidas que geraram erros catastroficos, onde o indice de páginas renderizadas não chegava a 1%.

A questão é que tudo precisa ser testado, e bem testado, e quando alguem desenvolve tudo, todos os modulos, e conhece o sistema do inicio ao fim, é mais nitido e facil perceber o que cada alteração irá gerar, mas quando se trabalha em equipe, em projetos maiores, onde nenhuma pessoa conhece 100% de todo o código, qualquer alteração, pode gerar problemas, e a unica forma de talvez evitar é criar rotinas de testes, pelo menos nos elementos mais criticos.

Por exemplo estou implementando novas rotinas de calculo de horas, que tem cerca de 10 novos parametros, ou seja, só a combinatória destas novas opções abrem cerca de 1024 novos casos de variações de uso, isso alem dos casos atuais que são ceca de 20 parametros, ou seja, é impossivel de um ser humano normal, testar todas as situações, mas é possivel ter rotinas de testes que contemplem a maioria destes casos.

Herois

Nunca esqueço o dia que eu fiu tentar vender o Produto Certo para uma empresa do governo, com unidades em alguns estados e em brasilia, e que achou muito legal o software, mas ao final me fizeram algumas perguntas que me fizeram pensar muito:

  • “E se você decidir parar sua empresa ?”
  • “Qual garantida de continuidade tenho deste serviço ?”
  • “E se você morrer ?”

Percebi que não adiantar seu um Expert, se eu tiver sozinho, todo o conhecimento está comigo, e se eu decidir mudar de empresa, mudar de vida, ganhar na loteria, ter uma doença terminal, tudo o que construi fica sem base e acaba.
Isso me fez pensar e lembrar de várias situações onde de Heroi me tornei na verdade um Vilão com o pensamento egoista de “Vou dominar o mundo”, para “Gerar depedencia eterna para que o cliente nunca cancele comigo”, isso tudo, é ilusão, foi imaturidade, insegurança, e a mais 1 ano quando vi que gerei muita dependencia de mim a clientes que eram tão pequenos como eu, e no final do mês não havia so suciciente nem para me sustentar pois o modelo de Negocio que eu tinha montado era baseado e centralizado tudo em uma unica pessoa, EU, que tinha que programas, vender, dar suporte, atender telefone, treinar, corrigir erros, visitar cliente, etc…

Na Pós Graduação, vi bastante a importancia de Processos de Software, como no CMMI,  onde cada pessoa com um papel bem definido se torna uma engrenagem de um todo, de por isso também, cada pessoa pode ser substituida, ninguem é totalmente fundamental, e sim o processo garante a continuidade do todo, e isso sim é saudável.

E até espiritualmente, como Cristão, vejo que Jesus deu o exemplo, e fez discipulos, que fizeram outros, e outros, e mesmo depois de 2000 há cristãos pois o processo é eficiente, todos são engrenagens, e Jesus não foi um Heroi, que sendo morto tudo acabaria, ele criou um processo de salvação para toda humanidade para qualquer ano até o fim dos tempos:

Então, Jesus aproximou-se deles e disse:
"Foi-me dada toda a autoridade no céu e na terra. Portanto,
vão e façam discípulos de todas as nações,
batizando-os em nome do Pai e do Filho e do Espírito Santo,
ensinando-os a obedecer a tudo o que eu lhes ordenei.
E eu estarei sempre com vocês, até o fim dos tempos".
(Mateus 28:18-20)

Hoje trabalho na ControlID, e gosto muito, faço parte de uma equipe ao todo conta com 7 programadores, lá minha funcção é o que sei fazer de melhor que é programar, vender o que estou desenvolvendo é responsabilidade de outro departamente que tem quase 10 vendedores internos e externos, dar suporte é outra equipe que cuida disso, eu apenas treino e capacito essa equipe, e assim eles multiplicam o conhecimento sobre o sistema, cobrar, negociar, fazer contrato, a diretoria pesquisa tendencias e dá ideias, pensam em projetos e produtos que podemos fazer para vender, assim, cada pessoa tem sua função, sem ser centralizadora, sem deter todo o poder, e tudo caminha cada vez mais para um sucesso seguro.

Mas, se derrependete aparecer uma oportunidade para que eu venha a trabalhar na Microsoft, Google, Intel, Dell, Oracle ou alguma outra empresa multinacional de renome, não estou procurando emprego, e nem meu colegas, mas tanto eu como qualquer um da minha equipe, ou de outro departamento, pode de alguma forma vir a sair da empresa, e realmente todo mês vejo pessoas saindo da empresa, de diversos cargos, tanto potque encontraram melhores oportunidades, ou foram demitidas, e também vejo muitos tentando entrar na empresa indo fazer entrevistas, alguns realmente atendem aos requisitos e entram, assim há sempre gente nova também.

Conclusão

Para que um software sobreviva é preciso que ele seja garantido por um processo de qualidade
que possa ser medido, testado, e e que todo o desenvolvimento possa ser continuado
independente dos profionais que originaram tudo.