fbpx

André Ferreira, nosso Head de Tecnologia, compartilha como funciona o processo de desenvolvimento de softwares utilizando SCRUM e outras metodologias ágeis nos projetos da Fohat

Neste artigo, que faz parte da série “A gente faz assim”, venho compartilhar um pouco do modo como fazemos para desenvolver software de forma ágil na Fohat.

Desenvolvimento ágil, em inglês Agile, é um termo que ficou popularizado através da publicação do “Manifesto para Desenvolvimento Ágil de Software”, onde são declarados os valores e princípios que fundamentam e norteiam o desenvolvimento ágil de software.

O Manifesto Ágil, como hoje é popularmente conhecido, foi escrito colaborativamente em 2001, durante um encontro de 17 arquitetos de software que buscavam as melhores formas de satisfazer o cliente entregando software com valor agregado de modo contínuo e adiantado em seus projetos. Seus valores e princípios visam priorizar o cliente e as pessoas envolvidas no projeto, a velocidade, qualidade e valor do software entregue em detrimento de processos complexos, do excesso de documentação e de planejamento e de burocracias contratuais, possibilitando assim a rápida resposta às mudanças necessárias durante o desenvolvimento do projeto. 

Antes da popularização dos projetos ágeis pelo mundo, o modelo comum adotado na gestão de projetos de software era o modelo em cascata. Herdado dos projetos de engenharia, a gestão de projetos em cascata costuma ter escopo, prazo, etapas, recursos e tarefas muito bem definidos de tudo que necessita ser executado para que o projeto seja entregue com sucesso. Na teoria este modelo parece fazer muito sentido, principalmente em projetos de engenharia onde as surpresas são menores e o escopo é menos variável. 

Na prática, em projetos de desenvolvimento de software – ainda mais em uma startup que está ainda busca validar o seu modelo de negócio – temos várias surpresas ao longo do projeto e a necessidade de pivotar caso o modelo de negócio se mostre inviável, o que torna o nosso escopo mais suscetível à mudanças durante o desenvolvimento. 

O conceito de pivotagem, que é a mudança na estratégia do negócio para melhor direcionar a empresa em uma direção que seja mais vantajosa, nasce da metodologia de mesmo nome do livro, Lean Startup (Startup Enxuta), de Eric Ries. Nesta metodologia, também adotada pela Fohat, a ideia central é a de trabalhar muito próximo ao cliente, buscando entender as suas reais necessidades, que serão convertidas em hipóteses que desejamos validar através da criação de MVPs. 

Um MVP é uma técnica de desenvolvimento na qual um novo produto é desenvolvido com recursos suficientes para validar as primeiras hipóteses a fim de satisfazer os primeiros usuários. O conjunto final e completo de recursos é projetado e desenvolvido somente após considerarmos o feedback dos usuários iniciais de nossos MVPs. 

Para entender melhor a visão do produto, levantar e priorizar as funcionalidades que cada MVP terá, fazemos uma semana de trabalho intensivo utilizando a metodologia Lean Inception. Depois então de elencar as funcionalidades que acreditamos ter maior valor para o projeto e de priorizá-las em uma sequência lógica em versões de MVPs que serão posteriormente construídos, chegou a hora de organizá-las em nosso backlog para que possamos iniciar as nossas sprints. Backlog e sprints são termos novos para você? Na sequência abordaremos estes conceitos integrantes do framework SCRUM e tudo ficará mais claro. 

O SCRUM, framework de gerenciamento de projetos criado por Jeff Sutherland antes mesmo da publicação do Manifesto Ágil, tem como objetivo ser um guia no desenvolvimento, entrega e manutenção de produtos complexos. Nele são definidos papéis, eventos e artefatos que permitem que o time Scrum trate e resolva os problemas mais difíceis enquanto entregam produtos com o mais alto valor possível de forma produtiva e criativa. 

Um time Scrum é composto por um Product Owner, o Time de Desenvolvimento e um Scrum Master. O Product Owner, ou dono do produto, tem como principal função garantir que os objetivos, escopo e domínio do produto sejam bem compreendidos por todos os integrantes do time. Além disso, ele também é o responsável por gerenciar o backlog do produto. 

O backlog do produto trata-se de uma lista ordenada de tudo que é conhecido ser necessário no produto. Porém, quando trabalhamos com o conceito de MVPs, nos focamos apenas nos itens do backlog que serão desenvolvidos para aquela versão de MVP em específico, gerando assim o backlog das sprints. 

A sprint, um dos principais conceitos do Scrum, é um período de tempo definido – normalmente de 2 a 4 semanas – durante o qual um incremento de produto é criado. Uma nova sprint é iniciada imediatamente após a conclusão da sprint anterior. Na Fohat, o período de tempo definido das sprints é de 2 semanas. 

O time de desenvolvimento, que deve ser auto-organizado, é formado por profissionais multidisciplinares que devem possuir todas as habilidades necessárias para que o trabalho seja executado e os incrementos definidos pelo Product Owner nos itens do backlog sejam entregues ao final das sprints. 

Na Fohat, o time de desenvolvimento é composto por desenvolvedores backend, frontend, fullstacks e arquitetos de computação em nuvem. São eles os responsáveis por desenhar a arquitetura da solução, criar as interfaces gráficas em que o usuário interagirá e programar as regras de negócio que a aplicação executará, por exemplo. 

O Scrum Master é o responsável por ajudar todos a entenderem a teoria, as práticas, regras e os valores do Scrum. É ele também o responsável por facilitar os eventos Scrum que ocorrem durante uma sprint, são eles:

Planejamento da Sprint (Planning) 

  • Reunião onde todo o time Scrum deve participar e que tem como objetivo definir quais itens do backlog do produto entrarão no backlog da próxima sprint e qual será o trabalho necessário para que a entrega destes itens seja realizada. 
  • Na Fohat, esta reunião ocorre na manhã da segunda-feira da 1ª semana da sprint e tem duração máxima de 2 horas. Na reunião de planejamento também jogamos o PlanningPoker para estimar o esforço necessário para a execução de cada item proposto no backlog da sprint que estamos iniciando. 

Reunião diária (Daily) 

  • Reunião do time de desenvolvimento com duração máxima de 15 minutos realizada em todos os dias da sprint. O objetivo desta reunião é de otimizar a colaboração e performance do próprio time através da verificação do trabalho realizado desde a última reunião diária e da previsão do trabalho ainda a ser realizado para que os objetivos da sprint sejam alcançados. 
  • Uma dica que posso dar é de realizar esta reunião sempre no mesmo horário e local para reduzir a complexidade e tornar a agenda de todos mais previsível. Na Fohat, esta reunião costuma acontecer momentos antes ou logo após o almoço, a depender do que for melhor para cada time. 

Revisão da Sprint

  • Reunião realizada no final da sprint com todo o time Scrum com o objetivo de verificar os itens que foram concluídos durante o período de trabalho. Nesta reunião, o ideal é que se tenha também a participação do cliente e demais partes interessadas para promover a colaboração entre todos e obter feedbacks valiosos para o projeto. 
  • Na Fohat, esta reunião acostuma acontecer no fim da tarde da sexta-feira da 2ª semana da sprint. Nela, além de revisarmos as entregas da sprint, também alinhamos as expectativas e possíveis pendências para a próxima sprint, que será melhor detalhada na nossa reunião de planejamento da sprint seguinte na segunda-feira da próxima semana. 

Retrospectiva da Sprint

  • Esta reunião é uma oportunidade para o time Scrum inspecionar a si próprio e criar um plano de melhorias a serem aplicadas nas próximas sprints. Ela deve ocorrer ao final de cada sprint, mas antes do início da sprint seguinte. 
  • Na Fohat, costumamos fazer a reunião de retrospectiva logo após a reunião de revisão da sprint. Porém, já tivemos que furar esta reunião algumas vezes quando a reunião de revisão acaba levando um pouco mais tempo para ser realizada. Por isso, este ainda é um ponto que temos que melhorar em nosso time. 

Além de todas estas metodologias que nos auxiliam a lidar com este cenário de incertezas na criação de um novo produto, também adotamos algumas práticas de tecnologia que aceleram o desenvolvimento de software (CI/CD, Gitflow, revisão de código, programação em pares, etc), mas que serão abordadas em uma próxima oportunidade.

Esta foi uma breve introdução sobre as metodologias ágeis, o SCRUM e sobre como trabalhamos com elas na Fohat. Não somos especialistas na área, mas como agilistas entusiastas, buscamos sempre formas para nos tornarmos cada vez mais ágeis, entregando mais valor aos nossos stakeholders com mais velocidade e confiança a cada dia. 

Espero que nossa experiência sobre o assunto possa ter lhe ajudado de alguma forma.

Texto publicado originalmente no Linkedin em 29 de julho de 2020, por André Ferreira.

fohacker

Author fohacker

More posts by fohacker

Comente!

pt_BRPT
en_USEN pt_BRPT