O século XX forjou a investigação consciente de práticas organizacionais, desde Taylor e sua administração científica, passando por referências como Peter Drucker e o Método Toyota de Produção com sua abordagem Lean. E no século XXI avançamos com desdobramentos do conceito de organizações Lean e ágeis, tendo que lidar com o grande impacto da digitalização em todas as áreas.
Este artigo, baseado nas conclusões do livro Accelerate e outras referências, discute fatores críticos para a dinâmica e eficiência das organizações de alta performance em soluções digitais.
Agilidade ou Estabilidade?
Antes de falarmos de fatores críticos para alta performance, é importante desmistificar a tese de que precisamos optar entre velocidade e estabilidade. Não são opções exclusivas. A velocidade e a estabilidade precisam caminhar juntas, pois já são parâmetros para competitividade.
Segregar estes dois objetivos como exclusivos pode levar a uma organização com processos lentos e inaceitáveis no atual contexto competitivo, ou inovações que gerem problemas e indisponibilidades igualmente inaceitáveis.
Já temos no exemplo das Big Techs a demonstração de que a velocidade e estabilidade podem e precisam conviver. Os fatores críticos aqui discutidos endereçam os dois objetivos.
A importância do Fluxo Contínuo
“Tudo o que estamos fazendo é observar a linha do tempo, desde o momento em que o cliente nos dá um pedido até o momento em que recebemos o dinheiro. E estamos reduzindo esse cronograma removendo os desperdícios sem valor agregado.”— Taiichi Ohno, Toyota Production System: Beyond large-scale production
O fluxo contínuo é um dos princípios fundamentais de organizações Lean, e consiste em manter o fluxo da demanda até a entrega sem interrupções. Para organizações que entregam soluções digitais, é mapeado como Entrega Contínua (continuous delivery).
Entrega Contínua (continuous delivery) pode ser definida como uma abordagem que busca automatizar e simplificar o processo de entrega de software aos usuários finais de forma rápida, confiável e frequente. Essa prática visa reduzir os ciclos de entrega, permitindo que as alterações sigam de forma contínua e incremental, em vez de realizar grandes mudanças espaçadas no tempo.
Ao adotar a Entrega Contínua o processo de entrega é automatizado desde a integração do código-fonte até o lançamento em produção, reduzindo assim os riscos e atrasos associados às implementações manuais. A Entrega Contínua vai além de novas funcionalidades e também engloba alterações de configuração de ambiente, correções de bugs e experimentos.
Entre os benefícios da Entrega Contínua temos:
- Rapidez: Implantações contínuas evitam grandes tempos de espera entre as mudanças, viabilizando entrega de valor aos clientes e usuários mais rapidamente.
- Feedback rápido: Entregas em pequenos lotes e com maior frequência permitem feedback rápido dos usuários, possibilitando a identificação precoce de problemas e a correção imediata, melhorando a qualidade do software e a satisfação dos clientes.
- Redução de riscos: O suporte da automação minimiza erros humanos e o feedback incremental viabiliza a rápida solução de problemas.
- Qualidade: Com testes automatizados e integração frequente, temos detecção precoce de problemas de integração, resultando em software mais estável e confiável.
- Flexibilidade e adaptação: A Entrega Contínua proporciona às empresas maior flexibilidade para responder às mudanças no mercado e às necessidades dos clientes.
- Eficiência e colaboração: A Entrega Contínua é respaldada por uma cultura de colaboração entre as equipes de desenvolvimento, operações e testes, defendida pela abordagem DevOps.
Pesquisas (ver referências) respaldam a conclusão de que a Entrega Contínua está associada à performance não somente da capacidade de entrega como também aos resultados financeiros e de market share das empresas.
A hipótese reforçada neste breve artigo é que a Entrega Contínua (continuous delivery) em um ambiente sustentável é a principal característica de organizações de alta performance.
Para suportar a Entrega Contínua, as organizações devem contar com a cultura, liderança, práticas e recursos digitais exigidos. Fatores críticos abordados a seguir.
Fatores críticos para a implementação da Entrega Contínua
Cultura
“Afaste o medo e crie confiança para que todos possam trabalhar de forma eficaz.”— W. Edwards Deming
Infelizmente ainda temos muitas organizações classificadas como patológicas, em que o controle e ambiente de desconfiança e medo predominam. Geram ao final um ambiente de baixa cooperação, onde os mensageiros são geralmente atacados, sempre há um culpado por alguma falha, e novas ideias não são nem consideradas. Neste tipo de cultura não é possível implementar o fluxo contínuo, pelo contrário. Precisamos perseguir o outro lado do espectro, que se traduz em cultura generativa.
Na cultura generativa as pessoas se sentem empoderadas para expressar suas opiniões, compartilhar suas perspectivas e desafiar o status quo sem medo de retaliação. Uma cultura que promove criatividade, inovação, colaboração e aprendizado contínuo. A cultura abraça a mudança e é adaptável a novas circunstâncias. E incentiva a flexibilidade, a agilidade e a capacidade de responder de forma eficaz às condições de um mercado em evolução e às necessidades dos clientes.
Apesar de amplamente estudado e reconhecido, a cultura é um processo complexo que depende da sociedade local, e da história e pessoas da organização. Experiências demonstram que um caminho de sucesso para adequar a cultura está em focar nas práticas da organização, ao invés da tentativa de imposição de uma nova forma de pensar.
Dois exemplos que respaldam esta conclusão podem ser conferidos no resultado de uma pesquisa do Google para identificar o que torna os times extraordinários, e a conclusão de John Shook, liderança do Lean Enterprise Institute, em sua experiência com mudança cultural na joint venture entre Toyota e GM nos EUA, na fábrica Nummi:
“Quem está em uma equipe importa menos do que como os membros da equipe interagem, estruturam seu trabalho e veem suas contribuições.”— Google Research
“A maneira de mudar a cultura não é primeiro mudar como as pessoas pensam, mas sim começar mudando como as pessoas se comportam.”— John Shook
Apesar de ser difícil mudar a maneira de pensar das pessoas, a cultura local pode ser fortemente influenciada pela adoção de uma maneira de trabalhar que naturalmente suporte e incentive a direção desejada. Ao adotar práticas Lean e automação que viabilizam a Entrega Contínua, a organização está dando um grande passo em direção à mudança de cultura, que estaria fadada ao fracasso se fosse baseada apenas em iniciativas visando mudar o modo de pensar das pessoas.
Liderança
Da liderança espera-se que estabeleça e comunique objetivos, time to market, qualidade e custos esperados. E invista em recursos que habilitem as pessoas a resolver os problemas e atingir os objetivos.
“A administração não tem papel mais crítico do que motivar e envolver um grande número de pessoas para trabalhar juntas em direção a um objetivo comum. Definir e explicar qual é o objetivo, compartilhar um caminho para alcançá-lo, motivar as pessoas a fazerem a jornada com você e auxiliá-las removendo obstáculos — essas são as razões de ser da administração.”— Jeffrey K. Liker, The Toyota Way: 14 Management Principles From the World's Greatest Manufacturer
Suportar os times com a infraestrutura automatizada e práticas Lean viabilizam a Entrega Contínua e levam a desempenho extraordinário, que não se atinge com comando e controle.
Práticas Lean e Uso de Recursos Digitais
A cultura e liderança são fatores críticos para a Entrega Contínua, mas a complexidade das soluções digitais exige arquitetura de soluções adequada, e automação de processos no fluxo fim-a-fim. Sem o suporte destas capacidades técnicas é impossível atingir a Entrega Contínua. Algo como ter uma marcenaria sem serra e martelo. Não funciona.
As interrupções e sincronização de execuções são grandes vilões que sabotam a Entrega Contínua. Grandes mudanças que exigem grandes intervalos entre entregas, testes de regressão que exigem sincronização entre diversos times, tempo de configuração de ambientes de teste e implantação, retrabalho devido a identificação tardia de erros, mecanismos burocráticos de aprovação de mudanças, montagem de pacotes para garantir diversas versões simultâneas, e outras atividades que ficam entre o time de desenvolvimento que está com o código pronto (commit) e o cliente.
Práticas Lean e suporte sistêmico a estas práticas são indispensáveis para vencer o dantesco desafio de manter continuidade com estabilidade.
A seguir são citadas áreas críticas para a implementação da Entrega Contínua:
Arquitetura
- Arquitetura fracamente acoplada: Um design com fraco acoplamento aumenta o grau de liberdade para as evoluções, diminuindo o risco de efeitos colaterais e a necessidade de integração e testes com áreas da solução que não deveriam ser impactadas. Exemplos desta tendência estão no massivo uso de microsserviços e virtualização de ambientes.
Práticas Lean
- Entregas em pequenos lotes ao invés de grandes mudanças: Soluções sistêmicas que permitem evoluções em pequenos lotes permitem que especialistas traduzam as demandas e feedbacks dos clientes e usuários de forma ágil e com razoável independência. Grandes mudanças são garantia de processos burocráticos e de difícil integração, minando a filosofia de continuidade e alta frequência necessárias em organizações de alto desempenho.
- Fluxos de aprovação leves: Comitês de aprovação são ineficientes, é importante avaliar como a aprovação pode seguir um processo mais leve envolvendo quem realmente tem condições de avaliar impactos tais como os especialistas responsáveis pela mudança, respaldados pela visão integrada de produto.
- Sistema de controle de versões: Além do código, os scripts de teste, configuração de ambientes e recuperação de versões devem ser versionados e controlados.
- Desenvolvimento “trunk based”: É importante evitar a proliferação de versões da solução, bem como de versões de ambientes. Idealmente os times devem referenciar uma versão principal que está pronta para deployment, e trabalhar com poucos branches.
Automação
- Testes automatizados: Os testes são essenciais para a estabilidade da solução. Devem ser automatizados os testes de regressão e programados os testes da mudança como parte do ciclo de desenvolvimento.
- Segurança e Compliance pré-programados: A segurança e compliance devem ser garantidos por implementação de controles ortogonais no ambiente de produção (no caso de soluções cloud, nas plataformas que hospedam a solução) bem como de forma programática com artefatos de fácil consumo para os desenvolvedores.
- Delivery Pipeline (automação de atividades no fluxo de verificação, configuração e deployment): O processo de entrega, desde a liberação do código (commit) até a disponibilização para uso deve seguir um fluxo que garanta os devidos controles (exemplos: verificação, configuração de ambientes, testes de regressão, integração, versionamento e comunicação da mudança) em um fluxo (pipeline) com a maior parte possível dos controles automatizados.
Conclusão
Entrega Contínua com estabilidade e qualidade é um importante mantra para as organizações que entregam soluções digitais. E já deixa de ser apenas um fator desejável para performance extraordinária, sendo cada vez mais considerada pré-condição de competitividade.
Para atingir este status, além de uma cultura e liderança participativa é indispensável contar com arquitetura de solução de baixo acoplamento; automação de testes no fluxo de entrega; repositórios para controle de configuração não somente para o código como para os scripts de configuração de ambientes, deployment e execução; tratar a segurança e compliance apoiados por controles nativos em plataformas e controles programáveis de fácil consumo; e viabilizar que os times trabalhem em pequenos lotes, com o máximo de independência e alta frequência de liberação de código (commits).
A implementação do ambiente de alta produtividade exige uso de tecnologias de automação para cada fase do processo, e só é viável com um time técnico competente para configurar e manter o ambiente e automação. Cabe à liderança enxergar este ambiente de forma estratégica, e viabilizá-la junto aos especialistas e demais atores da organização.
Para refletir
Como está a sua organização em relação à conexão com o feedback dos clientes e usuários, frequência de entrega, e estabilidade da solução?
Considerando os fatores críticos de alta performance, o quanto é efetivamente implementado no dia a dia?
Referências
- FORSGREN, Nicole; HUMBLE, Jez; KIM, Gene. Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations. USA: IT Revolution Press, 2018.
- RIES, Eric. A startup enxuta: como os empreendedores atuais utilizam a inovação contínua para criar negócios radicalmente bem-sucedidos. São Paulo: Sextante, 2019.
- SHOOK, John. How to Change a Culture: Lessons from NUMMI. Lean Enterprise Institute.