Automatizando o desenvolvimento de software e acelerando a inovação
Quase três anos atrás, Satya Nadella, da Microsoft, cunhou 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 está registrado como tendo 40.000 engenheiros de software (mais do que a Alphabet) em seu registro mais recente. Todas as grandes empresas estão correndo para contratar engenheiros para superar a concorrência. O grande problema é que o desenvolvimento de software tradicional é lento, fragmentado e um desperdício.
Por exemplo, a cada semana, o engenheiro de software médio gastará 4 horas aguardando a conclusão dos testes, 3,5 horas aguardando compilações e 3 horas no gerenciamento de ambiente - mais de um quarto de sua semana de trabalho sem criar nada de valor. Quando você considera que os engenheiros geralmente são 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, a CircleCI, apostou que IA e automação seriam a chave para acelerar a inovação de software e liberar engenheiros para fazer trabalhos importantes. No ano passado, a empresa introduziu uma série de aprimoramentos de automação e aprendizado de máquina que reduziram em 50% o tempo de espera dos engenheiros. É uma das muitas razões pelas quais mais de 300.000 desenvolvedores, incluindo os do Facebook, Spotify, GoPro, InstaCart e muitos outros, recorreram ao CircleCI para se mover mais rápido.
Liderando a empresa está Jim Rose - seis vezes fundador com investimentos anteriores do Google Ventures, Foundation Capital e Marc Andreessen. Desde que ingressou na CircleCI há pouco mais de quatro anos, Rose aumentou a receita em mais de 450% e transformou a empresa em uma entidade realmente empolgante.
Interessado em aprender mais sobre como automatizar o desenvolvimento de software e acelerar a inovação, a Information Age conversou com Rose sobre o assunto.
Qual é a situação atual do mercado de software?
No momento, ainda existem muitas empresas e indivíduos que estão realizando diferentes processos manualmente. Quando você pensa no processo de transformação digital, trata-se realmente de tentar fomentar uma equipe de desenvolvimento de software.
Uma delas é tentar obter o software dos data centers locais e colocá-los em ambientes nativos da nuvem, onde você pode obter acesso à computação instantaneamente.
A segunda é que o software, tradicionalmente ou em muitos casos, tem sido visto como uma diretriz ou um complemento ao negócio principal. Agora você está tendo todos os tipos de negócios, de bancos a fabricantes de automóveis e varejistas, todos percebendo que o software é essencial para o que eles fazem. E assim eles precisam descobrir o que possuem e precisam consolidar seus ativos e integrá-los como um padrão.
Uma vez que as empresas têm esse acesso instantâneo à computação e têm estruturas em que os desenvolvedores podem trabalhar, o que está no meio hoje é geralmente algum tipo de mistura de diferentes plataformas e processos.
Na maioria dos casos, você tem processos de lançamento de software em cascata muito longos que têm muitas etapas manuais e, em seguida, muitos scripts manuais. Em alguns casos, para lojas mais avançadas, eles podem ter a primeira geração de soluções de automação, mas à medida que as equipes estão acelerando, elas começam a quebrar.
E agora é nisso que estamos entrando e ajudando as empresas a navegar. À medida que suas equipes de software estão acelerando, eles estão criando mais software e tentando fazê-lo mais rápido; a fim de ser sensível às oportunidades no mercado, mas também a possíveis mudanças negativas. As empresas só precisam repensar completamente como todas essas peças são montadas.
Essa velocidade você se refere ao principal obstáculo no desenvolvimento de software?
Empresas e equipes de desenvolvimento estão tentando acelerar à medida que o mercado está acelerando. Eles estão tentando descobrir como podem trabalhar rapidamente para que possam abordar as oportunidades.
A única maneira de chegar lá é realmente automatizar todas as etapas que não precisam necessariamente de intervenção humana, porque ao invés de fazer isso ao longo de minutos, horas e dias, você pode fazê-lo em segundos.
À medida que as equipes estão acelerando e como o software é sua principal vitrine para o cliente, você precisa garantir que os níveis de qualidade sejam altos; você tem que ter certeza de que ele não trava ou que você não tem vulnerabilidades de segurança, por exemplo.
Então, quando você pensa em ágil, trata-se de tentar se tornar mais ágil, tanto do ponto de vista da qualidade quanto do ponto de vista da velocidade.
Nos EUA, é tudo uma questão de velocidade, mas ao ir mais rápido, integrando partes menores e sendo capaz de lançar software de forma mais consistente, seu software fica inerentemente melhor. Todos esses medos de ter que implantar desaparecem quando você faz isso cinco, oito, 15 vezes por semana e, em alguns casos, temos clientes que fazem isso 100 vezes por dia.
A implantação se torna um não-problema.
No lado da qualidade, um dos grandes problemas para o desenvolvimento de software no passado é que, se você lançar apenas uma vez por trimestre, terá muita dificuldade em garantir que todas as alterações introduzidas em seu aplicativo realmente funcionem juntas. Muitas vezes você vê as empresas fazendo um lançamento do big bang e depois que eles fazem um lançamento do big bang, elas passam os próximos 60, 90 dias tentando consertar todas as coisas que regrediram e quebraram. Nesse método, seu ciclo de software fica mais lento, mas também a qualidade do próprio aplicativo sofre.
De uma perspectiva ágil, é isso que as pessoas estão tentando abordar.
Como uma organização pode mudar para acomodar, apoiar e promover equipes de desenvolvimento de software?
Existem algumas maneiras diferentes.
Uma é que os desenvolvedores são difíceis de contratar e, portanto, você quer ter certeza de que todo o tempo gasto de uma perspectiva de desenvolvimento é dedicado à construção de seu software especial, seja lá o que for; se você é um banco, criando um ótimo aplicativo bancário, se você é um aplicativo de comércio eletrônico, criando um ótimo aplicativo de comércio eletrônico. Eu acho que uma das grandes áreas em que as pessoas investiram pouco é que os desenvolvedores de software historicamente construíram coisas. É isso que eles fazem, eles constroem software. Portanto, o ciclo de desenvolvimento foi subinvestido de uma perspectiva de aplicativo de terceiros.
Há apenas coisas como, por exemplo, automação de testes e infraestrutura de entrega contínua que as equipes não deveriam construir por conta própria. É muito melhor adquiri-lo de outra pessoa especializada nessa área para que você possa se concentrar naquilo em que é bom. Seria como dizer a alguém que eles precisam construir uma cafeteira e dar a eles um monte de tubos de cobre, algumas soldas e algumas válvulas. Você nunca faria isso. Mas historicamente, o desenvolvimento tem sido tratado dessa forma. Portanto, colocar definitivamente as ferramentas e plataformas certas no lugar é realmente essencial, desde o data center até as ferramentas de planejamento.
Acho que a segunda parte é que, em um modelo tradicional em cascata, o desenvolvimento de software geralmente desempenha o papel de apanhador, então o aplicativo é definido muito mais cedo no processo e, quando a equipe de desenvolvimento o obtém, várias decisões são tomadas que pode ou não funcionar e pode ou não ser viável ou fácil de fazer.
Existe essa noção de deslocamento à esquerda, que está tentando impulsionar o desenvolvimento cada vez mais no ciclo de planejamento para que as preocupações ou as necessidades da equipe de desenvolvimento sejam consideradas tanto na construção do aplicativo quanto na sua entrega. E então, quando você pensa sobre isso de uma perspectiva operacional, significa que você realmente precisa pensar em como um aplicativo é operado muito mais cedo no ciclo de vida. Por exemplo, se você está tentando criar aplicativos nativos da nuvem, precisa arquitetá-los de uma maneira muito particular, o que significa que você precisa tomar essa decisão e fazer parte desse processo muito antes.
Quando as equipes estão adotando mais processos ágeis de software em primeiro lugar, você acaba com uma triangulação de preocupações. Você tem o pessoal, os empresários e os gerentes de produto que são os donos do motivo pelo qual você está construindo algo. Você tem os arquitetos técnicos e os desenvolvedores de software realmente falando sobre como você o constrói. E então você tem os operadores, os responsáveis por realmente executá-lo, descobrindo o que você realmente executa no final de todo esse processo. Então, todos precisam estar envolvidos. E essa pode ser uma transição difícil para algumas empresas.
Como a IA e a automação podem estimular e melhorar a inovação de software?
Com a automação, você pode automatizar tarefas predeterminadas e de autoaprendizagem. Um exemplo disso pode ser se toda vez que você tentar lançar um software você tiver que fazer um teste de terceiros contra algum outro sistema de pagamentos de terceiros. No passado, com essas tarefas, você teria que contratar uma equipe de controle de qualidade que essencialmente tentaria processar transações e fazer tudo manualmente, o que é incrivelmente lento. Também é incrivelmente repleto de erros e complicações.
Esses são exemplos perfeitos de tarefas que devem ser totalmente automatizadas em seu conjunto de testes - todas essas coisas que você sabe que fará repetidamente, você deve automatizar essas tarefas para torná-las determinísticas e previsíveis. E então, finalmente, rápido.
Há oportunidades para realizar essas tarefas repetitivas que qualquer minuto gasto por um desenvolvedor fazendo essas coisas repetidamente é uma perda de tempo e, francamente, uma perda de dinheiro.
Então, quando você olha para a IA e o software que está sendo construído, em vez de pensar em empurrar software determinístico preditivo, o que você está fazendo é empurrar um modelo. E o modelo é uma caixa de areia de noções pré-concebidas de como algo pode funcionar e, à medida que as pessoas estão passando por isso, e enquanto os testes estão sendo executados, o modelo está mudando e evoluindo à medida que aprende mais sobre como as coisas estão funcionando ou não trabalhando. Isso coloca uma pressão incrível no sistema de testes.
Quando você pensa em alguns dos erros da IA quando você tem situações em que há um viés inconsciente embutido na IA, onde a IA meio que enlouquece e começa a bloquear as pessoas de certos aplicativos, ou desliga as coisas, essas são todas situações em que de um perspectiva de teste que são desafiadoras.
Está se tornando cada vez mais complicado, mas também está se tornando muito, muito mais rápido e mais responsivo. Portanto, você só verá a inclusão de IA e aprendizado de máquina no desenvolvimento de software para continuar aumentando. Mas agora você precisa ter todas as estruturas necessárias para poder testar todas essas mudanças.
Sistema de controle de automação
- O que é um redator de serviços automotivos e o que eles fazem?
- Projeto e desenvolvimento de um robô de inspeção de baixo custo
- SABIC e Nottingham Spirk se associam para acelerar o desenvolvimento da inovação
- Automação inteligente de edifícios e o futuro do desenvolvimento imobiliário nas cidades
- Seegrid cria grupo de pesquisa e desenvolvimento 'Blue Labs'
- AMRC impulsiona inovação em tecnologia e economia circular
- ABB Robotics:inovação tecnológica e pesquisa e desenvolvimento de robótica
- Bright Machines lança hardware e software Microfactory
- Software de gerenciamento de estoque:recursos e benefícios
- O que é um diretor de manutenção e o que ele faz?