Gestão

O caos na indústria de software e o movimento DevOps

Reverter uma situação como essa não é fácil! É preciso que toda organização se engaje, do presidente aos times

15 de Dezembro de 2014 - 09h10

Nos últimos anos temos investigado sobre os principais fatores-chave capazes de reverter os resultados históricos da indústria de software. Os departamentos de TI estão sendo pressionados a aumentar sua performance, medida através da capacidade de entregar software em produção, ao mesmo tempo de manter seus ambientes estáveis. Este é o desafio que todos nós estamos intrinsecamente interessados em resolver.

Precisamos aumentar a frequência de deployment, reduzir o lead time (tempo entre uma ideia e seu uso efetivo em produção) e reduzir o tempo médio de reparo em caso de falhas. Vamos olhar para estes desafios sob a perspectiva de negócio. O que tem impedido as empresas de alcançarem uma TI de alto desempenho?

O que vemos no mercado é um padrão recorrente, que contribui sobremaneira para o estado caricato da Indústria de Software. O Mercado exerce uma pressão cada vez maior sobre as empresas, forçando-as a buscarem soluções disruptivas para otimização máxima dos recursos e aumento considerável da qualidade de entrega, melhorando as métricas que determinam a performance corporativa: produtividade, market share e lucratividade.

Este tem sido o desafio enfrentado pelos CIOs, que, por sua vez, exigem o mesmo patamar de resultados das suas áreas de desenvolvimento e operação.

Cada uma com seus dilemas, a área de desenvolvimento vive o desafio de responder rapidamente às urgências do negócio, enquanto a área de operação busca proporcionar estabilidade e segurança. Ambas as áreas estão tentando, cada uma a seu modo, resolver os problemas que as impedem de alcançar bons desempenhos nas métricas pelas quais estão sendo avaliadas.

Com isso, o que se vê, são gerentes e coordenadores tentando resolver individualmente problemas pontuais por meio de iniciativas isoladas, muitas vezes de forma desconexa com as demais áreas da organização, sem diálogo ou visão compartilhada entre as diversas partes envolvidas no processo. Essa história termina, de forma recorrente, com executivos apenas justificando e reportando maus resultados para o conselho, sem de fato resolverem os problemas.

Reverter uma situação como essa não é fácil! É preciso que toda organização se engaje, do presidente aos times. Iniciativas bottom-up, sem apoio executivo não geram resultados expressivos, da mesma forma que iniciativas top-down sem engajamento e boas práticas de engenharia por parte dos times também não geram os resultados almejados.

É preciso que os executivos compreendam que implantar uma cultura de alto desempenho requer investimento contínuo de tempo e recursos, isso não se resolve apenas com investimentos pontuais. Uma organização de alto desempenho só se constrói por meio da implantação de um Programa de Melhoria Contínua (OPEX), que permita estabelecer cadência na implementação e aprimoramento da cultura organizacional, dos processos e ferramentas. É crucial que a organização seja capaz de fazer inspeções e adaptações contínuas no Programa, reorientando, sempre que necessário, as iniciativas, de forma a aumentar o fluxo de entrega de valor.

Organizações de alto desempenho estão colocando software em produção com frequência 30 vezes maior e com índice de falhas 50% menor do que a média do mercado. Três fatores principais contribuem para a performance do negócio: adoção das práticas de DevOps impulsionando o desempenho da TI; cultura organizacional e clima propício à aprendizagem; e satisfação das pessoas no trabalho.

Sobre as práticas de DevOps, observamos medidas fundamentais para aumentar a frequência de deployment, reduzir o lead time, o tempo médio de reparo em caso de falhas e a taxa de falha durante as mudanças, que são:

Continuous delivery - As práticas de Continuous Delivery vão te ajudar a garantir que o seu software esteja sempre em um estado pronto para ser publicado, transformando o deployment em um não-evento, que pode ser realizado sob demanda.

Uso de Controle de Versão para todos os artefatos de produção - A capacidade de colocar software em produção frequentemente, de maneira rápida, confiável e com baixo risco depende do uso abrangente de um controle de versão. É importante que nele haja tudo que é necessário para recriar um ambiente produtivo, incluindo código, banco de dados e configurações de ambiente. Quando um erro é identificado, você pode reimplantar rapidamente a última versão estável da sua aplicação ou corrigir rapidamente o problema e fazer uma nova publicação, reduzindo o tempo de reparo.

Automação de Testes - Com um conjunto confiável e abrangente de testes automatizados, é possível rapidamente ter confiança que o código pode ir para produção sem necessidade de longos ciclos de testes de integração e testes manuais de regressão.

Monitoramento de Aplicações - Monitorar disponibilidade e performance de aplicações em produção ajuda a detectar preventivamente falhas e mitigar problemas.

Com relação à cultura organizacional, é preciso reforçar a importância da colaboração entre desenvolvimento, testes e operação, de forma a reduzir custos e riscos ao se fazer mudanças. Precisamos de um ambiente onde as falhas sejam tratadas como oportunidade de aprendizado e as pessoas possam discutir francamente sobre os incidentes ocorridos.

É um círculo virtuoso. Pessoas que se sentem apoiadas com as ferramentas e recursos para fazer o seu trabalho, que têm suas opiniões ouvidas e valorizadas, geram melhores resultados. O efeito disso é um negócio que estará sempre um passo à frente da concorrência, porque pode, rapidamente, detectar e responder à novas oportunidades de mercado.

Não está na hora de pensar diferente?

*Márcio Sete é sócio-diretor na especificacoes.com.