Gerenciando Product Backlog usando o Visual Studio Online (TFS) - LuizTools
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 Visual Studio Online, o 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.
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 não mudou na minha opinião 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 em visualstudio.com 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.
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.
Tela Inicial – New Project
Outras opções na criação do projeto 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;
Usaremos este último 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 – Scrum
Uma vez com o projeto criado, acesse o menu superior Work > Backlogs. É aqui que concentramos os nossos esforços neste artigo.
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.
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 preta), 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
Após salvar, a tela deve se atualizar e você vai ver na esquerda três níveis de Backlog: 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
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).
É 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.
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 à esquerda da tela.
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
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
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. Na aba Board 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.
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.
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.
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.