Atuação de Engenharia e Operações na construção do Certo Produto digital

Por dti digital|
Atualizado: Jul 2023 |
Publicado: Out 2022

Fazer certo o produto digital significa prezar por uma engenharia saudável, se atentando a pontos como qualidade técnica, escalabilidade e segurança da solução, mas também por uma metodologia de trabalho evolutiva. Isso permite que tenhamos um produto resiliente, capaz de evoluir, crescer e se adaptar para atingir seus objetivos. A disciplina de Engenharia é a guardiã das melhores práticas de desenvolvimento de software, atuando para que a evolução técnica do produto habilite que o valor esperado seja gerado. A disciplina de operações é a responsável por essa mentalidade de melhoria contínua

Como saber se estou fazendo certo o produto digital?

Já sabemos que o precisamos para fazer o Produto Certo, mas aí surge um novo questionamento, como saber se estamos fazendo certo o produto? Essa é uma dúvida comum, e que tem grande impacto no sucesso do produto a longo prazo.  

Posso adiantar que não tem uma resposta única e certa para esse questionamento. Não existe uma bala de prata que resolverá todos os seus problemas. Porém existem diversos fatores que podem ser analisados e que ajudam a avaliar se o caminho é promissor, se a construção da solução está adequada, se a qualidade do software está em um bom patamar, entre outros. São inúmeras situações possíveis em soluções de desenvolvimento de software, com sistemas legados, integrações, restrições técnicas, imprevistos e tudo mais que pode acontecer em um time de desenvolvimento de produto. 

Dentro desse time de desenvolvimento, existe um papel que é importantíssimo para a condução da execução do Certo Produto: o arquiteto de software. Você pode até sobreviver sem alguém atuando nessa função, mas com certeza desenvolver certo o produto com essa pessoa será um caminho mais curto. O papel do arquiteto de software é atuar em todo o ciclo de desenvolvimento, desde a definição do produto, com requisitos funcionais, não funcionais, até a implantação e suporte da solução.  

Quer ver mais conteúdos como esse?

Roadmap do produto digital

E para essa atuação na arquitetura do software, reforçamos aqui a importância de uma boa definição de roadmap. O roadmap deve representar a estratégia do seu produto, deixando claro como pretende-se chegar ao objetivo, endereçando interesses de negócio e usuários. Ele é fundamental para o time e stakeholders tenham uma visão a longo prazo das possíveis evoluções do produto – garantindo, assim, o Produto Certo. 

Para que esse roadmap represente a realidade da construção de um produto digital, é necessário um alinhamento com a viabilidade técnica. Isto é, como construir, as habilidades necessárias, tempo de desenvolvimento, aspectos arquiteturais, dependências, entre outros.  

Com essa visão podemos antecipar problemas, construir PoC’s e garantir que tudo esteja em ordem no momento do desenvolvimento de cada funcionalidade. Ah, e se você está em um contexto aonde essa visão não existe, procure ao menos gerar hipóteses e trabalhe com essas possibilidades. 

Ao longo do ciclo, é necessário que dívidas técnicas e de processos entrem nas sprints. As dívidas de processo (sonar, monitoramento, esteira de devOps) precisam entrar no roadmap do Produto, mas as dívidas técnicas (testes, refatorações, correções de code smells, vulnerabilidades de segurança, etc.) devem entrar também na capacidade de um times durante as sprints.

Estratégias para a construção certa do produto digital

Vamos propor algumas estratégias para garantir tecnicamente que o produto gere valor para nosso usuário, pois isso é que é ter sucesso. Para cada uma dessas estratégias, leve em consideração o seu contexto e se preciso, faça uma adaptação. 

Para isso, vamos dividir os tópicos nas duas disciplinas: Engenharia e Operação. 

Engenharia

Garante que os ativos digitais sejam construídos com as tecnologias e arquiteturas mais apropriadas para que os requisitos funcionais e não funcionais desses ativos sejam atendidos (segurança, escalabilidade, desempenho, etc.) 

Essa disciplina tem bastante relação com o DevOps, mas não significa que é somente isso. Enumeramos alguns tópicos para ilustrar melhor o que significa o papel da engenharia na construção do Produto Certo: 

  • Monitoramento e observabilidade: O objetivo é medir sempre, gerar dados sobre seu sistema. Saber por exemplo qual tela é mais usada, ou qual o tempo médio de resposta de uma API. Isso permite à equipe técnica ter uma visão crítica sobre a aplicação. Construa dashboards e utilize alguma solução do tipo APM. Além disso, para garantir a qualidade, apostar em trunk based development e versionamento. 
  • Segurança: Muitas vezes a equipe técnica não tem a atenção que deveria nesse ponto. Aqui estamos falando sobre métodos de autenticação e autorização, configuração de rede e firewall, vulnerabilidades, controle de dependências, acesso a senhas e informações de conexão, entre diversos outros aspectos. É um desafio manter a aplicação segura, e periodicamente, vale a pena uma revisão. Uma dica: levar a segurança para o refinamento de requisitos.
  • Qualidade e testes: Um produto possui vida longa, vai precisar de manutenção, evolução e correções. A maioria dos desenvolvedores sabe como é complicado a manutenibilidade de um código mal escrito, sem padrões ou sem testes. E mesmo assim esse é um problema frequente. Implementar testes e utilizar ferramentas como SonarQube contribuem bastante para evolução nesse ponto. 
  • Automatização de processos: Quanto menor a intervenção humana, melhor. Simples assim. Isso vale para pipelines de construção e implantação, versionamento de banco de dados, construção de infraestrutura e por aí vai. 

Operações

A disciplina de operações garante que as melhores práticas das metodologias ágeis sejam utilizadas para o desenvolvimento dos ativos digitais, colocando os pilares de Produto, Design e Engenharia em ação. A disciplina de Operações garante que os times sigam os princípios do agilismo e tenham foco contínuo em um processo evolutivo e de aprendizado, conforme descrito anteriormente.

  • Metodologia de desenvolvimento e ritos: Não importa se você prefere Scrum, Kanban ou qualquer outra metodologia. Mas adote uma, e siga. E seja lá qual for a metodologia, valorize os ritos, preze para que sejam bem realizados, com dedicação do time, engajamento. Faça com que todos reconheçam a importância de cada um. Para manter uma mentalidade de melhoria contínua, as retrospectivas se mostram como essenciais. Um erro bem comum é deixar a pressão do dia a dia atropelar os ritos. Quando isso acontece, em pouco tempo o time se vê em um ambiente caótico, sem métricas, sem discussões, sem estratégia. Uma estratégia essencial para a cadência das atividades é a gestão a vista: ela permite estejam disponíveis para todos as informações que refletem o andamento dos trabalhos.
  • Planejamento: É fato que um bom planejamento contribui pra qualquer coisa na vida. Nesse contexto gostaria de chamar a atenção para alguns itens em especial: refinamento técnico e planning. Nesse momento que o time vai olhar pra frente, discutir, entender os problemas e se preparar melhor para construir a solução. 
  • Fragilidade técnica: Existe um termo muito interessante que é o “Bus Factor”. Esse termo representa o seguinte: “Quantos membros precisam ser atropelados por um ônibus para o projeto fracassar?”. Ou seja, é uma medida de risco de um dos membros do time não compartilhar conhecimento com os demais. Precisamos desenvolver no time uma dinâmica que possibilite a aprendizagem contínua. 
  • WIP (Work In Progress): Comece a terminar e pare de começar. Não é atoa que esse é um dos princípios básicos do Kanban. Fazer várias coisas ao mesmo tempo pode até parecer produtivo, mas a troca constante de contexto só atrapalha. 
  • Checklists: Essa é uma ferramenta universal. Serve para aviação, medicina, desenvolvimento de software. É bem útil para verificar como anda o desenvolvimento, para relembrar a equipe sobre a importância dos ritos, para avaliar como anda o backlog. 
  • Trabalho em equipe: Desenvolvedores experientes tendem a tomar decisões sozinhos, o que é até necessário em alguns raros casos. Porém algumas atividades em equipe como revisão de código, validação em dupla, discussões de arquitetura são essenciais para desenvolver os menos experientes e abrir a cabeça dos mais experientes para novas ideias. 

Conclusão

Como já mencionado, um produto digital possui vida longa, isso significa que vai crescer e evoluir. Times de alto nível entregam corretamente o Produto Certo. Fazer certo o produto vai permitir que o crescimento seja saudável, que novas funcionalidades sejam acopladas com mais facilidade e que os bugs sejam corrigidos de forma mais rápida. Quando a equipe não se preocupa em fazer certo o produto, em pouco tempo provavelmente o produto inteiro será descartado para começar um novo do zero, com o mesmo objetivo.


Essas dimensões não são trade offs: ao investirmos em fazer certo o produto, estamos aumentando nossa performance de delivery. Em consequência, aumenta a velocidade dos nossos feedbacks e a chance de estarmos nos aproximando de produtos certos, com geração de valor real para os usuários finais. Portanto, as estratégias citadas aqui são o básico para ter uma boa qualidade de desenvolvimento e entrega do software. Não é um caminho fácil, mas é um caminho que te permite colher os benefícios a longo prazo. 

Por: Ângelo Assis

Quer saber mais?