{"id":7806,"date":"2018-09-27T10:34:57","date_gmt":"2018-09-27T13:34:57","guid":{"rendered":"http:\/\/blog.plataformatec.com.br\/?p=7806"},"modified":"2018-09-27T14:35:07","modified_gmt":"2018-09-27T17:35:07","slug":"melhorando-o-refinamento-e-a-autonomia-de-times-com-a-implementacao-do-7d","status":"publish","type":"post","link":"https:\/\/blog.plataformatec.com.br\/2018\/09\/melhorando-o-refinamento-e-a-autonomia-de-times-com-a-implementacao-do-7d\/","title":{"rendered":"Melhorando o refinamento e a autonomia de times com a implementa\u00e7\u00e3o do 7D"},"content":{"rendered":"
“\u00c9 melhor ir devagar na dire\u00e7\u00e3o certa do que r\u00e1pido na dire\u00e7\u00e3o errada “. Sabemos que a escrita e o refinamento de User Stories s\u00e3o as principais atividades de um time para se evitar retrabalho e garantir que todos tenham o entendimento detalhado dos itens a serem desenvolvidos. Com o intuito de melhorar o entendimento sobre as hist\u00f3rias de usu\u00e1rio, a autonomia do time e o processo de refinamento, utilizamos em um dos projetos da Plataformatec a ferramenta <\/span>7 Product Dimensions<\/span><\/a> ou 7D. Neste blogpost vou comentar sobre como foi a sua utiliza\u00e7\u00e3o no dia a dia do projeto e os benef\u00edcios da utiliza\u00e7\u00e3o.<\/span><\/p>\n O Cen\u00e1rio<\/b><\/p>\n Para contextualizar um pouco o cen\u00e1rio deste projeto, o <\/span>squad<\/span><\/i> em que atuei come\u00e7ou a crescer e, tendo maior <\/span>capacity, <\/span><\/i>o n\u00famero de demandas tamb\u00e9m cresceu. T\u00ednhamos os desafios de lidar com o aumento nas informa\u00e7\u00f5es relativas \u00e0s demandas dentro do <\/span>squad<\/span><\/i> com um grande n\u00famero de membros e aumentar a qualidade das solu\u00e7\u00f5es propostas para o sistema. Com estes desafios \u00e0 frente, uma das decis\u00f5es foi usar o 7D para melhorar o entendimento do time no processo de refinamento e aumentar o engajamento nas discuss\u00f5es sobre a solu\u00e7\u00e3o proposta.<\/span><\/p>\n Entendendo melhor o problema<\/b><\/p>\n O primeiro desafio que encontramos foi fazer com que o Product Owner se preocupasse mais em entender o problema que precisava ser resolvido por cada demanda de trabalho. Para atingir este primeiro objetivo, uma estrutura para entender melhor o problema foi montada para que o PO pudesse seguir e garantir que tinha coletado informa\u00e7\u00f5es suficientes sobre o que precisava ser desenvolvido e se preocupasse menos na solu\u00e7\u00e3o do que seria desenvolvido. A partir de um <\/span>Value Proposition Canvas<\/span><\/a> (em breve teremos um blogpost sobre este m\u00e9todo), o PO levava para o time algumas perguntas respondidas, como:<\/span><\/p>\n Abrindo a discuss\u00e3o sobre o solu\u00e7\u00e3o com o time<\/b><\/p>\n Ap\u00f3s este mapeamento do problema, o Product Owner trazia as respostas \u00e0s perguntas anteriores para a reuni\u00e3o de refining e o time entendia melhor sobre a dor que quer\u00edamos resolver, a persona que ir\u00edamos impactar e o porqu\u00ea daquela persona estar sentindo aquela dor. O time estressava mais o cen\u00e1rio do problema apresentado para identificar mais personas que sentiam a mesma dor e que solu\u00e7\u00e3o poderia ser proposta para cada usu\u00e1rio. <\/span><\/p>\n Para efeito de exemplifica\u00e7\u00e3o, vou usar uma hist\u00f3ria de usu\u00e1rio fict\u00edcia onde o problema seria \u00a0visualizar uma lista de carros em uma plataforma web.<\/span><\/p>\n A partir da hist\u00f3ria exposta, criamos um desenho em um quadro para podermos mapear o problema e a persona relacionada:<\/span><\/p>\n <\/p>\n <\/p>\n Em seguida, o time identifica as solu\u00e7\u00f5es aplic\u00e1veis para resolver este problema e se h\u00e1 alguma outra persona relacionada a este caso que ainda n\u00e3o foi mapeada. No problema relacionado acima, podemos citar como uma solu\u00e7\u00e3o a funcionalidade de “Listagem de carros” para o “Usu\u00e1rio da Plataforma”, por\u00e9m, ap\u00f3s algumas discuss\u00f5es, o time identifica que para os dados dos carros estarem dispon\u00edveis na plataforma \u00e9 preciso que algu\u00e9m cadastre esses dados. No caso do exemplo, precisar\u00edamos de uma pessoa que tenha acesso \u00e0 lista de carros que a empresa tem em estoque. Vamos chamar esta pessoa de “Gerente de Estoque”. Esta persona precisa de uma funcionalidade de “Cadastrar Carros”, que ainda n\u00e3o existe no sistema, para poder cadastrar os carros.<\/span><\/p>\n <\/p>\n Esta \u00e9 uma boa din\u00e2mica para o time como um todo, onde o PO consegue ter uma vis\u00e3o melhor sobre o que o time est\u00e1 desenvolvendo e o time entende melhor o neg\u00f3cio da empresa.<\/span><\/p>\n Neste momento, sabemos que temos duas funcionalidades que precisam ser implementadas para resolver o problema do usu\u00e1rio. O time pode priorizar estas funcionalidades, eles podem cortar escopo das funcionalidade para resolver um problema mais urgente e depois evoluir a feature, encontrar outra solu\u00e7\u00e3o para o mesmo problema, criar um MVP ou uma POC, entre outros. <\/span>O importante \u00e9 que eles se alinhem sobre o que v\u00e3o desenvolver.<\/b><\/p>\n Aqui \u00e9 bom deixar o time discutir e ter algu\u00e9m para facilitar. O facilitador desta reuni\u00e3o tem sido algu\u00e9m do time de desenvolvimento escolhido no in\u00edcio da reuni\u00e3o e em cada reuni\u00e3o \u00e9 algu\u00e9m diferente, justamente para aumentar aumentar a autonomia do time e tirar a depend\u00eancia de ter uma pessoa espec\u00edfica para conduzir as cerim\u00f4nias. <\/span><\/p>\n Utilizando o 7D<\/b><\/p>\n A partir deste momento o time come\u00e7a a usar a ferramenta 7D para fazer o refinamento. O 7D \u00e9 uma ferramenta que consiste em um quadro com 7 colunas que visa cobrir as 7 dimens\u00f5es de um produto. Esta ferramenta foi fundamental para ajudar o time a pensar com o que eles t\u00eam que se preocupar antes de come\u00e7ar a desenvolver uma funcionalidade, e tem sido uma boa ferramenta para disseminar conhecimento e ajudar no <\/span>ramp-up<\/span><\/i> dos membros do time, tanto do ponto de vista de \u00a0neg\u00f3cio quanto t\u00e9cnico.<\/span><\/p>\n Basicamente, este m\u00e9todo consiste em passar por cada dimens\u00e3o, discutindo o que \u00e9 preciso para desenvolver a feature em quest\u00e3o e fazendo rela\u00e7\u00f5es entre as dimens\u00f5es. <\/span><\/p>\n O quadro do 7D que estamos usando \u00e9 este mostrado abaixo:<\/span><\/p>\n <\/p>\n Continuando com o exemplo citado acima, vamos considerar que a funcionalidade “Cadastrar carros” n\u00e3o vai ser implementada e que os dados v\u00e3o ser inseridos diretamente no banco de dados para que o time possa focar em resolver o problema do usu\u00e1rio “Usu\u00e1rio da Plataforma” com a funcionalidade de “Listagem dos Carros”. A partir desta premissa, vamos come\u00e7ar a montar o quadro.<\/span><\/p>\n 1 – Colocamos no quadro a funcionalidade que vamos implementar e o usu\u00e1rio para o qual essa funcionalidade vai resolver o problema.<\/b><\/p>\n Este mapeamento de para qual usu\u00e1rio a feature vai ser desenvolvida \u00e9 bem interessante de se usar quando h\u00e1 v\u00e1rios usu\u00e1rio diferentes utilizando a mesma funcionalidade, pois o time consegue desenvolver mais detalhadamente o refinamento das hist\u00f3rias para cada usu\u00e1rio e entender melhor as especificidades de cada usu\u00e1rio.<\/span><\/p>\n 2 – Colocamos quais a\u00e7\u00f5es precisam serem feitas para entregar a funcionalidade para o usu\u00e1rio.<\/b><\/p>\n Ap\u00f3s colocar no quadro a funcionalidade que vamos refinar e o usu\u00e1rio para o qual queremos resolver o problema, come\u00e7amos perguntando quais a\u00e7\u00f5es precisam ser desenvolvidas para que o usu\u00e1rio consiga utilizar a funcionalidade que estamos discutindo. \u00a0Vamos utilizar “1 – Buscar todos os carros do banco de dados” e “2 – Mostrar lista dos carros na tela” para nosso exemplo.<\/span><\/p>\n 3 – Ap\u00f3s listar as a\u00e7\u00f5es, listamos quais dados s\u00e3o necess\u00e1rios para que cada uma delas possa ser desenvolvida.<\/b> Esta etapa \u00e9 interessante para instigar o time a pensar se h\u00e1 alguma depend\u00eancia, se precisa acionar alguma pessoa para coletar tal informa\u00e7\u00e3o (o PO, algum dev de outro sistema que a funcionalidade precisa, o usu\u00e1rio final, etc.) e at\u00e9 mesmo tomar uma decis\u00e3o do tipo “a pessoa X precisa participar do refining da hist\u00f3ria Y”.<\/span><\/p>\n Para o problema exemplo, podemos colocar “1 – Carros que estejam com o STATUS ‘Para Venda”’ para a a\u00e7\u00e3o 1 e “2 – Lista de Carros” para a a\u00e7\u00e3o 2. <\/span><\/p>\n Depois de levantar os dados que v\u00e3o ser usados, <\/span>4 – levantamos quais seriam as regras de neg\u00f3cio para os dados levantados para cada a\u00e7\u00e3o.<\/b> Nas regras de neg\u00f3cio n\u00f3s j\u00e1 come\u00e7amos a definir nossos crit\u00e9rios de aceite para as hist\u00f3rias.<\/span><\/p>\n Ap\u00f3s mapear as regras de neg\u00f3cio,<\/span> 5 – levantamos se h\u00e1 algum requisito n\u00e3o funcional ligado a \u00a0funcionalidade.<\/b> Para o exemplo proposto, vamos considerar que a p\u00e1gina precisa carregar a listagem em at\u00e9 2 segundos.<\/span><\/p>\n 6 – No pr\u00f3ximo passo, definimos em qual interface o usu\u00e1rio vai poder utilizar a funcionalidade. <\/b>Este \u00e9 um bom ponto tamb\u00e9m para exercitar o entendimento dos membros sobre como o software est\u00e1 sendo desenvolvido, qual sua arquitetura, com quais sistemas ele faz integra\u00e7\u00e3o, etc. Para este caso, vamos considerar apenas a p\u00e1gina “Comprar Carros” do site.<\/span><\/p>\n 7 – A \u00faltima coluna \u00e9 sobre os ambientes nos quais vamos fornecer a funcionalidade.<\/b> Esta etapa \u00e9 bem \u00fatil para produtos que s\u00e3o fornecidos em v\u00e1rias plataformas. <\/span><\/p>\n <\/p>\n Ap\u00f3s terminar de preencher o quadro, criamos as hist\u00f3rias baseadas em cada a\u00e7\u00e3o ou agrupamos algumas a\u00e7\u00f5es em uma \u00fanica hist\u00f3ria, caso delas n\u00e3o consigam atingir os requisitos de <\/span>INVEST<\/span><\/a>. <\/span><\/p>\n Estas hist\u00f3rias v\u00e3o passar por uma etapa de <\/span>task breakdown, <\/span><\/i>onde o time de desenvolvimento quebra a hist\u00f3ria em tarefas t\u00e9cnicas, antes de come\u00e7arem a ser desenvolvidas.<\/span><\/p>\n Outro ponto \u00e9 que, ap\u00f3s ter completado o quadro, teremos informa\u00e7\u00f5es importante, como o contexto da hist\u00f3ria, que est\u00e1 nas colunas <\/span>Usu\u00e1rio, Interfaces, A\u00e7\u00f5es, Dados <\/b>e<\/span> Ambientes<\/b>, e os crit\u00e9rios de aceite, que est\u00e3o nas colunas <\/span>Regras de Neg\u00f3cios <\/b>e<\/span> Qualidade<\/b>.<\/span><\/p>\n Resultados e Conclus\u00f5es<\/b><\/p>\n Com o uso da ferramenta apresentada, conseguimos melhorar alguns pontos no dia a dia do time:<\/span><\/p>\n Aproveitando que estamos falando sobre o refinamento e melhorias dessa cerim\u00f4nia, deixo aqui a recomenda\u00e7\u00e3o de posts sobre refinamento, escrito aqui na Plataformatec: <\/span>A import\u00e2ncia do processo de refining em um projeto<\/span><\/a> e <\/span>O que aprendi sobre o Refining de User Stories em projetos<\/span><\/a>.<\/span><\/p>\n E voc\u00ea? J\u00e1 teve dificuldades no processo de refinamento? J\u00e1 usou alguma ferramenta interessante para essa cerim\u00f4nia? Deixe seus coment\u00e1rios abaixo sobre sua experi\u00eancia com refinamento!<\/span><\/p>\n <\/p>\n","protected":false},"excerpt":{"rendered":" “\u00c9 melhor ir devagar na dire\u00e7\u00e3o certa do que r\u00e1pido na dire\u00e7\u00e3o errada “. Sabemos que a escrita e o refinamento de User Stories s\u00e3o as principais atividades de um time para se evitar retrabalho e garantir que todos tenham o entendimento detalhado dos itens a serem desenvolvidos. Com o intuito de melhorar o entendimento … \u00bb<\/a><\/p>\n","protected":false},"author":73,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[3],"tags":[123,284],"aioseo_notices":[],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/posts\/7806"}],"collection":[{"href":"https:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/users\/73"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/comments?post=7806"}],"version-history":[{"count":4,"href":"https:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/posts\/7806\/revisions"}],"predecessor-version":[{"id":7814,"href":"https:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/posts\/7806\/revisions\/7814"}],"wp:attachment":[{"href":"https:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/media?parent=7806"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/categories?post=7806"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/tags?post=7806"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}\n
“<\/span>Como uma pessoa que quer comprar um carro,<\/span><\/h3>\n
Quero visualizar os carros da Loja X<\/span><\/h3>\n
Para que eu possa escolher um dos carros<\/span>“<\/span><\/h3>\n
\n