Antigamente, devido às limitações tecnológicas, as equipes de desenvolvimento de software precisavam ser disciplinadas, rígidas e inflexíveis, mas hoje em dia, com a ajuda do SaaS e CI/CD, isso mudou.

Na semana passada, expressei críticas breves sobre o scrum, apontando sua falta de agilidade e eficácia. Refleti sobre como a tecnologia de software tem sido um obstáculo para alcançar a verdadeira agilidade. Até recentemente, a maneira como desenvolvíamos e entregávamos software não favorecia a flexibilidade. No entanto, estamos progredindo em direção a um novo modelo de desenvolvimento que nos possibilita ser mais flexíveis e ágeis.
Uma das razões pelas quais a agilidade é tão desejada por todos é devido à forte rejeição ao método da cascata, que ainda persiste. O método da cascata, resumidamente, consistia em:
- Realize um grande esforço inicial para estabelecer claramente os requisitos.
- Desenvolva o programa de computador.
- Transfira o programa para o cliente.
A princípio, a abordagem de descobrir as necessidades do cliente e construir um produto com base nelas parecia correta na Cachoeira. No entanto, logo ficou claro que os prazos eram longos e as circunstâncias mudavam. O que o cliente havia imaginado no início não correspondia mais às suas necessidades no momento da entrega do produto. Os requisitos mudavam entre o estabelecimento inicial e a entrega do software, e não havia flexibilidade para lidar com essas alterações.
Foi difícil lidar com a mudança.
Uma ideia essencial da abordagem ágil é reduzir a rigidez e possibilitar a flexibilidade e a adaptação aos requisitos em constante mudança. O desenvolvimento de software deve ser fluido, acompanhando a evolução dos recursos e das exigências. O software precisa ser capaz de se ajustar prontamente a essas alterações, o que é o cerne do Manifesto Ágil.
Entretanto, na época em que o Agile Manifesto foi criado, o cenário do desenvolvimento de software e da entrega de tecnologia não era suficientemente adaptável para corresponder às ideias defendidas pelo manifesto. No entanto, essa situação mudou com a chegada do modelo de SaaS (software como serviço).
Durante muitos anos, o software precisava ser entregue de uma vez, com várias características coordenadas para um único lançamento. As equipes de desenvolvimento eram obrigadas a ser rígidas e inflexíveis devido aos limites tecnológicos, e as datas de entrega precisavam ser cumpridas. As atualizações eram difíceis e demoradas, e os clientes muitas vezes precisavam esperar por uma versão oficial para corrigir bugs.
Mas atualmente não é dessa forma que disponibilizamos software, não é? Com a crescente utilização de SaaS e CI/CD (integração contínua / entrega contínua), temos total controle sobre o software em execução. Mesmo o aplicativo cliente que é executado em um navegador está hospedado em nossos servidores e é enviado para o cliente a cada solicitação. A capacidade de controlar o software centralmente significa que a implementação de novas funcionalidades e correções de bugs é imediata e está disponível para todos os usuários. A ideia de uma única data de lançamento para um conjunto de recursos está se tornando obsoleta.
A característica mais destacada
Foi mencionado que o envio é a característica mais vantajosa de todas. Atualmente, um aplicativo SaaS pode ser fornecido aos clientes em questão de minutos. Novos clientes podem começar a utilizar a aplicação imediatamente, sem a necessidade de configurar praticamente nada. Ao disponibilizar o aplicativo via navegador, os desenvolvedores podem lançar atualizações frequentes. Eles podem incorporar funcionalidades de forma imediata e gradualmente, utilizando flags de recursos, e implementar correções de bugs que ficam disponíveis instantaneamente para cada usuário.
A principal razão pela qual uma aplicação SaaS pode ser facilmente e rapidamente implementada é devido à facilidade de teste. As entradas e saídas de uma aplicação SaaS são claramente definidas, tornando simples a criação de testes automatizados. Além disso, é possível executar um conjunto abrangente de testes em questão de minutos, ao contrário dos dias ou semanas necessários para testar uma nova versão de um aplicativo desktop de forma adequada.
Além disso, caso uma implementação apresente dificuldades, é possível retornar a um estado anterior rapidamente. Novas funcionalidades podem ser adicionadas de forma organizada e, se alguma delas causar problemas, podem ser removidas facilmente com um simples clique.
Este modelo inovador apresenta vantagens significativas. Os recursos podem ser criados e implementados de forma gradual. Novas funcionalidades podem ser desenvolvidas simultaneamente e disponibilizadas para grupos específicos de usuários. As equipes podem disponibilizar mais recursos com antecedência e com melhor qualidade, permitindo que os desenvolvedores respondam rapidamente a problemas de forma flexível. Não é mais necessário agrupar recursos e correções de bugs para entrega em uma única data.
Em outras palavras, é possível construir o software de maneira ágil.