O que é o Modelo de Maturidade de Excelência em Engenharia?

Os engenheiros normalmente sabem onde estão os pontos fracos do código. O mais difícil é chegar a acordo, enquanto equipa, sobre quais os problemas mais importantes e em que ponto está a sua resolução. Com o Modelo de Maturidade de Excelência em Engenharia, a sua equipa avalia 12 práticas distribuídas por quatro grupos (Qualidade e Normas de Código, Arquitetura e Escalabilidade, Gestão da Dívida Técnica, e Colaboração e Capacitação em Engenharia) numa escala de cinco níveis, de Ad Hoc a Otimizado. Como cada nível está descrito, as avaliações transformam impressões vagas sobre a qualidade em algo concreto: revisões de código que apanham bugs mas não difundem conhecimento, ou dívida técnica que toda a gente conhece mas ninguém acompanha. Esta linguagem comum ajuda engenheiros e líderes a chegar a acordo sobre o que melhorar primeiro. Se o aplicar regularmente, verá se as mudanças que fez levaram as práticas a subir de nível.

Dimensões

Qualidade e Normas de Código

Com que consistência a equipa escreve código limpo, fácil de manter e bem revisto, orientado por normas partilhadas.

  • Consistência das Normas de Código

    Com que consistência a equipa aplica as diretrizes de código partilhadas.

    1. Ad HocAs práticas de código variam muito; não se seguem normas partilhadas.
    2. EmergenteExistem algumas normas, mas são aplicadas de forma inconsistente.
    3. DefinidoAs normas estão documentadas e são geralmente seguidas.
    4. GeridoAs normas são aplicadas de forma consistente e revistas com regularidade.
    5. OtimizadoA cultura de qualidade de código é forte; as normas evoluem através da colaboração e das boas práticas.
  • Manutenibilidade do Código

    A facilidade com que o código pode ser lido, compreendido, modificado e expandido.

    1. Ad HocO código é difícil de ler, navegar ou reutilizar.
    2. EmergenteForam feitas algumas melhorias, mas persistem problemas de manutenibilidade.
    3. DefinidoO código é, na sua maioria, compreensível e fácil de manter.
    4. GeridoO código é limpo, modular e previsível, com boas práticas de manutenibilidade.
    5. OtimizadoA manutenibilidade faz parte da cultura; as equipas melhoram e fazem evoluir proativamente a estrutura do código.
  • Qualidade das Revisões de Código

    Até que ponto as revisões de código melhoram a qualidade e a aprendizagem da equipa.

    1. Ad HocAs revisões são raras, apressadas ou superficiais.
    2. EmergenteFazem-se revisões, mas variam muito em profundidade e utilidade.
    3. DefinidoAs revisões detetam problemas e melhoram a qualidade de forma fiável.
    4. GeridoAs revisões são construtivas, consistentes e melhoram tanto a qualidade como as competências da equipa.
    5. OtimizadoAs revisões são colaborativas, ricas em conhecimento e essenciais para a excelência em engenharia.

Arquitetura e Escalabilidade

Até que ponto a arquitetura do sistema é clara e quão bem este escala, funciona e gere o risco técnico.

  • Clareza da Arquitetura

    Até que ponto a arquitetura do sistema está definida, documentada e é compreendida.

    1. Ad HocA arquitetura é pouco clara ou não está documentada.
    2. EmergenteExiste alguma documentação, mas é incompleta ou pouco clara.
    3. DefinidoA arquitetura está documentada e é compreendida pela maioria dos membros da equipa.
    4. GeridoA arquitetura orienta as decisões e evolui através de uma colaboração estruturada.
    5. OtimizadoA arquitetura é escalável, intencional e continuamente refinada com base em conclusões e aprendizagens.
  • Escalabilidade e Robustez

    Capacidade do sistema para responder ao crescimento, às exigências de desempenho e às necessidades de fiabilidade.

    1. Ad HocO sistema tem dificuldades sob carga; o escalonamento não é planeado.
    2. EmergenteAlguns componentes escalam, mas persistem limitações.
    3. DefinidoO sistema suporta a carga habitual com um desempenho aceitável.
    4. GeridoO sistema escala de forma fiável e o desempenho é monitorizado e otimizado ativamente.
    5. OtimizadoA escalabilidade é um ponto forte; o sistema absorve o crescimento de forma tranquila e previsível.
  • Gestão do Risco Técnico

    Até que ponto os riscos de engenharia são identificados, avaliados e mitigados.

    1. Ad HocOs riscos surgem tarde e causam perturbações significativas.
    2. EmergenteOs riscos são discutidos ocasionalmente, mas não são geridos de forma sistemática.
    3. DefinidoOs riscos são identificados no planeamento e tratados quando necessário.
    4. GeridoUma avaliação de riscos estruturada permite uma mitigação proativa.
    5. OtimizadoA gestão do risco está integrada em todos os processos de engenharia e evita problemas graves.

Gestão da Dívida Técnica

Com que visibilidade a dívida técnica é acompanhada, reduzida e relacionada com o seu impacto na entrega.

  • Visibilidade da Dívida

    Como a dívida técnica é identificada, acompanhada e comunicada.

    1. Ad HocA dívida técnica está escondida e não é gerida.
    2. EmergenteHá alguma consciência da dívida, mas raramente é documentada.
    3. DefinidoA dívida é acompanhada e revista periodicamente.
    4. GeridoO backlog de dívida é priorizado e incluído no planeamento.
    5. OtimizadoA visibilidade e a prevenção da dívida são práticas centrais de engenharia.
  • Práticas de Redução da Dívida

    Até que ponto a equipa trata e reduz a dívida técnica.

    1. Ad HocA dívida acumula-se sem qualquer intervenção.
    2. EmergenteA dívida é discutida, mas raramente resolvida.
    3. DefinidoA dívida é tratada quando é viável.
    4. GeridoA redução da dívida é proativa e faz parte do trabalho regular.
    5. OtimizadoA equipa mantém a dívida no mínimo graças a uma engenharia disciplinada e à melhoria contínua.
  • Consciência do Impacto

    Compreensão de como a dívida técnica afeta a velocidade, a qualidade e o risco.

    1. Ad HocA equipa não relaciona a dívida técnica com os problemas de entrega.
    2. EmergenteHá alguma consciência, mas pouca ação.
    3. DefinidoO impacto da dívida é compreendido e influencia algumas decisões.
    4. GeridoO impacto da dívida orienta de forma consistente o planeamento e a priorização.
    5. OtimizadoUma cultura forte de consciência da dívida evita a sua acumulação e sustenta uma velocidade sustentável.

Colaboração e Capacitação em Engenharia

Até que ponto a equipa partilha conhecimento, alarga competências e dá aos programadores as ferramentas para fazerem um excelente trabalho.

  • Partilha de Conhecimento

    Até que ponto o conhecimento e a experiência em engenharia são partilhados na equipa.

    1. Ad HocO conhecimento está isolado em silos; a dependência de poucas pessoas é elevada.
    2. EmergenteHá alguma partilha, mas de forma inconsistente.
    3. DefinidoO conhecimento é partilhado através de canais informais ou estruturados.
    4. GeridoO conhecimento circula com facilidade; a integração de novos membros é eficiente.
    5. OtimizadoCultura altamente colaborativa, com aprendizagem contínua e responsabilidade partilhada.
  • Amplitude e Flexibilidade de Competências

    A capacidade da equipa para trabalhar em várias áreas do sistema.

    1. Ad HocSilos fortes criam estrangulamentos por dependência.
    2. EmergenteHá ocasionalmente desenvolvimento de competências cruzadas.
    3. DefinidoOs membros da equipa conseguem cobrir a maioria das áreas principais.
    4. GeridoGrande flexibilidade; a equipa adapta-se rapidamente às exigências do volume de trabalho.
    5. OtimizadoUma experiência profunda e abrangente em toda a equipa permite entregas rápidas e resilientes.
  • Capacitação dos Programadores

    Qualidade das ferramentas, processos e ambiente que apoiam a produtividade dos programadores.

    1. Ad HocAs ferramentas estão desatualizadas ou são inconsistentes; o atrito é elevado.
    2. EmergenteHá melhorias em curso, mas persistem lacunas.
    3. DefinidoOs programadores têm ferramentas fiáveis que respondem às necessidades básicas.
    4. GeridoAs ferramentas são simples, eficientes e melhoradas de forma consistente.
    5. OtimizadoUma experiência de desenvolvimento de excelência permite um trabalho de engenharia rápido e de alta qualidade.

Quando utilizar essa avaliação de saúde

  • Para definir um ponto de partida da maturidade técnica da sua equipa de engenharia em código, arquitetura e colaboração.
  • Em retrospetivas trimestrais ou de lançamento, para acompanhar a evolução das práticas de engenharia.
  • Quando chega um novo líder de engenharia que precisa de uma visão franca dos pontos fortes e das lacunas atuais.
  • Antes de investir em ferramentas, refatorização ou mudanças de processo, para decidir onde o esforço terá mais impacto.
  • Quando a equipa está a crescer e quer que as normas, a partilha de conhecimento e a arquitetura acompanhem esse crescimento.

Dicas e truques

  • Peça a cada pessoa que avalie individualmente antes da discussão, para que as opiniões sinceras surjam antes de o pensamento de grupo se instalar.
  • Dedique a maior parte do tempo às dimensões com maior dispersão de pontuações. A discordância mostra muitas vezes onde as pessoas veem o sistema de forma diferente.
  • Encare os níveis como etapas e não como notas. Passar de Emergente a Definido é um progresso real, por isso reconheça-o.
  • Escolha uma ou duas dimensões para melhorar até à próxima avaliação, em vez de tentar mudar tudo de uma vez.
  • Repita a avaliação com uma cadência regular para que o progresso nas práticas de engenharia continue visível.

Perguntas frequentes

O que é o health check de Excelência em Engenharia?
É uma avaliação baseada em maturidade das suas práticas de engenharia, abrangendo qualidade de código, arquitetura e escalabilidade, gestão da dívida técnica e colaboração. Cada uma das 12 dimensões é avaliada em cinco níveis, de Ad Hoc a Otimizado, o que dá à equipa uma linguagem comum para perceber em que ponto se encontra.
Em que difere de um health check de equipa normal?
Um health check de equipa normal capta como as pessoas se sentem. Este avalia o grau de consolidação de cada prática, e cada pontuação corresponde a um nível descrito, pelo que os resultados mostram o que seria preciso para chegar ao nível seguinte.
Quem deve participar?
Engenheiros, tech leads e gestores de engenharia. Qualquer pessoa próxima da forma como o código é escrito, revisto e mantido tem uma perspetiva útil.
Com que frequência devemos realizá-lo?
A maioria das equipas realiza-o trimestralmente ou em marcos de lançamento importantes. Um ritmo regular permite acompanhar tendências e verificar se o trabalho de melhoria está a dar resultados.
O que significam os níveis de maturidade?
A escala vai de Ad Hoc a Emergente, Definido, Gerido e Otimizado. Os níveis mais baixos indicam práticas inconsistentes ou reativas; os níveis mais altos indicam práticas consistentes e proativas que continuam a melhorar.