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 não é um processo, mas sim uma filosofia ou mentalidade para planejar o trabalho que uma equipe fará. Baseia-se no desenvolvimento iterativo e ajuda uma equipa a planear e reagir melhor às mudanças inevitáveis que ocorrem no desenvolvimento de software. Vamos ouvir a discussão de Mara com Andy após o último lançamento.

Mara sentiu que tinha dado alguns pequenos passos para interessar a equipe em DevOps, mas o progresso estagnou. A equipe tem estado muito ocupada corrigindo bugs na última versão para pensar em qualquer outra coisa.

Lembre-se de que Irwin, o gerente de produto, forneceu à equipe alguns comentários de clientes bastante críticos sobre o site de jogos de corrida. Resolver esses problemas não foi divertido. Andy e Mara escreviam o código e depois o entregavam a Amita, a testadora. Amita sempre parecia encontrar novos bugs e tinha que devolver o código. O servidor de compilação falhou. Tim não conseguiu fazer com que o site do jogo funcionasse na produção, mesmo depois de ter trabalhado em desenvolvimento e teste. Todos trabalharam longas horas e perderam alguns fins de semana.

Depois de enviarem o lançamento, Mara e Andy sentaram-se para tomar café. Ambos estavam cansados. Mara estava desanimada, mas Andy teve uma atitude diferente.

Andy: Não sei por que você está surpreso. Tirar o software da porta é difícil. É sempre um slog. Você já fez diferente?

Mara: Eu tenho, e acho que poderíamos facilitar as coisas aqui também. Eu realmente acredito que o DevOps pode nos ajudar.

Andy: Lembro-me que fizemos um exercício de mapeamento de fluxo de valor, mas e agora? Temos que começar a nova versão. Eu pensei que tínhamos acabado com o DevOps.

Mara: Há muito mais que podemos fazer. Acho que devemos dar o primeiro passo e fazer algum planejamento ágil. Podemos usar os Painéis do Azure para nos ajudar.

Andy: O que você quer dizer com Agile?

Mara: Agile é uma abordagem ao desenvolvimento de software. O termo "Agile" foi cunhado em 2001 no Manifesto Ágil. O manifesto estabeleceu alguns princípios orientadores para uma melhor abordagem ao desenvolvimento de software. O manifesto diz:

Valorizamos:

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

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

Mara: Não é mágica, mas podemos fazer isso pouco a pouco, e o Azure DevOps nos dá as ferramentas necessárias para implementar práticas ágeis. Por enquanto, quando quisermos planejar, podemos usar os Quadros do Azure. Primeiro, você pode me explicar o processo de construção e me ajudar a identificar os grandes problemas?

Depois de muito café, Mara e Andy identificam os maiores problemas no processo de construção. Todos os problemas surgiram durante o último lançamento. Depois que Andy sai, Mara olha para suas notas rabiscadas e decide fazer um pequeno planejamento ágil sozinha. Por conta própria, ela usa o processo Básico nos Painéis do Azure para obter todos os problemas em um só lugar.

Seu próximo passo é mostrar a diretoria para a equipe e envolvê-los.

Recomendações para a adoção do Agile

A equipe está se preparando para dar os primeiros passos para adotar o Agile. Aqui estão algumas recomendações gerais que qualquer equipe pode usar para incorporar o Agile em sua organização.

Criar uma estrutura organizacional que suporte práticas ágeis

Para a maioria das organizações, adotar o Agile pode ser difícil. Requer uma mudança de mentalidade e uma mudança de cultura que desafia muitas políticas e processos existentes dentro da organização. Tradicionalmente, a maioria das empresas utiliza uma estrutura de equipa 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 equipe responsável pelos dados e outra equipe responsável pela arquitetura orientada a serviços.

No entanto, as equipes verticais proporcionam melhores resultados para projetos ágeis. As equipes verticais abrangem a arquitetura e estão alinhadas com os resultados do produto. Por exemplo, pode haver uma equipe responsável pela parte de e-mail 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 o dimensionamento ocorre pela adição de equipes.

Orientar membros da equipe em técnicas e práticas ágeis

Quando começam a adotar técnicas e práticas ágeis, algumas equipes decidem contratar coaches externos. Os coaches podem até trabalhar com várias equipes para ajudar a remover obstáculos e silos organizacionais, por isso geralmente têm habilidades de ensino e gerencial. Eles também podem treinar os membros da equipe em técnicas ágeis, como executar stand-up e reuniões de revisão. Com o tempo, porém, é importante que os membros da equipe desenvolvam a capacidade de orientar uns aos outros. Isto significa que a maior parte do trabalho deve ser feito de forma colaborativa e não por indivíduos que passam a maior parte do seu tempo a trabalhar sozinhos.

Habilite a colaboração em equipe e entre equipes

Se a colaboração é a chave para se tornar bem-sucedido no Agile, quais são algumas das maneiras de incentivá-la? Aqui estão algumas ideias.

Alterações culturais

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

As reuniões são um facto da vida e podem sentir que tomam conta da vida profissional de uma pessoa. Para dar aos membros da equipe mais controle, as reuniões precisam de uma agenda e prazos rígidos.

As comunicações assíncronas, como e-mail e mensagens, podem parecer esmagadoras e as pessoas muitas vezes sentem que precisam ser respondidas imediatamente. Deixe claro que nem todas essas comunicações precisam de uma resposta imediata.

Os membros da equipa remota são agora a norma em muitas empresas. Todos precisam se sentir confortáveis com todos os membros de sua equipe e tratá-los igualmente, estejam eles no escritório ou trabalhando fora do local. A colaboração através da comunicação deve tornar-se parte do ADN da organização.

Não podemos enfatizar demais a importância de uma boa comunicação, mesmo quando há divergências. A resolução de conflitos é uma boa habilidade para qualquer equipe ágil.

Equipas multifuncionais

Assim como é importante que os membros da equipe trabalhem de forma colaborativa, também é importante que as equipes colaborem entre si. Equipes multifuncionais adicionam novas habilidades e perspetivas que podem ampliar a capacidade de todos de resolver desafios de forma criativa. As equipas multifuncionais também tornam toda a organização mais coesa. Reduzem as guerras de relva e aumentam a sensação de que todos estão a trabalhar para um objetivo comum.

Ferramentas para colaboração

Boas ferramentas podem ajudar os membros da sua equipe Agile a colaborar de forma mais eficaz, tanto dentro da equipe quanto com outras equipes. Aqui estão algumas sugestões para ajudá-lo a começar:

  • Microsoft Teams: o Teams é um aplicativo que fornece um local de trabalho para bate-papo, 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á o têm instalado.
  • Slack: O Slack fornece muitos canais de comunicação separados, tudo a partir de uma única interface. Você pode organizar esses canais de várias maneiras, como por projeto, equipe ou tópico. As conversas são mantidas e pesquisáveis. É fácil adicionar membros da equipe interna e externa. O Slack integra-se diretamente com muitas ferramentas de terceiros, como o GitHub para código-fonte.

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