{"id":6364,"date":"2017-05-24T19:22:57","date_gmt":"2017-05-24T22:22:57","guid":{"rendered":"http:\/\/blog.plataformatec.com.br\/?p=6364"},"modified":"2017-05-26T13:25:27","modified_gmt":"2017-05-26T16:25:27","slug":"aprendi-sobre-refining-user-stories-em-projetos","status":"publish","type":"post","link":"http:\/\/blog.plataformatec.com.br\/2017\/05\/aprendi-sobre-refining-user-stories-em-projetos\/","title":{"rendered":"O que aprendi sobre o Refining de User Stories em projetos"},"content":{"rendered":"
“Eu sou respons\u00e1vel pelo que escrevo, n\u00e3o pelo que voc\u00ea entende.<\/em>” \u2014 N\u00e3o<\/strong>!!! A responsabilidade da clareza de comunica\u00e7\u00e3o \u00e9 de todos. E o refining \u00e9 sobre isso: alinhamento, comunica\u00e7\u00e3o clara e objetiva!<\/p>\n Constantemente ao conversar com alguns amigos que est\u00e3o adotando a agilidade, ou ao chegar em alguns clientes, percebo que h\u00e1 d\u00favidas quanto \u00e0 execu\u00e7\u00e3o do refinamento dos cards (refining<\/strong> ou grooming, este \u00faltimo tem entrado em desuso, dado que em alguns pa\u00edses de l\u00edngua inglesa a express\u00e3o tem sido relacionada a casos de ass\u00e9dio. Inclusive o Scrum Guide<\/a> abandonou o uso da palavra em 2013).<\/p>\n Tamb\u00e9m h\u00e1 d\u00favidas quanto a import\u00e2ncia deste processo: “Por qual raz\u00e3o devo usar no meu time?”<\/em> , “\u00c9 realmente \u00fatil?”<\/em>. Acredito que o processo de refining \u00e9 extremamente importante para o bom andamento de um projeto. Sua principal fun\u00e7\u00e3o \u00e9 deixar as user stories melhor descritas, com o menor n\u00famero de incertezas poss\u00edveis. Sua execu\u00e7\u00e3o visa criar um maior alinhamento das expectativas das partes interessadas, deixando claro para todos o que ser\u00e1 constru\u00eddo. Gera uma s\u00e9rie de benef\u00edcios, como:<\/p>\n O ponto \u00e9 que ainda \u00e9 nebuloso para muitas pessoas a escrita de cards e a respectiva execu\u00e7\u00e3o do levantamento.<\/p>\n Um entendimento que podemos ter acerca do assunto e que defendo \u00e9:<\/p>\n A ideia deste texto \u00e9 explicar, e defender, quais as vantagens de tratar o refining como um processo e n\u00e3o como uma reuni\u00e3o. Mas antes, o que \u00e9 um processo? Um dos poss\u00edveis significados para processo \u00e9<\/strong>: “…um m\u00e9todo, sistema, maneira de agir ou conjunto de medidas tomadas para atingir algum objetivo.”<\/em><\/a>. No caso, o objetivo de um processo de refining \u00e9 gerar user stories prontas para serem desenvolvidas<\/strong>.<\/p>\n Agora, vamos come\u00e7ar a parte legal<\/em>. Qual a raz\u00e3o de transformar o refining num processo, e n\u00e3o uma reuni\u00e3o?<\/p>\n Acredito que haja algumas raz\u00f5es que fa\u00e7am com que o processo se sobressaia \u00e0 reuni\u00e3o e crie um output com user stories melhores escritas ao final. Essas raz\u00f5es oneram menos o time de desenvolvimento, trazem um peso maior sobre a agenda do respons\u00e1vel pelo produto e do respons\u00e1vel pelo processo, entretanto flexibiliza para o restante do time. [Ok! Mas, como?]<\/p>\n Quando se define um processo de refining, deixando claro os passos para antes e depois da reuni\u00e3o, conseguimos atingir alguns pontos cruciais:<\/p>\n Voc\u00ea deve estar se perguntando, n\u00e3o?<\/p>\n Uma coisa imprescind\u00edvel \u00e9 definir um processo para o refining (para n\u00e3o sermos muito “disruptivos”), e reduzir a confus\u00e3o na cabe\u00e7a de algumas pessoas. Costumamos dizer aqui na Plataformatec que dividimos o refining em duas etapas, sendo que ambas fazem parte do processo de refining<\/strong>: pr\u00e9-refining e o refining em s\u00ed, isto \u00e9, o encontro para que o time feche o entendimento do que foi escrito na user story.<\/p>\n Chamamos de pr\u00e9-refining<\/strong> todo o preparo tido para que a user story chegue mais redonda para o time. Costumamos come\u00e7\u00e1-lo mais ass\u00edncrono, e realizando alguns passos.<\/p>\n Primeiro, como respons\u00e1vel pelo processo e auxiliando a pessoa de produto, costumo estudar o escopo de neg\u00f3cio para entender do que se trata a user story, de forma a ter o m\u00ednimo de conhecimento para escrever e questionar crit\u00e9rios de aceite, ou formas de implementa\u00e7\u00e3o (falando de neg\u00f3cio, n\u00e3o de c\u00f3digo). Os crit\u00e9rios de aceite s\u00e3o adicionados \u00e0 user story, de forma que fique claro para todos os envolvidos o que \u00e9 necess\u00e1rio para que o card seja tido como completo, ou seja, que a user story seja aceita como pronta.<\/p>\n Desta forma, \u00e9 poss\u00edvel que j\u00e1 sejam levantadas d\u00favidas do produto dentro da user story. E esse \u00e9 o segundo passo, conversar com a pessoa de neg\u00f3cio, passando o primeiro filtro no card, e anotando d\u00favidas que possam surgir relativo ao escopo do projeto ou da user story. Esses questionamentos ficam anotados no card, de forma que todo o time possa ver.<\/p>\n Em seguida, procuro algum dos desenvolvedores e converso sobre a user story, demonstrando o que j\u00e1 foi levantado, para que passemos por um segundo filtro da escrita. Nesta conversa com o desenvolvedor surgem as d\u00favidas mais t\u00e9cnicas, d\u00favidas de integra\u00e7\u00f5es, por exemplo.<\/p>\n A ideia neste passo, como dito anteriormente, \u00e9 deixar a user story minimamente escrita de forma a otimizar o tempo de todos. Como o especialista em neg\u00f3cio e um dos especialistas t\u00e9cnico do projeto j\u00e1 foram consultados, em teoria os cards j\u00e1 possuem informa\u00e7\u00f5es suficientes para que sejam levados para o refining. Caso ainda existam d\u00favidas que n\u00e3o foram sanadas, com grande risco de n\u00e3o serem respondidas durante o encontro, o ideal \u00e9 que essas respostas sejam obtidas antes do mesmo.<\/p>\n Opa! Calma l\u00e1 jovem Padawan, n\u00e3o \u00e9 bem assim! Voc\u00ea validou a hip\u00f3tese do card com apenas duas pessoas! O seu time provavelmente possui bem mais pessoas que isso! Agora sim, vamos ao encontro para refining!<\/p>\n Agora \u00e9 onde h\u00e1 o acordo do time, que aquilo que est\u00e1 escrito na user story faz sentido, e \u00e9 entreg\u00e1vel! \u00c9 o momento em que o respons\u00e1vel pelo neg\u00f3cio d\u00e1 sua palavra de que \u00e9 aquilo que ele espera como produto do card desenvolvido, e tamb\u00e9m \u00e9 o quando analistas de qualidade e desenvolvedores entram em acordo do que ser\u00e1 constru\u00eddo e testado.<\/p>\n Calma! Queria apenas deixar claro o que faremos a partir de agora! J\u00e1 que estamos entendidos, vejamos agora algumas dicas de como fazer isso!<\/p>\n Primeiro de tudo, h\u00e1 algo muito importante que eu defendo: traga as pessoas certas para as reuni\u00f5es certas<\/strong>. No caso, como estaremos falando do desenvolvimento, \u00e9 imprescind\u00edvel a participa\u00e7\u00e3o de desenvolvedores. Falaremos tamb\u00e9m de testes, ent\u00e3o um analista de qualidade \u00e9 muito importante! E tamb\u00e9m falaremos de incrementos ao neg\u00f3cio, logo, a participa\u00e7\u00e3o do respons\u00e1vel pelo produto \u00e9 essencial! Entretanto, n\u00e3o h\u00e1 a necessidade de participarem todos os desenvolvedores, por exemplo. A user story deve estar escrita de forma clara o suficiente para que algu\u00e9m que n\u00e3o participou do encontro seja capaz de ler e compreender o que deve ser feito. Na equipe que trabalho atualmente, utilizamos o valor m\u00e1ximo de 50% dos desenvolvedores na reuni\u00e3o. Veja bem: m\u00e1ximo<\/strong>, h\u00e1 momentos em que participam menos.<\/p>\n \u00c9 indispens\u00e1vel que este momento seja s\u00edncrono! De forma que estejam todos alinhados no mesmo momento, e saiam sem d\u00favidas quanto ao que foi discutido (as chances de restarem d\u00favidas s\u00e3o maiores em uma discuss\u00e3o ass\u00edncrona, por exemplo). Com um encontro s\u00edncrono, as pessoas costumam entender melhor o que est\u00e1 sendo discutido.<\/p>\n Outro dois pontos cruciais que devem andar juntos: objetivo e time box! Antes de entrar na discuss\u00e3o do refining deixe bem claro qual o objetivo da conversa, e qual o time box voc\u00eas ter\u00e3o para isso. Algo como: “Pessoal! Temos 3 user stories que precisam ser refinadas! Usaremos 20 minutos para cada uma!”<\/em>. Desta forma, o time sabe que precisar\u00e1 otimizar seu tempo para que a discuss\u00e3o gere frutos dentro deste tempo definido. Outra coisa bem legal de se fazer, \u00e9 deixar um computador com um timer regressivo contando este time box (basta dar um Google com o termo “timer”<\/a> e pronto! M\u00e1gica realizada!). Desta maneira, a medida que o time evolui, haver\u00e1 algu\u00e9m atento a isso e cobrando os demais.<\/p>\n Lembre-se, este \u00e9 o momento de entendimento do time. \u00c9 onde todos devem estar comprometidos quanto ao que ser\u00e1 entregue, e como ser\u00e1 entregue. As user stories devem sair bem descritas para que entrem dentro do ciclo de desenvolvimento. Aconselho fortemente que, caso ao final destes 20 minutos ainda restem muitas d\u00favidas, incertezas ou que o time n\u00e3o esteja seguro quanto a entrega, que o card n\u00e3o entre no ciclo de desenvolvimento, e passe por um novo processo de refining. N\u00e3o queremos cards com alto grau de incerteza dentro do processo, queremos?<\/p>\n E voc\u00ea, como lida com o refining dentro do seu time? Voc\u00ea acha que \u00e9 uma reuni\u00e3o? Um evento? Um processo? Conta pra gente a\u00ed nos coment\u00e1rios como voc\u00ea lida com isso dentro do seu time!<\/p>\n “Eu sou respons\u00e1vel pelo que escrevo, n\u00e3o pelo que voc\u00ea entende.” \u2014 N\u00e3o!!! A responsabilidade da clareza de comunica\u00e7\u00e3o \u00e9 de todos. E o refining \u00e9 sobre isso: alinhamento, comunica\u00e7\u00e3o clara e objetiva! Constantemente ao conversar com alguns amigos que est\u00e3o adotando a agilidade, ou ao chegar em alguns clientes, percebo que h\u00e1 d\u00favidas quanto … \u00bb<\/a><\/p>\n","protected":false},"author":52,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[3],"tags":[123,254,257,264,258],"aioseo_notices":[],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"http:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/posts\/6364"}],"collection":[{"href":"http:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/users\/52"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/comments?post=6364"}],"version-history":[{"count":16,"href":"http:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/posts\/6364\/revisions"}],"predecessor-version":[{"id":6382,"href":"http:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/posts\/6364\/revisions\/6382"}],"wp:attachment":[{"href":"http:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/media?parent=6364"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/categories?post=6364"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/tags?post=6364"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}\n
\n
\n
Que \u00f3timo, como eu realizo um refining?<\/h2>\n
Opa, maravilha. Pr\u00e9-refining e refining, mas o que seriam?<\/h3>\n
Levantei todas as d\u00favidas, deixei o card pronto! O desenvolvedor pode puxar a user story?<\/h3>\n
Quais os passos de um refining?<\/h3>\n
\n
\n<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"