Gerenciando Product Backlog usando o Azure DevOps (TFS)

Atualizado em 18/03/19 após a mudança do Visual Studio Online para Azure DevOps!

Quando começamos a estudar o Scrum Guide logo nos deparamos com o artefato Product Backlog. O framework prescreve que o Product Owner deve manter este artefato com todos os itens necessários ao produto/projeto a ser desenvolvido, de maneira priorizada, atualizada e visível.

No entanto, algo que o framework não prescreve é como fazer isso e a ideia do post de hoje é justamente essa, mostrar uma ideia de como organizar o seu Product Backlog usando a ferramenta Azure DevOps, a versão mais recente do antigo Team Foundation Server da Microsoft (TFS), em sua versão SaaS. Não vou falar aqui de priorização de backlog, coisa que já falei em outros posts, mas de como usar esta ferramenta web para fazê-lo e explicando alguns conceitos importantes que podem ser aplicados independente da ferramenta que você venha a utilizar.

Azure DevOps

Em idos de 2008 a empresa que eu trabalhava à época, RedeHost, adquiriu licença para instalarmos em um servidor nosso o Team Foundation Server, uma suíte para gerenciamento do ciclo de vida de aplicações (ALM – Application Lifecycle Management). Nela podíamos gerenciar desde as tarefas de um projeto, o versionamento de seu código, automatizar o seu build, issue tracker, etc.

Em 2010 a Microsoft lançou o preview do TFS na nuvem, em versão SaaS, onde era possível ter acesso à mesma suíte sem necessitar de um servidor local e sem se preocupar com a escala do SQL Server, que era um requisito que incomodava bastante nosso pessoal de infra. De lá pra cá a ferramenta web mudou bastante e, embora não seja uma ferramenta perfeita, é muito útil para gerenciar todo tipo de projeto, independente da tecnologia utilizada, uma vez que oferece suporte a versionamento com Git, diversos plugins, uma API rica e muito mais.

Note que mesmo que você não tenha interesse algum nestas features de Integração Contínua (CI – Continuous Integration), você ainda pode usar a ferramenta para Task Management.

Para poder prosseguir neste tutorial, crie uma conta gratuita definindo uma URL para você. A minha é luiztools.visualstudio.com e tenho essa conta há muitos anos, desde a época do preview. Enquanto você tiver até 5 usuários cadastrados na sua conta, você não terá de pagar nada à Microsoft, o que é excelente para pequenos times de desenvolvimento.

Criando um novo projeto

Na tela inicial da ferramenta você tem um botão New Project no canto direito. Use ele e defina um nome para o projeto. Se você tem apenas um time que toca diversos projetos, pode ser interessante colocar o nome do time aqui, ao invés do nome do projeto atual deles, para fins de histórico.

Create Project
Create Project

Na seção Advanced da criação do projeto você tem outras opções que incluem a tecnologia de versionamento (que eu deixo para você decidir) e o template de Work Items dentre os possíveis:

  • CMM: fundamentado no CMMI;
  • Agile: fundamentado no antigo MSF for Agile da Microsoft;
  • Scrum: fundamentado no Scrum;
  • Basic: não conheço;

Usaremos o Scrum neste tutorial e enquanto o primeiro eu nunca usei, os dois últimos são praticamente idênticos, mudando alguns estados e a nomenclatura de alguns Work Items (User Stories do Agile viram Product Backlog Items no Scrum, por exemplo).

New Project
New Project

Uma vez com o projeto criado, acesse o menu lateral Boards > Backlogs. É aqui que concentramos os nossos esforços neste artigo.

Organizando o Product Backlog

Nesta área nós temos acesso a um modelo de gerenciamento de backlog prescrito pela ferramenta, uma vez que o framework Scrum não toma partido do método A ou B de gerenciamento de backlog.

Níveis de Backlog
Níveis de Backlog

Existem diversos níveis de backlog que auxiliam o Product Owner (principalmente) a se organizar. Para ver todos os níveis, use o pequeno ícone de Settings na extrema direita da tela (uma engrenagem), logo acima das colunas do backlog. Dentro das configurações, na aba Backlogs, marque as três opções: Epics, Features e Product Backlog Items.

Settings - Backlog
Settings – Backlog

Os três níveis de Backlog são Epics, Features e Product Backlog Items, à saber:

  • Epics: épicos são histórias de usuário muito grandes e pouco detalhadas, geralmente levando várias sprints para ser concluído (pense na grandeza de meses de trabalho). Você pode criar épicos pensando em marcos/milestones/grandes versões do seu produto/projeto, como “MVP do Produto X” ou como grandes entregas do seu time, como “Entrega de Março”. Ou ainda falando de um módulo específico, que seja muito grande.
  • Features: funcionalidades são incrementos de software dentro de um épico, simbolizando partes coerentes do produto que geram valor ao usuário de uma maneira completa. Dentro de um épico como “MVP do Produto X”, cada funcionalidade que não deve faltar ao MVP é uma feature dentro do épico. O mesmo vale para o épico “Entrega de Março”, onde cada feature é um dos pedaços desta entrega.
  • Product Backlog Items: os famosos itens de backlog do produto são citados no Scrum Guide como sendo a unidade de trabalho do Product Backlog. Um PBI gera valor ao usuário por si só e entregar um ou mais deles pronto (DONE) atinge ao grau máximo de sucesso de uma sprint, o chamando “incremento de software potencialmente entregável”. Embora o Scrum não prescreva uma fórmula para escrever esses itens, o mais comum é que se use o formato de User Stories aqui.

O formato recomendado de escrita é partir do Work Item Type menos granular (Epic) até o mais granular (Product Backlog Item), usando o próprio recurso de “Add Feature”que fica à disposição à esquerda do Epic e “Add Product Backlog Item” que fica à esquerda das Features, sempre com um ícone de adição (+). Sendo assim, acesse o nível Epic do seu Product Backlog e comece criando os seus épicos com apenas títulos. Mais tarde você pode adicionar mais detalhes a cada um deles (mas não muito, eles são apenas visões) clicando no título dos mesmos.

Backlog preenchido
Backlog preenchido

Após adicionar os seus épicos, adicione features dentro de cada um deles, de acordo com o que você sabe hoje sobre os épicos. Faça isso na mesma visão organizacional de Epics, para ir vendo os desdobramentos e hierarquia dos mesmos. Para este exercício, pegue um projeto real do seu time ou então um problema fictício como um cadastro de cliente. O épico seria fazer a v1 do cadastro, sendo que as features poderiam ser “Adicionar novo cliente”, “Excluir cliente”, etc.

Conforme você for adicionando as features dentro do épico você já pode ir quebrando seus Product Backlog Items (PBIs). Se você atendeu à minha sugestão de usar User Stories, pense em todos as histórias de usuário que puder lembrar para cada uma das features. Algumas features simples talvez tenham apenas uma história, enquanto outras mais complicadas podem ter várias. Não esqueça de, além de escrever o título e descrição da história (usando o formato padrão da User Story), escreva também os critérios de aceite no campo adequado (Acceptance Criteria).

Product Backlog Item
Product Backlog Item

É importante ter em mente que o Product Owner tem total liberdade neste momento. Crie, edite e exclua seus Work Items livremente. É comum escrevermos algumas histórias que mais tarde descobrimos serem épicos. É comum épicos serem quebrados em mais épicos para que o sistema não vire um mero waterfall-iterativo. Questões relacionadas a prioridades de itens podem ser feitas usando o campo Priority ou a própria ordenação visual (drag-n-drop com o mouse). Embora o time tenha acesso ao Product Backlog como um todo, não é a partir dele que eles se orientarão no dia-a-dia, como falarei mais adiante.

Organizando as sprints

A visão de backlog que usamos até o momento são de foco do Product Owner. O Time de Desenvolvimento trabalha usando a visão da sprint atual (current sprint) dentro do Visual Studio Online. A visão das sprints fica em Boards > Sprint no menu lateral, sendo que você tem um menu para filtrar as sprints na direita da tela (current é a atual).

Sprints
Sprints

Durante a Sprint Planning o Product Owner explica quais são as prioridades do Product Backlog. Sobre cada história prioritária, o time deve detalhar quais as tarefas serão necessárias para que seja possível estimar o esforço (campo Effort) de entrega daquele Product Backlog Item.

Uma técnica muito comum utilizada para estas estimativas é a de Planning Poker, já citada aqui no blog. Caso o Time de Desenvolvimento julgue útil, eles podem “quebrar” os Product Backlog Items em Tasks dentro da própria ferramenta usando o botão de + (Add Task) à esquerda do PBI, na mesma visão que o Product Owner usa para gerenciar o backlog.

Quebrando tasks
Quebrando tasks

Existe um campo Work Remaining dentro das Tasks que permite adicionar a estimativa de tempo para realização de cada tarefa. Se você optar por quebrar e/ou estimar as tarefas é uma decisão do time, mas essa atividade é auxiliar para descobrir o esforço da história. Entende-se que somente a entrega completa da história agrega valor ao cliente e consequentemente nos permite dar uma sprint como bem sucedida.

Após descobrir o esforço de cada um dos PBIs prioritários do P.O., o time decide qual o volume de PBIs que cabem na sprint usando o somatório de seus campos Effort. Se esse time já rodou sprints anteriores usando a mecânica de pontos eles já devem ter algum histórico de velocidade. Caso contrário terão de chutar mesmo, posteriormente analisando na Sprint Retrospective o quão próximo estavam da realidade.

Uma vez definido o escopo da próxima sprint, cada uma das Tasks e PBIs que farão parte da mesma devem ter seu campo Iteration ajustado para a sprint correta, como mostra a imagem abaixo.

Iteration - Sprint 1
Iteration – Sprint 1

O Time de Desenvolvimento irá trabalhar somente olhando o backlog da sprint que, via de regra, não deve ser mudado durante o desenvolvimento da mesma sem o consentimento do time. Na aba Board o time tem um taskboard (tipo Kanban) que apesar de não ser tão bom de usar quanto o Trello, é bem útil e completamente personalizável, o que pode ser assunto para outro post.

Taskboard
Taskboard

Boas Práticas

Algumas boas práticas para quem está começando a usar o Visual Studio Online agora e até mesmo está começando com Scrum:

  • Como Product Owner, refine o seu backlog quase que diariamente, detalhando as histórias mais importantes, consultando o time sobre o impacto de cada uma delas, consultando os stakeholders, analisando o mercado, etc. O seu backlog sempre deve estar atualizado, priorizado e visível quando uma Sprint Planning for começar.
  • Cada história pode estar associada a um membro do time (campo Assigned To). Converse com seu time para que ninguém associe mais de uma história a si mesmo para evitar problemas.
  • Como Product Owner, use os três níveis de backlog, isso ajuda a deixar tudo mais organizado e ao time entender para onde o projeto está caminhando.
  • Priorize visualmente o seu backlog, deixando o que é mais prioritário no topo. Apesar de existir um campo Priority, ele é facilmente negligenciado por não ser muito visual.
  • Use o padrão de User Stories em seus PBIs para focar na entrega de valor para o usuário final e facilitar o entendimento dos requisitos por parte do Time de Desenvolvimento.
  • Estime em Story Points as suas histórias e não em horas. Isso tem uma série de benefícios mas principalmente descola alguns conceitos de chão de fábrica como produtividade em horas.
  • use Tags (tem um campo pra isso) nos seus PBIs para facilitar consultas, relatórios e dashboards mais tarde (aba Queries e Dashboards). Use a imaginação, tags podem ser qualquer coisa.
  • não se preocupe em usar tudo que a ferramenta oferece, aprenda o básico que faz sentido pra você e depois vá usando o restante conforme for necessitando. Uso o TFS desde 2008 e até hoje tem coisas lá que nunca precisei.

Espero que tenham gostado do post e até a próxima!

Neste artigo ensino como manter um bom nível de qualidade e detalhamento do backlog.

* OBS: curtiu o post? Então dá uma olhada no meu livro de Scrum e Métodos Ágeis e/ou no meu curso sobre o mesmo assunto!

Curso de Scrum e Métodos Ágeis
Curso de Scrum e Métodos Ágeis

Gerenciando Product Backlog usando o Jira Software

Quando começamos a estudar o Scrum Guide logo nos deparamos com o artefato Product Backlog. O framework prescreve que o Product Owner deve manter este artefato com todos os itens necessários ao produto/projeto a ser desenvolvido, de maneira priorizada, atualizada e visível.

No entanto, algo que o framework não prescreve é como fazer isso e a ideia do post de hoje é justamente essa, mostrar uma ideia de como organizar o seu Product Backlog usando a ferramenta Jira Software, em sua versão SaaS. Não vou falar aqui de priorização de backlog, coisa que já falei em outros posts, mas de como usar esta ferramenta web para fazê-lo e explicando alguns conceitos importantes que podem ser aplicados independente da ferramenta que você venha a utilizar.

Jira Software

O Jira é a ferramenta líder de vendas para gestão de projetos de software no mundo todo, sendo um concorrente direto do Azure DevOps da Microsoft (o antigo TFS). A sua fabricante, Atlassian, possui uma suíte de soluções que vão desde o Trello, para gestão básica de quadros de trabalho, até ferramentas de chat e colaboração entre times, versionamento de código e construção de pipelines automatizados de deploy.

Mesmo que você não venha a usar a suíte completa (até porque sairia bem caro), usar o Jira pode ser uma excelente opção para tocar os seus projetos de maneira mais organizada. A ferramenta SaaS tem muitas funcionalidades interessantes e um grande fit com as metodologias ágeis como Scrum e Kanban, fornecendo todos os artefatos prontos ou configuráveis para os usuários.

Ao contrário do TFS (que te dá 5 usuários free), o Jira não possui versão free (a menos que conte o Trello como sendo um mini-Jira, hehe) e oferece apenas um trial de uma semana na época em que escrevo este artigo. O trial é suficiente para que consiga aprender a usar a ferramenta e seguir este tutorial. Então, crie uma conta no site da Atlassian antes de prosseguir.

Vale salientar que este tutorial cobre apenas a versão SaaS (cloud, online) do Jira, sendo que ele possui uma versão on-premise cuja interface é diferente, embora o funcionamento seja o mesmo.

Criando um novo projeto

Na tela inicial da ferramenta você tem um botão Create Project no canto direito. Use ele e defina um nome para o projeto. Se você tem apenas um time que toca diversos projetos, pode ser interessante colocar o nome do time aqui, ao invés do nome do projeto atual deles, para fins de histórico. Ao longo deste tutorial usarei o template Scrum, que foi selecionado como na imagem abaixo (esquerda).

Novo Projeto
Novo Projeto

Outras opções na criação do projeto incluem o método Kanban e isso influencia bastante a organização dos itens, os quadros e diversos outros fatores, embora seja possível mudar de um para outro.

Organizando o Product Backlog

Uma vez com o projeto criado, você vai ser direcionado para a tela de Backlog do seu projeto, sendo que aqui ele representa o Product Backlog, cuja gestão é de responsabilidade do Product Owner.

Product Backlog
Product Backlog

No Jira existem três níveis de backlog que auxiliam o Product Owner (principalmente) a se organizar, ambos acessíveis na parte esquerda, entre o meno lateral e o backlog, à saber:

  • Epics: épicos são features muito grandes e pouco detalhadas (alto nível de incerteza técnica), geralmente levando várias sprints para serem concluídas (pense na grandeza de semanas a meses de trabalho). Épicos são constituídos de múltiplas User Stories.
  • User Stories: o Jira assume o padrão de Histórias do Usuário para os famosos itens de backlog do produto que são citados no Scrum Guide como sendo a unidade de trabalho do Product Backlog. Uma User Story gera valor ao usuário por si só e entregar uma ou mais delas prontas (DONE). User Stories geralmente levam dias para serem entregues, possuem linguajar de negócio e grau de incerteza técnica médio, podendo ser quebradas em pedaços menores, chamados de Sub-Tasks, para se ter maior assertividade do trabalho a ser realizado.
  • Sub-Task: uma sub-task é uma tarefa que deve levar horas para ser feita, é extremamente técnica, com baixo grau de incerteza técnica e não entrega muito valor por si só, fazendo parte de um grupo que juntas, entregam o valor proposto pela User Story.

O formato recomendado de escrita é partir do Issue Type menos granular (Epic) até o mais granular (Sub-Task), usando o menu Epics que fica à esquerda do backlog, mas antes do menu lateral. Sendo assim, acesse o nível Epic do seu Backlog.

Clique em Epics
Clique em Epics

Nesta tela da imagem acima, note que tem um link “Create Epic” ao lado da seção EPICS, clique nele para começar a criar os seus épicos com apenas o título e um resumo. Mais tarde você pode adicionar mais detalhes a cada um deles (mas não muito, eles são apenas visões) clicando no título dos mesmos

Criando um épico
Criando um épico

Após adicionar os seus épicos, você vai ver eles na coluna esquerda do painel. Note na imagem abaixo como o épico “Cartão no App” aparece depois do meu cadastro e com ele a opção “Create issue in epic”, que é justamente para criar elementos dentro dele. Caso já existam issues, elas aparecerão no painel da direita.

Épico criado
Épico criado

Clique no “Create issue in epic” para adicionar uma User Story (o Issue Type padrão), com um título, descrição (a história em si) e o que mais você precisar.

Criando uma US
Criando uma US

Para este exercício, pegue um projeto real do seu time ou então um problema fictício como um cadastro de cliente. O épico seria fazer a versão completa do cadastro, sendo que as User Stories poderiam ser “Adicionar novo cliente”, “Excluir cliente”, etc.

Se você atendeu à sugestão do Jira de usar User Stories, pense em todos as histórias de usuário que puder lembrar para cada um dos épicos. Alguns épicos simples talvez tenham apenas uma ou duas histórias, enquanto outros mais complicados podem ter várias. Não esqueça de, além de escrever o título e descrição da história (usando o formato padrão da User Story), escreva também os critérios de aceite.

É importante ter em mente que o Product Owner tem total liberdade neste momento. Crie, edite e exclua seus Epics e User Stories livremente. É comum escrevermos algumas histórias que mais tarde descobrimos serem épicos. É comum épicos serem quebrados em mais épicos para que o sistema não vire um mero waterfall-iterativo. Embora o time tenha acesso ao Product Backlog como um todo, não é a partir dele que eles se orientarão no dia-a-dia, como falarei mais adiante.

Organizando as sprints

A visão de backlog que usamos até o momento são de foco do Product Owner. O Time de Desenvolvimento trabalha usando a visão da sprint atual (current sprint) dentro do Jira. Assim que tiver algumas User Stories criadas, como abaixo, vai aparecer um botão de “Create Sprint” no canto superior direito.

US criadas
US criadas

Ao iniciar uma planning (ou agora, para fins de exercício), clique no botão “Create Sprint” e você será direcionado para o planejador de sprints. Na parte inferior da tela ele lista as User Stories existentes e, na parte superior, o escopo da sprint atual, que vai se tornar o Sprint Backlog. Explico: durante a Sprint Planning o Product Owner explica quais são as prioridades do Product Backlog.

Criando a Sprint
Criando a Sprint

Sobre cada história priorizada, o time clica nela e deve discutir quais as tarefas serão necessárias para que seja possível estimar o esforço (campo Estimate) de entrega daquela história.

Estimando US
Estimando US

Uma técnica muito comum utilizada para estas estimativas é a de Planning Poker, já citada aqui no blog. Caso o Time de Desenvolvimento julgue útil, eles podem “quebrar” as User Stories em Sub-Tasks dentro da própria visão da User Story que contém um link “Create Sub-Task”, abrindo a tela abaixo.

Create Sub-Task
Create Sub-Task

Aqui você define um nome para a sub-task e sua descrição, sendo que você pode adicionar estimativas para as sub-tasks depois, se quiser. As estimativas, em especial a da histórias, compõem o esforço da sprint e são usadas mais tarde para geração de gráficos e extração de métricas ágeis importantes para o time. Se você optar por quebrar e/ou estimar as tarefas é uma decisão do time, mas essa atividade é auxiliar para descobrir o esforço da história. Entende-se que somente a entrega completa da história agrega valor ao cliente e consequentemente nos permite dar uma sprint como bem sucedida.

Após descobrir o esforço de cada uma das User Stories prioritárias do P.O. (a unidade de medida padrão é Story Points, mas também pode ser configurado), o time decide qual o volume de histórias que cabem na sprint arrastando as mesmas para a parte superior do planejador de sprint, sendo que no rodapé da mesma aparece o esforço total.

Arrastando histórias
Arrastando histórias

Se esse time já rodou sprints anteriores usando a mecânica de pontos eles já devem ter algum histórico de velocidade. Caso contrário terão de chutar mesmo, posteriormente analisando na Sprint Retrospective o quão próximo estavam da realidade.

Uma vez definido o escopo da próxima sprint, você clica no botão azul “Start Sprint” que aparece na imagem anterior, lhe permitindo configurar os últimos detalhes desta sprint, como o Sprint Goal e as datas de início e fim.

Iniciando a sprint
Iniciando a sprint

O Time de Desenvolvimento irá trabalhar somente olhando o backlog da sprint que pode ser acessado usando o menu Active Sprint na esquerda, e via de regra, o escopo não deve ser mudado durante o desenvolvimento da mesma. Nessa tela de Active Sprint o time tem um Kanban virtual que apesar de não ser tão bom de usar quanto o Trello, é bem útil e completamente personalizável, o que pode ser assunto para outro post.

Active Sprint
Active Sprint

Boas Práticas

Algumas boas práticas para quem está começando a usar o Jira Software agora e até mesmo está começando com Scrum:

  • Como Product Owner, refine o seu backlog quase que diariamente, detalhando as histórias mais importantes, consultando o time sobre o impacto de cada uma delas, consultando os stakeholders, analisando o mercado, etc. O seu backlog sempre deve estar atualizado, priorizado e visível antes de uma Sprint Planning for começar.
  • Cada história pode estar associada a um membro do time (campo Assigned To). Converse com seu time para que ninguém associe mais de uma história a si mesmo para evitar problemas.
  • Como Product Owner, use e encoraje os três níveis de backlog, isso ajuda a deixar tudo mais organizado e ao time entender para onde o projeto está caminhando.
  • Priorize visualmente o seu backlog, deixando o que é mais prioritário no topo. Apesar de existir campos que auxiliam nisso, as demais configurações são facilmente negligenciadas por não serem muito visuais.
  • Use o padrão de User Stories em suas Issues para focar na entrega de valor para o usuário final e facilitar o entendimento dos requisitos por parte do Time de Desenvolvimento.
  • Estime em Story Points as suas histórias e não em horas. Isso tem uma série de benefícios mas principalmente descola alguns conceitos de chão de fábrica como produtividade em horas.
  • use Tags (tem um campo pra isso) nas suas User Stories para facilitar consultas, relatórios e dashboards mais tarde (aba Reports). Use a imaginação, tags podem ser qualquer coisa.
  • não se preocupe em usar tudo que a ferramenta oferece, aprenda o básico que faz sentido pra você e depois vá usando o restante conforme for necessitando.

Espero que tenham gostado do post e até a próxima!

Neste artigo ensino como manter um bom nível de qualidade e detalhamento do backlog.

* OBS: curtiu o post? Então dá uma olhada no meu livro de Scrum e Métodos Ágeis e/ou no meu curso sobre o mesmo assunto!

Curso de Scrum e Métodos Ágeis
Curso de Scrum e Métodos Ágeis

O porco e a galinha: responsabilidades em times ágeis

Quando comecei a estudar Scrum em 2010 havia pouco tempo que a primeira versão do Scrum Guide havia sido lançado e o professor que me treinou era o segundo da América Latina autorizado pela Scrum.org. Ainda guardo o material do treinamento e nele tem a fábula do Porco e da Galinha, que mais tarde em 2011 seria removida dos materiais oficiais do Scrum (ao que parece isso estava criando algumas disfunções).

Se você não conhece a fábula, dê uma olhada na tirinha abaixo.

O Porco e a Galinha
O Porco e a Galinha

Nela, a galinha convida o porco para abrir um restaurante, que se chamaria “Pernil com Ovos” (eu prefiro usar bacon no lugar). O porco recusa pois neste caso ele estaria comprometido com o projeto enquanto a galinha estaria apenas envolvida (afinal o porco se sacrifica, enquanto a galinha põe o ovo e sai fora).

Esta fábula era muito usada para designar não apenas comprometimento literal, mas responsabilidade sobre determinado assunto ou aspecto do processo de desenvolvimento de software com Scrum. Claro que todos os envolvidos no projeto são responsáveis em maior ou menor grau pelo sucesso do mesmo e justamente por isso em Inglês não se usava nessas situações a palavra responsible mas sim accountable. Você sabe a diferença?

Basicamente a responsibility (responsabilidade) pode ser compartilhada, enquanto que a accountability (responsabilidade também, mas em um sentido de prestar contas) não.  Logo, se você é accountable em algum aspecto do projeto, você está commited (comprometido) com o mesmo em altíssimo grau e seu bacon está em jogo!

No Scrum, em diversos momentos ou sob diversos aspectos temos diferentes porcos e galinhas. Como vejo que muitas vezes os times se atrapalham com isso e são questões que caem em prova de certificação, resolvi montar uma espécie de matriz RACI com diversos elementos presentes no Scrum Guide.

Como eu considero o conceito de porcos e galinhas muito mais lúdico e divertido do que o conceito oficial pra matriz de responsabilidades, vou usar apenas as letras P e G ao invés das quatro originais (R, A, C e I).

Note que a matriz foi construída usando única e exclusivamente o conteúdo presente no Scrum Guide. Interpretações à parte, cada time acaba encontrando a sua maneira de trabalhar, mas como queria uma representação fiel ao Scrum Guide, construí ela dessa maneira. Caso busque uma abordagem mais emergente e colaborativa com seu time, você pode usar a dinâmica do “É/Não É/Faz/Não Faz” do Rafael Sabbagh, que explico no artigo sobre Lean Inception ou a variante do Andy Barbosa: “É/Não É/Faz/Não Faz/Pode/Não Pode”.

Como o primeiro pilar do Scrum é a transparência, nada mais justo de que o papel, os direitos e os deveres de cada membro do time esteja explícitos e que, cada um fazendo a sua parte como esperado, todos chegaremos no sucesso desejado.

Logo mais abaixo, as matrizes e suas interpretações.

Cerimônias

A matriz PG (Porcos e Galinhas) das cerimônias do Scrum fica assim.

PG Cerimônias
PG Cerimônias

Eu dividi a planning em duas partes, assim como citado no guide, uma vez que na primeira parte o PO é o elemento central, trazendo os inputs que são os itens do Product Backlog priorizados. Na segunda parte, o porco vira o Dev Team, que tem de definir o que cabe na sprint e como pretende desenvolver cada um dos itens. É citado no guide que stakeholders ou consultores podem aparecer, caso necessário, para serem ouvidos (ou seja, galinhas).

A Daily Scrum, ao contrário da crença popular é uma cerimônia para o time de desenvolvimento se sincronizar, comparando sempre com o Sprint Goal. Outros participantes, se aparecerem, não devem bagunçar a cerimônia e esse é um conceito que muitas vezes cai na prova de certificação. O SM deve garantir que ela aconteça e que não exceda os 15 minutos, uma vez que isso esteja ok, ele é dispensável.

A Review é o Dev Team apresentando o Incremento para o Product Owner e stakeholders (idealmente). Eu adoraria colocar os stakeholders como porcos aqui, para lhes dar mais responsabilidades, mas entende-se no Scrum que somente membros do time Scrum são porcos.

E por fim, a Retrospectiva é de responsabilidade do time Scrum como um todo. Se eu tivesse que elencar um responsável eu colocaria na conta do Scrum Master, mas o guide sugere diferente, dizendo que ele deve ser tratado como um “peer member” nesta cerimônia.

Note que, ao contrário do que muitos acham, o Scrum Master não é o porco das cerimônias, ele é apenas o facilitador, devendo garantir que as mesmas aconteçam e sejam produtivas, para o bem do próprio time e não para benefício próprio.

Artefatos

A matriz PG dos artefatos do Scrum fica assim.

PG Artefatos
PG Artefatos

Aqui temos um assunto bem menos polêmico e menos complicado também. O PO é dono do Product Backlog e somente ele mete a mão lá (inclusive os stakeholders ficam de fora dessa gestão, embora opinem). Já quando pegamos uma fatia do PB, o Dev Team constrói e mantém o Sprint Backlog durante toda a vida da sprint, gerando na sequência o Incremento, DONE conforme a Definition of Done, também de sua autoria.

O Scrum Master “apenas” garante que tudo isso seja seguido e ensina boas práticas e técnicas, especialmente para o P.O. conseguir lidar com o backlog de forma eficiente.

Outros Aspectos

Como as duas matrizes anteriores não lidam com todos os pormenores do Scrum no que tange responsabilidades, fiz mais uma envolvendo outros aspectos do framework que devem ajudar no dia a dia de quem é novato no assunto.

PG Sprint
PG Sprint

Aqui temos o reforço de alguns conceitos como o P.O. sendo o porco das prioridades e do ROI do produto que está sendo desenvolvido, mas traz aspectos menos conhecidos como o fato dele ser a única pessoa que pode cancelar uma sprint, no caso do Sprint Goal se tornar obsoleto. Goal esse definido pelo Time Scrum durante a Sprint Planning.

Para o Scrum Master vêm as responsabilidades clássicas como facilitar cerimônias, ensinar e melhorar continuamente o processo e remover impedimentos que possam estar atrapalhando a performance do time. Este último, um tanto polêmico em alguns times, envolve a fina arte de equilibrar o aspecto “facilitador” do aspecto “babá” que alguns times acabam se acostumando. E sim, o Scrum Master é o “servant leader” do time Scrum e ele é o único papel mencionado como líder (não confundir com gestor).

E por fim, o Dev Team se auto organiza (dividindo e distribuindo suas atividades) bem como decide como transformará os itens do backlog em um incremento de software através de técnicas de UX e Engenharia de Software disponíveis no mercado e que um bom time multifuncional deve ter entre seus membros.

Espero ter ajudado!

* OBS: curtiu o post? Então dá uma olhada no meu livro de Scrum e Métodos Ágeis e/ou no meu curso sobre o mesmo assunto!

Curso de Scrum e Métodos Ágeis
Curso de Scrum e Métodos Ágeis