O que é Agile?

Concluído

Agile é um termo usado para descrever abordagens ao desenvolvimento de software, enfatizando a entrega incremental, a colaboração em equipe, o planejamento contínuo e o aprendizado. Ágil é mais uma filosofia (ou mentalidade) do que um processo para planejar o trabalho que uma equipe fará. Ele é baseado no desenvolvimento iterativo e ajuda a equipe a planejar e reagir melhor às alterações inevitáveis que ocorrem no desenvolvimento de software. Vamos ouvir a conversa de Clara com Paulo após a versão mais recente.

Clara achou que avançou um pouco no processo de interessar a equipe em DevOps, mas o progresso foi interrompido. A equipe tem andado muito ocupada corrigindo bugs da última versão para pensar em qualquer outra coisa.

Lembre-se de que Mateus, o gerente de produto, encaminhou à equipe alguns comentários bastante críticos dos clientes relacionados ao site do jogo de corrida. Resolver esses problemas não foi divertido. Paulo e Clara escreviam o código e, em seguida, o passavam a Marina, a testadora. Marina sempre parecia encontrar novos bugs e precisava devolver o código. O servidor de build falhou. Pedro não conseguia fazer o site do jogo funcionar na produção, mesmo depois de ter funcionado na fase de desenvolvimento e teste. Todas trabalharam muitas horas e perderam alguns finais de semana.

Após a entrega da versão, Clara e Paulo foram tomar um café. Eles estavam cansados. Mara estava desanimada, mas Andy tinha uma perspectiva diferente.

Paulo: Não sei por que você está surpresa. Entregar um software pronto é difícil. Sempre é muito trabalhoso. Você já fez isso de outro jeito?

Clara: Já, e acho que podemos facilitar as coisas aqui também. Eu acredito mesmo que o DevOps pode nos ajudar.

Paulo: Lembro que fizemos um exercício de mapeamento de fluxo de valor, mas e agora? Precisamos começar a trabalhar na nova versão. Pensei que tínhamos terminado com a parte de DevOps.

Clara: Podemos fazer muito mais. Acho que devemos dar o primeiro passo e fazer um planejamento Agile. Podemos usar o Azure Boards para nos ajudar.

Paulo: O que você quer dizer com Agile?

Clara: Agile é uma abordagem para o desenvolvimento de software. O termo "Agile" foi cunhado em 2001 no Manifesto Agile. O manifesto estabeleceu alguns princípios guia para criar uma abordagem melhor para o desenvolvimento de software. O manifesto diz:

Nós valorizamos:

  • Indivíduos e interações em vez de processos e ferramentas.
  • Software em funcionamento em vez de documentação abrangente.
  • Colaboração com o cliente em vez de negociação de contratos.
  • Responder a mudanças em vez de seguir um plano.

Paulo: Olha, se você conhece alguma forma mágica de facilitar a vida, sou totalmente a favor. Meus filhos sempre estão dormindo quando eu chego em casa. Mas tudo isso parece muito abstrato, sem soluções concretas.

Clara: Não é mágica, mas podemos fazê-lo bit a bit. O Azure DevOps nos fornece as ferramentas necessárias para implementar práticas do Agile. Por enquanto, quando quisermos planejar, poderemos usar o Azure Boards. Primeiro, você pode me explicar o processo de build e me ajudar a identificar os grandes problemas?

Depois de muito café, Clara e Paulo identificam os maiores problemas no processo de build. Todos os problemas surgiram durante a última versão. Após Paulo ir embora, Clara examina suas anotações e decide fazer um pouco de planejamento Agile. Por conta própria, ela usa o processo Básico do Azure Boards para colocar todos os problemas em um só lugar.

Sua próxima etapa é mostrar o painel à equipe e envolvê-los.

Recomendações para adoção do Agile

A equipe está se preparando para dar os primeiros passos rumo à adoção do Agile. Estas são algumas recomendações gerais que qualquer equipe pode usar para incorporar o Agile em sua organização.

Criar uma estrutura organizacional com suporte para práticas Agile

Para a maioria das organizações, a adoção do Agile pode ser difícil. Isso exige uma mudança de mentalidade e de cultura que desafia muitas políticas e processos existentes na organização. Tradicionalmente, a maioria das empresas usa uma estrutura de equipe horizontal. Na prática, isso significa que as equipes correspondem à arquitetura do software. Por exemplo, pode haver uma equipe responsável pela interface do usuário de um aplicativo, outra responsável pelos dados e outra responsável pela arquitetura orientada a serviços.

No entanto, equipes verticais fornecem resultados melhores para projetos Agile. Equipes verticais abrangem a arquitetura e são alinhadas aos resultados do produto. Por exemplo, pode haver uma equipe responsável pela parte de email do aplicativo, e os membros da equipe vêm de todas as três disciplinas mencionadas anteriormente. Outro benefício da estrutura de equipe vertical é que a escala é feita por meio da adição de equipes.

Mentoria para membros da equipe sobre técnicas e práticas Agile

Quando começam a adotar técnicas e práticas Agile pela primeira vez, algumas equipes decidem contratar coaches externos. Os mentores podem trabalhar até mesmo com várias equipes para ajudar a remover silos e empecilhos organizacionais, de modo que geralmente tenham habilidades de ensino e de gestão. Eles também podem treinar os membros da equipe em técnicas da Agile, por exemplo, como realizar reuniões de stand-up e de feedback. Ao longo do tempo, no entanto, é importante que os membros da equipe desenvolvam a capacidade de orientar uns aos outros. Isso significa que a maior parte do trabalho deve ser feita de maneira colaborativa e não por indivíduos que passam a maior parte do tempo trabalhando sozinhos.

Habilitar a colaboração na equipe e entre equipes

Se a colaboração é a chave para o sucesso no Agile, quais são algumas das maneiras de incentivá-la? Veja algumas ideias.

Mudança cultural

Ao alterar uma cultura, tenha algumas coisas em mente. É importante que os membros da equipe tenham um local silencioso e confortável para trabalhar. Eles precisam de espaços onde possam se concentrar, sem muitas distrações e ruído.

As reuniões são um fato da vida e pode parecer que elas dominam a vida das pessoas no trabalho. Para dar mais controle aos membros da equipe, as reuniões precisam de uma pauta e períodos rígidos.

Comunicações assíncronas, como emails e mensagens, podem criar sobrecargas e as pessoas geralmente acham que precisam responder imediatamente a elas. Deixe claro que nem todas essas comunicações precisam de uma resposta imediata.

Membros de equipe remotos agora são a norma em muitas empresas. Todos precisam se sentir à vontade com todos os membros da equipe e tratá-los igualmente, estejam eles no escritório ou trabalhando fora do local. A colaboração por meio da comunicação deve se tornar parte do DNA da organização.

Nunca é demais enfatizar a importância da boa comunicação, mesmo quando há discordâncias. A resolução de conflitos é uma boa habilidade que qualquer equipe Agile deve ter.

Equipes interfuncionais

Assim como é importante que os membros da equipe trabalhem de maneira colaborativa, também é importante que as equipes colaborem entre si. Equipes interfuncionais adicionam novas habilidades e perspectivas que podem ampliar a capacidade de todos de resolver os desafios de maneira criativa. Equipes interfuncionais também tornam a organização inteira mais coesa. Elas reduzem os conflitos de território e aumentam a sensação de que todos estão trabalhando para uma meta comum.

Ferramentas para colaboração

Boas ferramentas podem ajudar os membros da equipe Agile a colaborar com mais eficiência, tanto dentro da equipe quanto com outras equipes. Aqui estão algumas sugestões para ajudar você a começar:

  • Microsoft Teams: O Teams é um aplicativo que fornece um local de trabalho para chat, reuniões, anotações e armazenamento de arquivos.
  • Skype: O Skype é fácil de usar e é uma boa ferramenta de uso geral. Muitas pessoas já têm ele instalado.
  • Slack: O Slack fornece muitos canais de comunicação separados, todos em uma única interface. Você pode organizar esses canais de várias maneiras, por exemplo, por projeto, equipe ou tópico. As conversas são retidas e são pesquisáveis. É fácil adicionar membros internos e externos da equipe. o Slack integra-se diretamente a muitas ferramentas de terceiros, como o GitHub, para código-fonte.

Outras ferramentas comuns incluem Google Hangouts, Asana, Trello, GoToMeeting e monday.com. Tente se familiarizar com as opções para ver quais delas atendem às necessidades de sua equipe e sua empresa.