Produtos digitais são entregues cada vez mais rápido e com maior frequência. A habilidade de colocar algo muito rápido nas mãos dos clientes é imperativa para todos os produtos que querem se manter competitivos no mundo digital.
A Entrega Contínua emergiu para suprir essa necessidade, surgindo como uma evolução dos conceitos atrelados à Integração Contínua, buscando uma nova forma de construir um produto onde equipes de desenvolvimento e operações entregam mudanças ao usuário final baseados nas métricas de uso dos seus produtos.
Para implantar Entrega Contínua é necessário avaliar os processos existentes e acompanhar o desenvolvimento para analisar a proximidade do nosso objetivo de respostas rápidas que a Integração e Entrega Contínua promete. Neste artigo será compartilhado uma forma de fazer uma avaliação desse percurso em busca de entregas frequentes e eficientes. O conteúdo aqui descrito é fruto da experiência da aplicação dessa avaliação junto a diversos times de produto.
Definindo Integração Contínua e Entrega Contínua
"Integração Contínua é uma prática de desenvolvimento de software onde os membros de uma equipe integram seu trabalho com freqüência. Cada pessoa integra pelo menos diariamente - levando a múltiplas integrações por dia. Cada integração é verificada por uma compilação automatizada (incluindo testes automatizados) para detectar erros de integração o mais rápido possível. Essa abordagem leva a problemas de integração significativamente reduzidos e permite que uma equipe desenvolva software coeso mais rapidamente."
A citação acima foi retirada de um artigo escrito por Martin Fowler em 2000. De lá para cá, muita coisa evoluiu! Atualmente falamos sobre Entrega Contínua, ou Continuous Delivery em Inglês.
Entrega Contínua é um conceito que foi descrito pela primeira vez no livro (com o mesmo nome do conceito) de 2010, de Jez Humble e David Farley. Entrega Contínua fornece uma linguagem padrão para as atividades de construir, testar e implantar software no caminho de produção. Além disso, Entrega Contínua faz referência à Integração Contínua como um ponto de partida, mas estendendo a mesma para atender as necessidades do negócio como um todo, provendo um um ciclo contínuo de lançamentos de software.
Toda empresa que se interessa pelo conceito de Entrega Contínua, colocando-o em prática, passa inevitavelmente por grandes mudanças na forma como constrói e disponibiliza seu software para seus clientes.
A percepção da adoção de Entrega Contínua pode ser extremamente subjetiva. Na busca de criar uma técnica capaz de medir e mensurar as melhorias trazidas pela adoção do Continuous Delivery, elaboramos uma ferramenta chamada de Avaliação de Entrega Contínua.
Entendendo a Avaliação de Entrega Contínua
A Avaliação de Entrega Contínua é uma planilha excel que ajuda a identificar visualmente 8 aspectos de maturidade no processo de entrega em uma organização:
- Processo de Entrega
- Visibilidade
- Alinhamento Organizacional
- Arquitetura Técnica
- Armazenamento de Dados
- Ambientes e Deployments
- Controle de Configuração
- Controles de Qualidade
Os 8 aspectos que a serem analisados em uma equipe de produto ficam muito bem visualizados em um gráfico de área circular, como no exemplo abaixo:
Todo o processo de avaliação é conduzido por uma pessoa com mais experiência nos conceitos e práticas da Entrega Contínua. Para facilitar o entendimento do processo, chamaremos essa pessoa de avaliadora. Tipicamente, a pessoa avaliadora passa alguns dias imerso na empresa realizando sessões de perguntas, respostas e muita conversa com todos profissionais representando as áreas que se envolvem na criação do produto de software em questão. Utilizando-se de anotações, e de acordo com as respostas obtidas nesse período, a pessoa avaliadora qualifica cada uma das dimensões em uma escala de 0-5.
Como resultado, será gerado um gráfico, como mostrado anteriormente, para um entendimento visual sobre o estágio atual em cada uma das dimensões de entrega contínua. Com base em nossa experiência, a Avaliação de Entrega Contínua é aplicável para todas empresas que criam produtos de software, independente do seu estado atual perante as práticas de Entrega Contínua.
Para empresas iniciantes nas práticas de Entrega Contínua, o resultado da avaliação é útil para ajudar a planejar investimentos e melhorias no processo. Os resultados fornecem os primeiros passos para esta caminhada. Para empresas que já fazem entrega contínua, a avaliação pode ajudar a identificar as partes que precisam de atenção, ou que ainda não se adaptaram aos processos.
Dessa forma, é extremamente recomendável repetir a mesma avaliação periodicamente: por exemplo uma certa empresa com um departamento de TI com cem pessoas, repete esta avaliação a cada trimestre. Isso é essencial para validar o que foi feito, entender o caminho que a organização seguiu até o momento e reavaliar os próximos passos.
O processo de aplicação da Avaliação de Entrega Contínua é dividida em 3 grandes etapas: entrevistas, análise, e sumarização. Cada uma das etapas possui um objetivo e boas práticas que são descritas a seguir.
Etapa 1: Entrevistas.
Utilize a planilha excel com as perguntas para fazer as entrevistas com cada um dos entrevistados. Na planilha, será possível associar as respostas com cada uma das 8 dimensões. Faça várias anotações durante a conversa pois as mesmas serão bastante úteis na etapa de sumarização.
Algumas boas práticas a serem realizadas nessa etapa inicial da avaliação:
Busque envolver todas as áreas que participam do processo de implantação de uma mudança
Busque representantes de todas as áreas envolvidas na entrega de um produto para serem entrevistados: Tanto equipes e seus gestores de produto, quanto desenvolvedores, operações e suporte devem ser ouvidos.
Ajude os entrevistados com suas agendas
Agende as conversas com antecedência, mas tenha jogo de cintura. Pessoas se atrasam, e as prioridades podem mudar (especialmente em grandes empresas). Deixe alguns horários para entrevistas vagos, para ajudar essas pessoas e suas agendas.
Deixe espaço entre as conversas
Deixe espaço entre as conversas para poder aproveitar e organizar suas anotações. Este intervalo entre os horários das entrevistas permite que pessoas se atrasem, cheguem mais cedo, ou ainda para estender a conversa, quando desejável.
Tome nota de tudo
Durante as conversas, tome nota de tudo. Esse é um momento de ouvir e entender o processo. Além da marcação (de 0 a 5), as anotações irão ajudar com o aconselhamento e justificativas para os passos sugeridos como resultado da avaliação. Lembre-se que o resultado é específico para a empresa, equipe, ou produto em análise. Não é um resultado genérico. Suas anotações devem fornecer essa especificidade.
Entenda o dia-a-dia
Faça perguntas querendo entender como é o dia-a-dia de cada pessoa entrevistada. Entenda como ela lida com suas atividades relacionadas à entrega do produto em questão. Deixe claro que não está buscando culpados, ou está interessado em ouvir reclamações de colegas e áreas da empresa, mas sim em entender o processo.
Etapa 2: Análise
Com as notas das entrevistas em mão, o próximo passo é a realização de uma parte intensa de organização dos dados. Estruture suas anotações de forma sucinta. Bullets Points ou Mind Maps são boas ferramentas para isso.
Organizando os dados
Transforme suas anotações em uma lista de sugestões. Tente agrupar as respostas em áreas do processo, organizando-os como uma sequência de passos necessários para implantar uma nova mudança. Uma ótima ferramenta para organizar os passos está em criar um Mapeamento do Fluxo de Valor.
Com o Mapeamento do Fluxo de Valor em mãos, identifique quais pontos ainda não estão ideais. Comece identificando quais são os pontos manuais que podem ser automatizados. Isso significa que um investimento em tornar o passo automático irá melhorar os tempos das pessoas envolvidas, permitindo que elas foquem em outras atividades do seu dia a dia.
Feito isso, busque quais são os pontos que demoram mais tempo. Alguns pontos podem ser complicados, e existem no processo por bons motivos. Uma conversa sobre as necessidades que esses processos atendem será bem proveitosa, e ajudará a sugerir um novo processo que ainda atenderia as necessidades originais
Liste também as boas práticas que a indústria de software considera importantes. Se não há testes automatizados, explicite o valor dessa prática. Gerenciamento de infraestrutura como código, Pipelines de Entrega, Deploys Frequentes e Feature Toggles são exemplos de práticas que entrariam nessa lista.
Por último, e não menos importante, traga visibilidade para as ações e iniciativas que já acontecem na empresa. Se as equipes estão buscando automatizar o processo, adicionar novos tipos de testes, experimentos de UX ou melhorias no processo, é uma excelente oportunidade de reforçar a mensagem e amplificar os sinais de melhorias vindo de dentro da empresa.
Etapa 3: Sumarizando e apresentando os resultados
Você terá muita informação e muitas sugestões ao final desse processo, mas é necessário ficar atento com a quantidade de dados. Todo grupo pode melhorar suas práticas de entrega e frente às muitas sugestões que deverão aparecer, será indispensável uma priorização das melhorias.
A sugestão para uma boa priorização está em agrupar e restringir os pontos que devem ser investigados. Busque se limitar a 4-5 grandes grupos de trabalhos, com exemplos baseados nas conversas. Os exemplos extraídos das conversas geram um plano de ação com base na realidade da empresa. Lembre-se sempre que essa avaliação é extremamente contextual.
Resumindo
Entrega Contínua é essencial para o sucesso de produtos digitais, mas a realidade e a necessidade de cada equipe e cada empresa vai ditar os passos iniciais a serem seguidos. Com essa avaliação temos mais uma ferramenta para auxiliar na melhoria contínua das entregas.