Acelerando a Inovação: Automatizando o Desenvolvimento de Software para Vantagem Competitiva
O desenvolvimento de software tradicional é lento. Chegou a hora de repensar.
Quase três anos atrás, Satya Nadella da Microsoft cunhou famosamente que "todo negócio será um negócio de software". Hoje, o mercado global de software de US$ 500 bilhões está a caminho de dobrar para US$ 1 trilhão até 2030.
O J.P. Morgan registrou ter 40.000 engenheiros de software (mais que o Alphabet) em seu arquivamento mais recente. Todas as grandes empresas estão correndo para contratar engenheiros para superar a concorrência no desenvolvimento. O grande problema é que o desenvolvimento de software tradicional é lento, fragmentado e desperdiçador.
Por exemplo, semanalmente o engenheiro de software médio gasta 4 horas esperando testes completarem, 3,5 horas esperando builds, e 3 horas em gerenciamento de ambiente — mais de um quarto da semana de trabalho sem criar nada de valor. Considerando que engenheiros costumam ser as pessoas mais bem pagas nas organizações, é claramente um grande problema. No entanto, as coisas estão mudando.
Uma das principais plataformas de desenvolvimento, CircleCI, apostou que IA e automação seriam a chave para acelerar a inovação em software e liberar engenheiros para trabalhos importantes. No último ano, a empresa introduziu uma série de melhorias de automação e machine learning que reduziram o tempo que engenheiros ficam esperando em 50%. É uma das razões pelas quais mais de 300.000 desenvolvedores, incluindo os do Facebook, Spotify, GoPro, InstaCart e muitos outros, recorreram à CircleCI para avançar mais rápido.
Liderando a empresa está Jim Rose — fundador seis vezes com investimentos anteriores do Google Ventures, Foundation Capital e Marc Andreessen. Desde que entrou na CircleCI há pouco mais de quatro anos, Rose aumentou a receita em mais de 450% e transformou a empresa em uma entidade verdadeiramente empolgante.
Interessado em saber mais sobre automação do desenvolvimento de software e aceleração da inovação, o Information Age conversou com Rose sobre o assunto.
Qual é o estado atual do mercado de software?
No momento, ainda há muitas empresas e indivíduos realizando processos manualmente. Quando se pensa no processo de transformação digital, trata-se realmente de fomentar uma equipe de desenvolvimento de software.
Primeiro, tirar software de data centers on-premise e levá-los para ambientes cloud-native, onde se pode acessar computação instantaneamente.
Segundo, software tradicionalmente foi visto como diretriz ou adjunto ao negócio principal. Agora, todo tipo de negócio — de bancos a fabricantes de carros a varejistas — percebe que software é central para o que fazem. E precisam descobrir o que possuem, consolidar ativos e integrá-los como padrão.
Uma vez que as empresas têm acesso instantâneo à computação e estruturas onde desenvolvedores podem trabalhar, o que está entre eles hoje costuma ser uma mistura de diferentes plataformas e processos.
Na maioria dos casos, há processos de release de software em cascata muito longos, com muitos passos manuais e scripts manuais. Em alguns casos, lojas mais avançadas podem ter a primeira geração de soluções de automação, mas à medida que as equipes aceleram, essas começam a falhar.
E é nisso que estamos entrando para ajudar as empresas a navegar. À medida que suas equipes de software aceleram, constroem mais software e tentam fazer mais rápido; para serem responsivas a oportunidades de mercado, mas também a mudanças negativas. As empresas precisam repensar completamente como todas essas peças se encaixam.
Essa velocidade a que você se refere é o principal obstáculo no desenvolvimento de software?
Empresas e equipes de desenvolvimento estão tentando acelerar conforme o mercado acelera. Tentam descobrir como trabalhar rapidamente para atender oportunidades.
A única maneira de chegar lá é automatizar todos os passos que não necessariamente precisam de intervenção humana, porque em vez de fazer ao longo de minutos, horas e dias, pode-se fazer em segundos.
À medida que as equipes aceleram, e o software é sua vitrine principal para o cliente, você precisa garantir níveis de qualidade altos; garantir que não falhe ou que não tenha vulnerabilidades de segurança, por exemplo.
Então, quando se pensa em ágil, trata-se de tentar se tornar mais ágil, tanto do ponto de vista de qualidade quanto de velocidade.
Nos EUA, tudo gira em torno de velocidade, mas ao ir mais rápido, integrar pedaços menores e conseguir lançar software de forma mais consistente, seu software inerentemente melhora. Todos aqueles medos sobre deploy desaparecem quando você faz cinco, oito, 15 vezes por semana, e em alguns casos temos clientes que fazem 100 vezes por dia.
Deploy deixa de ser um problema.
No lado da qualidade, um dos grandes problemas do desenvolvimento de software no passado é que se você lança apenas uma vez por trimestre, tem muita dificuldade em garantir que todas as mudanças introduzidas na aplicação realmente funcionem juntas. Muitas vezes vê-se empresas fazerem um grande lançamento "big bang" e depois passarem 60, 90 dias tentando consertar tudo que regrediu e quebrou. Nesse método, seu ciclo de software desacelera, mas a qualidade da aplicação também sofre.
Da perspectiva ágil, é isso que as pessoas tentam resolver.
Como uma organização pode mudar para acomodar, apoiar e fomentar equipes de desenvolvimento de software?
Existem algumas maneiras diferentes.
Uma é que desenvolvedores são difíceis de contratar, então você quer garantir que todo o tempo gasto do ponto de vista de desenvolvimento seja dedicado a construir seu software especial, seja um aplicativo bancário excelente, seja um app de e-commerce excelente. Acho que uma das grandes áreas onde se subinvestiu é que desenvolvedores historicamente construíram coisas. É o que fazem, constroem software. Então o ciclo de desenvolvimento foi subinvestido do ponto de vista de aplicativos de terceiros.
Existem coisas como automação de testes e infraestrutura de entrega contínua que equipes não deveriam ter que construir sozinhas. Você está muito melhor adquirindo de alguém especializado nessa área para focar no que você é bom. Seria como dizer a alguém que precisa construir uma cafeteira e dar tubos de cobre, solda e válvulas. Você nunca faria isso. Mas historicamente, desenvolvimento foi tratado assim. Então definitivamente colocar as ferramentas e plataformas certas no lugar é crítico, em toda a stack, do data center até ferramentas de planejamento.
Acho que a segunda parte é que no modelo waterfall tradicional, desenvolvimento de software costuma desempenhar o papel de receptor, então a aplicação é definida muito antes no processo e quando a equipe de desenvolvimento a recebe, já houve uma série de decisões que podem ou não funcionar e podem ou não ser viáveis ou fáceis de fazer.
Existe essa noção de "shift left", que é empurrar o desenvolvimento cada vez mais para cima no ciclo de planejamento para que as preocupações ou necessidades da equipe de desenvolvimento sejam consideradas tanto na construção da aplicação quanto em sua entrega. E quando se pensa do ponto de vista operacional, significa que você realmente precisa pensar em como uma aplicação é operada muito antes no ciclo de vida. Por exemplo, se você está tentando construir apps cloud-native, precisa arquitetá-los de forma muito particular, o que significa que precisa tomar essa decisão e participar desse processo muito antes.
Quando equipes adotam processos ágeis software-first, você acaba com uma triangulação de preocupações. Tem os donos do negócio e gerentes de produto que definem por que você está construindo algo. Tem arquitetos técnicos e desenvolvedores falando sobre como construir. E tem os operadores, responsáveis por rodar, descobrindo o que realmente roda no final de todo processo. Todos precisam estar envolvidos. E isso pode ser uma transição difícil para algumas empresas.
Como IA e automação podem impulsionar e melhorar a inovação em software?
Com automação, você pode automatizar tarefas predeterminadas e autoaprendizagem. Um exemplo pode ser se toda vez que você tenta lançar um software precisa fazer um teste de terceiros contra algum sistema de pagamentos de terceiros. No passado, para essas tarefas, você contrataria uma equipe de QA que essencialmente tentaria processar transações manualmente, o que é incrivelmente lento. Também é incrivelmente sujeito a erros e complicações.
Esses são exemplos perfeitos de tarefas que deveriam ser totalmente automatizadas no seu conjunto de testes — todas essas coisas que você sabe que vai fazer repetidamente, deve automatizar para torná-las determinísticas e previsíveis. E, por fim, rápidas.
Há oportunidades de pegar tarefas repetitivas que qualquer minuto gasto por um desenvolvedor fazendo-as repetidamente é desperdício de tempo e, francamente, de dinheiro.
Quando você olha para IA e software sendo construído, em vez de pensar em empurrar software preditivo determinístico, você está empurrando um modelo. E o modelo é uma caixa de areia de noções preconcebidas de como algo pode funcionar e, à medida que pessoas passam por ele e testes são executados, o modelo muda e evolui aprendendo mais sobre como as coisas funcionam ou não. Isso coloca uma pressão incrível no sistema de testes.
Quando se pensa em alguns deslizes de IA, quando há viés inconsciente embutido na IA, onde a IA meio que sai do controle e começa a bloquear pessoas de certas aplicações, ou desliga coisas, essas são situações que do ponto de vista de testes são desafiadoras.
Está ficando cada vez mais complicado, mas também muito, muito mais rápido e responsivo. Então você só vai ver a inclusão de IA e machine learning no desenvolvimento de software continuar a aumentar. Mas agora você precisa ter todos os frameworks necessários para testar todas essas mudanças.
Sistema de controle de automação
- Escritor de Serviços Automotivos: Função, Deveres e Caminho de Carreira
- Robô de Inspeção Autônomo de Baixo Custo: Design, Desenvolvimento e Validação em Campo
- SABIC Faz Parceria com Nottingham Spirk para Acelerar Inovação Termoplástica
- Automação de edifícios inteligentes: impulsionando o futuro do desenvolvimento imobiliário urbano
- Seegrid Lança 'Blue Labs', Centro de P&D para Acelerar Inovação em Robôs Móveis Autônomos
- AMRC Lidera Inovação em Manufatura Circular e Tecnologias Avançadas de Reciclagem
- ABB Robotics Recebe Prêmio do Governo de Xangai por Inovação em P&D
- Bright Machines Lança Hardware e Software de Microfábrica com IA para Revolucionar Produção
- Maximize a Eficiência: Recursos e Benefícios do Software de Gestão de Inventário
- O Papel do Diretor de Manutenção: Responsabilidades e Impacto