DESENVOLVIMENTO DE PRODUTOS E PROCESSOS

Acelere seu desenvolvimento de produtos sem perder o controle

Por Brad Power

Pode parecer que a tecnologia digital está fazendo com que cada aspecto do negócio se mova muito rapidamente. Há benefícios reais nessa capacidade de negócios em tempo real: chegar ao mercado com maior velocidade, capturar o valor mais rapidamente, respostas imediatas às necessidades dos clientes. Por exemplo, em um artigo anterior, descrevi como a habilidade da Amazon em lançar continuamente mudanças de software (oito mil por dia, um a cada onze segundos) esmaga os competidores que fazem uma mudança por lote a cada seis semanas. Mas e quanto aos riscos? A alta velocidade não traz o risco inerente de perda de controle?

Não necessariamente. Como Andy Singleton, CEO da Assembla, explicou-me, a implantação contínua pode ser mais barata e trazer menos risco. É mais barata por causa da automação e porque pequenas equipes de desenvolvimento precisam de menos coordenação e supervisão. E o risco pode ser gerido através de um novo tipo de ferramenta chamado “portões de recursos”.

Aqui está uma rápida olhada em como a Google e a HubSpot conseguiram alcançar uma velocidade notável no lançamento de produtos enquanto, ao mesmo tempo, reduziram o risco.

A máquina de testes automatizada da Google

Por décadas, grandes projetos de TI têm falhado e sido arquivados porque os planejadores não conseguiram antecipar todas as interdependências de um novo software na extrema complexidade das bases de códigos de grandes software na extrema complexidade das grandes bases de códigos de softwares. Para testar um novo software antes do lançamento, os gerentes de grandes projetos usam procedimentos de testes elaborados conduzidos por equipes de profissionais de “garantia de qualidade”.Esse teste tradicional leva semanas ou meses e, ainda assim, não consegue encontrar todos os erros. Para gerenciar novos lançamentos de softwares em sua larga escala, a Google substituiu os sistemas de testes tradicionais, que dependem de pessoas com uma máquina de testes, conhecido como sistema de “integração contínua”. É uma cópia de seu sistema de produção que roda programas especiais que testam a forma como os serviços de componentes trabalham juntos. A integração contínua e o teste automatizado são importantes para todo desenvolvimento moderno de software em larga escala de. A operação da Google destaca-se por sua escala. Seu sistema está continuamente compilando e implantando mais de cinco mil componentes (serviços) e executando cem milhões de testes todos os dias.

As máquinas de teste da Google são construídas e executadas pelo grupo de “engenharia de testes”, cujo tamanho é cerca de 15% do total dos desenvolvedores. Esse grupo apenas constrói os sistemas de testes automatizados – eles não fazem o teste. Os engenheiros de testes pensam muito sobre criar incentivos que motivem os desenvolvedores a consertar problemas e projetar testes efetivos. Por exemplo, eles fornecem painéis de instrumentos que reportam os problemas por desenvolvedor. Conforme os desenvolvedores fazem mudanças, elas são testadas com a versão mais recente, o que inclui todas as outras mudanças. Se um teste encontra um problema, ele pode dizer aos desenvolvedores quem contatar para resolvê-los – diretamente, sem usar gerentes intermediários.

A Google combina o teste automatizado com o processo relacionado que requer um par humano para revisar as mudanças no código. Juntos, o teste automatizado e a revisão por pares podem fornecer um alto nível de controle de qualidade que libera os desenvolvedores da Google para trabalhar de verdade nas mudanças necessárias. Cada desenvolvedor da Google tem o poder de fazer mudanças em qualquer produto – ou múltiplos produtos – sujeitando-se às regras de teste e revisão. Em alguns casos, eles podem ir de uma ideia a um lançamento de software em 48 horas.

As pequenas equipes de desenvolvimento e os “portões de recursos” da HubSpot

A HubSpot fornece ferramentas de “marketing inbound” de software para negócios de pequeno e médio portes para atrair prospectivos clientes em seus sites. Singleton disse-me como a HubSpot redesenhou sua única e antiga aplicação de software em uma vibrante matriz de 200 pequenos “serviços” de software (uma arquitetura como a da Amazon e a da Google), o que os permitiu ir dos tradicionais novos ciclos de lançamento de software, medidos em semanas, para um fluxo de 100 mudanças por dia. A HubSpot substituiu seu antigo software por um novo código em cerca de um ano, gradativamente construindo novos serviços e constantemente diminuindo o esforço da antiga base de códigos. O novo produto da HubSpot rapidamente ultrapassou o antigo produto e, agora, está adicionando novos recursos e invadindo categorias relacionadas em um taxa que torna isso uma ameaça séria para os competidores.

A HubSpot organizou seus desenvolvedores em pequenas equipes (um “líder de tecnologia” e dois programadores) em pequenas funções de software (“serviços”). Há cerca de vinte dessas equipes, cada uma mantém cerca de dez serviços. As equipes são autorizadas a fazer o máximo possível, da forma mais rápida possível. Elas têm responsabilidades em todas as áreas, incluindo projeto, programação, teste, lançamento, monitoramento e resposta aos problemas de produção. Elas conseguem informação operacional sobre os serviços que possuem – como velocidade e erros – em um painel de instrumentos em tempo real e recebem as perguntas e reclamações dos clientes.

“Portões de recursos” é uma ferramenta sofisticada e patenteada que a HubSpot usa para configuração, lançamento e monitoramento. A ferramenta permite a eles colocar ou tirar certos recursos, para todos os clientes, para grupos de clientes ou para clientes individuais. Um interruptor decide quem pode acessar novos softwares dependendo em seu andamento, como “escondido” (ninguém o vê), “teste” (apenas testadores internos), “beta” (testadores externos selecionados) e “revelado” (todos o veem). Os novos recursos podem passar por um extenso período de vários tipos de testes (teste beta, teste de utilidade ou “teste A/B”). Os portões de recursos dão apoio e gerenciam o risco ao deixar os desenvolvedores construir e lançar recursosescondidos continuamente sem esperar por revisões dos testadores ou da gestão do produto.

Para permanecer competitivo, quase todos os fornecedores de serviços online e de “Software como um Serviço” precisarão mudarpara a entrega contínua como a Google e a HubSpot têm. Os líderes, como a Amazon e o Facebook, já fizeram a mudança, com maiores transformações acontecendo em lugares como LinkedIn e Netflix. As indústrias que confiam em uma grande gama de serviços baseados em software, como a bancária, não ficam muito atrás, com um crescente número de competidores construindo e testando novos produtos online.

É apenas uma questão de tempo antes de vermos esses modelos sendo aplicados em todas as indústrias, em hardwares e outros produtos. Por exemplo, projetistas de chips estão executando a integração contínua em suas simulações de chip e adicionando recursos opcionais em seus chips que podem ser colocados ou retirados durante a manufatura. Mais amplamente, conforme mais e mais práticas da gestão são transformadas pela digitalização, ferramentas e práticas de ponta de desenvolvimento de softwares como essas facilitarão, de uma forma geral, a gestão mais aberta e flexível do produto.

Publicado em 29/09/2014

Planet Lean - The Lean Global Networdk Journal