O que qualidade de software tem a ver com a sua vida, dev?

Juliano Vaz
Apple Developer Academy | UFPE
4 min readApr 30, 2021

"In software development, perfect is a verb, not an adjective. There is no perfect process. There is no perfect design. There are no perfect stories. You can, however, perfect your process, your design, and your stories" — Kent Beck

Nos últimos meses estive trabalhando num projeto e durante esse tempo, eu pude me aprofundar em uma sub-área da engenharia de software: qualidade de software. E se você não acredita em modelos de referência (qualidade), por exemplo, para interfaces, como o Human Interface Guidelines da Apple, ou o CMMI (Modelo Integrado de Maturidade em Capacitação) para processos em uma organização de software, este texto é para você.

Photo by Sam Moqadam on Unsplash

Chega a ser peculiar a noção de qualidade de software. Alguns vão apontar para requisitos não-funcionais e funcionais como um cojunto de atividades que devem existir no software, usabilidade, eficiência, eficácia, segurança. Outros vão dizer que na verdade, a regra de negócio deve se sobressair e que o foco principal deve ser sempre a entrega de valor para utentes de uma dada proposta de um cliente.

Mas, o que isso tem a ver com você, dev?

Isso tem tudo a ver com o que você enquanto profissional quer assumir como prática de desenvolvimento. Eu sei, essa frase pode soar bem cliquê, porém são nesses detalhes que você poderá se destacar. É simples: Se sua prática é ad hoc, ou seja, para aquele fim, para aquela atividade, se ela orientada a correção de eventuais problemas que existerem aos invés de sua prevenção, você deveria revisitar alguns dos modelos de referência do seu arcabouço profissional. Especialmente por que corrigir erros é perder tempo com coisas que poderiam ter sido evitadas, e mais que isso, é perder dinheiro.

Como afirma o prof. Marco Valente, a engenheria de software, tem como objetivo "tratar da aplicação de abordagens sistemáticas, disciplinadas e quantificáveis para desenvolver, operar, manter e evoluir software. Ou seja, Engenharia de Software é a área da Computação que se preocupa em propor e aplicar princípios de engenharia na construção de software". Mesmo com dificuldades essenciais como complexidade, conformidade, facilidade de mudança e invisibilidade. Existem também, nesse contexto, as dificuldades acidentais, como problemas ou limitações de tecnologia, ou a pouca maturidade técnica, requisitos mínimos exigidos por instituições mantenedoras de software.

E aqui, quando falamos de modelos, lamentamos que os modelos que temos para desenvolvimento de software, não sejam perfeitos como modelos físicos e matemáticos. Especialmente, porque a complexidade é essencial e atomiza todo projeto de software. Agora, o desenvolvimento e adoação desse produto ou serviço vai depender de muitos outros fatores que não somente o uso de um modelo. Não existe bala de prata.

No entanto, entender de conceitos importantes da engenharia de software, boas práticas e recomendações, ou seja, conhecer razoavelmente os modelos de referência (aqui exemplificados por de qualidade de software, de design de interfaces, etc) de sua área de trabalho implica diretamente na qualidade do que você produz, no aumento de sua produtividade, redução de custo e tempo, e mais que isso, na aprovação dele, tanto por partes de instituições mantenedoras, por exemplo, quanto do seu cliente, maximizando transitivamente a experiência para utentes. De bônus, além da satisfação pessoal, profissionalmente, essa base pode te colocar em posição diferenciada.

E nesse ponto, lembro que nesse projeto que participei, usamos a metodologia ágil Scrum como esqueleto no projeto. E uma das bases dela, é a adaptabilidade. E se adaptar, nos termos que citei assim, se refere a se moldar a situações, contextos, problemas, ou seja, a corrigí-los. E isso pode ser além de custuso, frustrante e desmotivador para você, para sua equipe e para sua organização. Entretanto, essa característica da metodologia, não a inviabiliza de acomplá-la a modelos de referência, muito pelo contrário. Essa junção pode melhorar, e muito, seu nível de maturidade profissional e da sua organização, como exemplificado nesse trabalho, Mapeamento das práticas de Scrum nas áreas de processo do CMMI e uma análise de sua aderência.

(TL; DR) Portanto, quanto mais você conhecer os modelos de referência do seu contexto, menor será as necessidades de retrabalho e correção de eventuais questões que poderiam ser evitadas (pleonasmo mesmo!). A complexidade faz parte do processo de desenvolvimento de software, entretanto buscar melhorar o arcabouço de domínio da sua área de trabalho é tornar-se um profissional melhor constantemente. Modelos de referência, dev, em especial de qualidade de software, falam sobre práticas preventivas em relação a riscos que pondem ser potenciais problemas, em substituição as práticas reativas durante o processo desenvolvimento.

--

--

Juliano Vaz
Apple Developer Academy | UFPE

Baiano, cientista da computação, educador, dev iOS. Além de antirracista, artista, aleatório e eclético.