Acelere seu desenvolvimento de produto sem perder o controle


Desenvolvimento de produtos e processos
Brad Power - 28/07/2014

Brad Power

Geralmente pode parecer que a tecnologia digital está fazendo com que cada aspecto do negócio se mova a uma velocidade muito rápida. Há benefícios reais para essa capacidade de negócio em tempo real: chegar ao mercado mais rapidamente, capturando mais rapidamente o valor, capacidade de resposta mais imediata às necessidades dos clientes. Já descrevi como a capacidade da Amazon para liberar continuamente mudanças de software (8000 por dia, uma a cada 11 segundos) irá esmagar concorrentes que estão fazendo uma mudança em lote a cada seis semanas. Mas e os riscos? Será que a alta velocidade não carrega o risco inerente de perda de controle?

Não necessariamente. Como Andy Singleon, CEO na Assembla, explicou para mim, Continuous Deployment pode ser barato e com baixo risco. Barato por causa da automação e porque as pequenas equipes de desenvolvimento precisam de menos coordenação e supervisão. E o risco pode ser gerido por meio de um novo tipo de ferramenta chamada de “portões de atributos (“features gates”)”.

Aqui está uma rápida análise de como a Google e a HubSpot têm gerenciado para alcançar uma velocidade notável nos lançamentos de produtos ao mesmo tempo em que reduzem riscos.

Máquina de teste automatizada da Google

Durante décadas, grandes projetos de TI não funcionaram porque os planejadores não puderam antecipar todas as interdependências de novos softwares na complexidade extrema das bases de códigos de grandes softwares. Para experimentar novos softwares antes de lançá-los, gerentes de grandes projetos utilizam procedimentos elaborados de testes por equipes de profissionais de “garantia de qualidade”. Esse teste tradicional leva semanas ou meses, e ainda erros passam. Para gerenciar novos lançamentos de softwares em sua enorme escala, a Google substituiu os sistemas de teste tradicionais que dependem das pessoas por uma máquina de testes, conhecida como um sistema de “integração contínua”. É uma cópia de seu sistema de produção que executa programas especiais que testam a maneira como os serviços de componentes funcionam juntos. A integração contínua e o teste automatizado é importante para todo desenvolvimento de software moderno e em grande escala. A operação da Google se destaca. Seus sistemas de teste continuamente compilam e desdobram mais de 5.000 componentes (serviços) e executa 100 milhões de testes por dia.

A máquina de teste da Google é construída e funciona por um grupo “engenharia de teste”, cujo tamanho é aproximadamente 15% do total de seus desenvolvedores. Esse grupo constrói apenas os sistemas de teste automatizados – eles não fazem o teste real. Os engenheiros de teste pensam muito sobre criar incentivos que motivam os desenvolvedores a consertar os bugs e a escrever testes efetivos. Por exemplo, eles providenciam um painel de controle que relatam a contagem de bugs por desenvolvedor. Conforme os desenvolvedores fazem mudanças, elas são testadas com a versão mais recente, que inclui todas as outras mudanças. Se um teste encontra problemas, é contado aos desenvolvedores a quem eles devem contatar para resolvê-los – diretamente- , sem usar médios gerentes.

A Google combina testes automatizados com um processo relacionado que requer um companheiro humano para analisar alterações no código. Juntos, os testes automatizados e a revisão pelos colegas fornecem um alto nível de controle de qualidade que libera os desenvolvedores da Google para realmente trabalharem sobre as próprias mudanças necessárias. Todo desenvolvedor da Google tem o poder de fazer mudanças em qualquer produto - ou vários produtos - sujeitas às regras de testes e revisão. Em alguns casos, eles podem ir de uma ideia para uma versão de software em 48 horas.

Pequenas Equipes de Desenvolvimento da HubSpot e “Portões de atributos”

A HubSpot fornece ferramentas de software de “marketing inbound” para pequenas e médias empresas, a fim de atraírem clientes potenciais para seus websites. Singleton me contou como a HubSpot fez a reengenharia de sua aplicação de software mais antiga e única em uma matriz vibrante de 200 pequenos“serviços” de softwares (uma arquitetura como da Amazon e da Google), que os possibilitou ir dos ciclos de lançamento de software tradicionais, medidos em semanas, para um fluxo de 100 mudanças por dia. A HubSpot substituiu seu antigo software com novos códigos há mais ou menos um ano, incrementalmente ampliando novos serviços e constantemente diminuindo os esforços das bases de códigos antigas. O novo produto da HubSpot rapidamente superou o antigo produto e está agora adicionando recursos e invadindo categorias a uma taxa que a torna uma séria ameaça aos competidores.

A HubSpot organizou seus desenvolvedores em pequenas equipes (um "líder técnico" e dois programadores) em torno de funções de software de pequeno porte ("serviços"). Há cerca de 20 dessas equipes e cada uma mantém cerca de 10 serviços. As equipes têm o poder de fazer o que for possível, o mais rápido possível. Eles têm responsabilidades do início ao fim, incluindo design, programação, testes, lançamento, monitoramento e resposta aos problemas de produção. Eles recebem informações operacionais sobre os serviços que eles possuem - como velocidade e erros - em um painel em tempo real, e eles respondem a perguntas e reclamações dos clientes.

"Portões de atributos" são uma ferramenta própria e sofisticada que eles usam para a configuração, lançamento e monitoramento. A ferramenta que lhes permite transformar recursos específicos, para todos, para grupos, ou para clientes individuais. Um dispositivo simples decide quem pode acessar o novo software de acordo com seu andamento, como "oculto" (ninguém pode vê-lo), "teste" (apenas para testes internos), "beta" (testes externos selecionados), e "aberto" (todo mundo pode vê-lo ). Novos recursos podem passar por um período prolongado de vários tipos de testes (beta teste, testes de usabilidade, ou "teste A/B"). Os portões de atributos prestam apoio e gerem o risco, permitindo que os desenvolvedores criem e libera recursos ocultos de forma contínua, sem esperar por avaliações de testadores ou da gestão do produto.

Para se manterem competitivos, quase todas as empresas de " Software como um Serviço" e prestadores de serviços online precisarão se deslocar para a entrega contínua, como a Google e a HubSpot fazem. Os líderes, como a Amazon e Facebook, já fizeram essa mudança, com grandes transformações ocorrendo em alguns lugares, como LinkedIn e Netflix. Indústrias que dependem em grande medida dos serviços baseados em software, como bancos, não ficam muito atrás, com um número crescente de concorrentes construindo e testando novos produtos online.

É tudo questão de tempo até que vejamos esses modelos sendo aplicados pelas indústrias, em hardware e outros produtos. Por exemplo, designers de chips estão executando integração contínua por meio de suas simulações de chips e adicionando recursos opcionais para seus chips que podem ser ligados ou desligados durante a manufatura. Mais amplamente, quanto mais e mais práticas gerenciais são transformadas pela digitalização, ferramentas e práticas de desenvolvimento de software como essas ajudarão a criar uma gestão de produtos mais aberta e flexível em geral.


Clique aqui para baixar este artigo em PDF.


Faça seu comentário abaixo.
Eventos
    09 NOV
Lean Digital Summit                           
Teatro Frei Caneca
São Paulo - SP
Artigos
 
– John Shook
Publicações
 
– Allen Ward