{"id":6005,"date":"2017-01-06T15:48:02","date_gmt":"2017-01-06T17:48:02","guid":{"rendered":"http:\/\/blog.plataformatec.com.br\/?p=6005"},"modified":"2017-01-06T16:36:53","modified_gmt":"2017-01-06T18:36:53","slug":"requisitos-em-equipes-ageis-falando-sobre-complexidade-e-incerteza","status":"publish","type":"post","link":"https:\/\/blog.plataformatec.com.br\/2017\/01\/requisitos-em-equipes-ageis-falando-sobre-complexidade-e-incerteza\/","title":{"rendered":"Requisitos em equipes \u00e1geis: Falando sobre complexidade e incerteza"},"content":{"rendered":"

Se a equipe na qual voc\u00ea trabalha lida com demandas (ex: hist\u00f3rias de usu\u00e1rio, bugs<\/em>, etc.) que demonstram uma alta variabilidade no lead time<\/em> ou, em outras palavras, o fluxo de desenvolvimento do time lida com demandas que s\u00e3o entregues r\u00e1pido demais e outras que levam muito tempo para serem finalizadas, provavelmente voc\u00ea est\u00e1 lidando com um ambiente onde a previsibilidade esteja em baixa (para mais dicas de como analisar o lead time<\/em>, leia “Looking at Lead Time in a different way”<\/a> e “Why we love metrics? Learning with Lead time”<\/a>).<\/p>\n

Neste blog post, compartilharei uma t\u00e9cnica que estamos utilizado para auxiliar nossos times e clientes a compreenderem a rela\u00e7\u00e3o entre complexidade e incerteza quando h\u00e1 a necessidade de se avaliar requisitos no contexto de desenvolvimento de software<\/em>. Geralmente esse momento acontece antes de uma cerim\u00f4nia de planejamento (Sprint Planning<\/em> no Scrum ou Replenishment<\/em> no m\u00e9todo Kanban) ou at\u00e9 mesmo em uma discuss\u00e3o de refinamento das demandas que entrar\u00e3o no fluxo de desenvolvimento.<\/p>\n

Ao longo da nossa experi\u00eancia com desenvolvimento de software<\/em>, temos percebido que as equipes n\u00e3o t\u00eam o h\u00e1bito de avaliar um item que ser\u00e1 constru\u00eddo antes da entrega do mesmo j\u00e1 estar comprometida com os stakeholders<\/em> de um projeto ou produto. O grande problema \u00e9 que tais demandas indefinidas far\u00e3o com que o processo se torne ineficiente. Os stakeholders<\/em> n\u00e3o compreender\u00e3o a real capacidade de entrega do time e este passar\u00e1 tempo demais tentando estimar o esfor\u00e7o de algo que, por natureza, \u00e9 imprevis\u00edvel (leia-se, software).<\/p>\n

A t\u00e9cnica que apresentarei a seguir \u00e9 um m\u00e9todo que temos aplicado para criar itens de trabalho que demandam um esfor\u00e7o de trabalho parecido. Tenho proposto esse tipo de abordagem como alternativa para cerim\u00f4nias como planning poker<\/em>, com o intuito de reduzir o tempo necess\u00e1rio em se estimar o desenvolvimento de funcionalidades de um software. Por fim, gostaria de agradecer ao Diego Poblete (@dipoblete<\/a>) por ter me apresentado a primeira vers\u00e3o da matriz.<\/p>\n

Matriz de complexidade e incerteza<\/h2>\n

A matriz de complexidade est\u00e1 estruturada em dois eixos que combinam as an\u00e1lises de complexidade e incerteza de cada demanda que ser\u00e1 trabalhada.<\/p>\n

\"Matriz<\/p>\n

O eixo X da matriz representa o quanto de incerteza t\u00e9cnica e de neg\u00f3cio a demanda que est\u00e1 sendo avaliada possui. J\u00e1 o eixo Y, analisa a complexidade e o esfor\u00e7o para se entregar a demanda.<\/p>\n

Na categoria “baixa” do eixo X, est\u00e3o as demandas bem definidas (os crit\u00e9rios de aceite est\u00e3o claros) e sem incertezas, t\u00e9cnicas ou de neg\u00f3cios. No eixo Y, est\u00e3o as demandas que exigem pouco esfor\u00e7o e t\u00eam baixa complexidade na sua implementa\u00e7\u00e3o (exemplo: a equipe est\u00e1 acostumada a trabalhar com demandas parecidas com a que est\u00e1 sendo analisada).<\/p>\n

J\u00e1 na categoria “m\u00e9dia” do eixo X, est\u00e3o elencadas as demanda com poucas incertezas sobre sua implementa\u00e7\u00e3o ou defini\u00e7\u00e3o de neg\u00f3cio, e estas incertezas a equipe sabe ou j\u00e1 resolveu antes (exemplo: demandas com v\u00e1rios casos de exce\u00e7\u00e3o). No eixo Y, tal categoria representa que as demandas exigir\u00e3o um esfor\u00e7o consider\u00e1vel para serem completadas, mas que a equipe possui o dom\u00ednio para desenvolv\u00ea-las (exemplo: funcionalidades que exijam integra\u00e7\u00e3o com sistemas sat\u00e9lites).<\/p>\n

Por fim, no eixo X da categoria “alta”, est\u00e3o as demandas que possuem incertezas relevantes sobre a implementa\u00e7\u00e3o ou sobre o neg\u00f3cio, o que traz inseguran\u00e7a para os membros da equipe por se tratar de algo onde h\u00e1 um baixo entendimento de contexto (exemplo: nova funcionalidade no produto ou altera\u00e7\u00f5es em um software legado). No eixo Y, a atribui\u00e7\u00e3o grande representa que as demandas est\u00e3o muito complexas ou que precisar\u00e3o de muito esfor\u00e7o para serem conclu\u00eddas (mais de duas semanas).<\/p>\n

As demandas classificadas nos quadrantes 5, 6, 7, 8 e 9, devem ser discutidas e dificilmente estar\u00e3o prontas para entrarem no fluxo de desenvolvimento da equipe. O motivo? Carregam um alto grau de incerteza que naturalmente acarretar\u00e1 retrabalho, atraso na entrega e outros efeitos n\u00e3o desejados quando estamos em busca de entregas constantes e previs\u00edveis.<\/p>\n

Sabendo que o objetivo de toda equipe \u00e9 buscar um ritmo de entrega sustent\u00e1vel, gostaria de compartilhar algumas dicas \u00fateis para que sua equipe n\u00e3o traga para o fluxo de desenvolvimento demandas com alto \u00edndice de incerteza e\/ou complexidade:<\/p>\n

    \n
  1. Fa\u00e7a um bom trabalho de refinamento e discuta o qu\u00e3o pronta a demanda est\u00e1 para entrar no fluxo de desenvolvimento.<\/p>\n<\/li>\n
  2. \n

    Caso a demanda carregue muita incerteza, crie estrat\u00e9gias de investiga\u00e7\u00e3o para que a equipe ganhe conhecimento t\u00e9cnico ou de neg\u00f3cio. Em determinados momentos, \u00e9 melhor fazer com que as pessoas tenham tempo para avaliarem e estudarem, ao inv\u00e9s de incluir no fluxo de trabalho uma demanda para ser desenvolvida a qualquer custo.<\/p>\n<\/li>\n

  3. \n

    Caso uma demanda tenha um excesso de incerteza de neg\u00f3cio, busque especialistas para sanarem as d\u00favidas. Mesmo que por vezes n\u00e3o conhe\u00e7am o linguajar t\u00e9cnico, tais pessoas s\u00e3o extremamente \u00fateis para descreverem o mundo no qual a solu\u00e7\u00e3o ser\u00e1 \u00fatil e tal interc\u00e2mbio \u00e9 saud\u00e1vel para que a equipe evolua.<\/p>\n<\/li>\n

  4. \n

    Exercite a quebra de grandes demandas em pequenas, mesmo que voc\u00ea tenha que lidar com questionamentos de que pequenas entregas n\u00e3o geram valor ao neg\u00f3cio. Quando quebramos a incerteza, estamos reduzindo risco, o que, para mim, representa valor, uma vez que eliminamos desperd\u00edcio, provamos conceitos abstratos mais r\u00e1pido e validamos hip\u00f3teses complexas fracionadamente.<\/p>\n<\/li>\n<\/ol>\n

    As demandas classificadas nos quadrantes 1, 2, 3 e 4 geralmente estar\u00e3o prontas para entrarem no fluxo de desenvolvimento, pois ter\u00e3o tamanhos saud\u00e1veis de esfor\u00e7o\/complexidade e estar\u00e3o com baixa ou nenhuma incerteza.<\/p>\n

    Considera\u00e7\u00f5es finais<\/h2>\n

    Estimar dentro do contexto de desenvolvimento de software<\/em> por vezes \u00e9 moroso (leva muito tempo) e requer muita energia.<\/p>\n

    Se voc\u00ea \u00e9 um Scrum Master, Agile Coach ou trabalha dentro de uma equipe de desenvolvimento de software<\/em>, em algum momento voc\u00ea ter\u00e1 que planejar o trabalho que passar\u00e1 pelo fluxo de desenvolvimento. Portanto, utilizar t\u00e9cnicas que lhe ajudem a realizar o planejamento o mais r\u00e1pido poss\u00edvel ser\u00e1 sempre bem vindo.<\/p>\n

    Ao utilizar a matriz, voc\u00ea far\u00e1 com que as pessoas analisem, em diferentes aspectos, o que precisar\u00e1 ser feito. Al\u00e9m disso, o uso da ferramenta vem otimizado o tempo que temos despendido em reuni\u00f5es, aumentando a qualidade das discuss\u00f5es entre as pessoas, dado que a comunica\u00e7\u00e3o tem flu\u00eddo melhor entre as pessoas de neg\u00f3cios e da \u00e1rea t\u00e9cnica.<\/p>\n

    Aplicar a t\u00e9cnica apresentada neste blog post ajudar\u00e1 voc\u00ea a diminuir o lead time<\/em> das demandas e, como disse anteriormente, ser\u00e1 uma \u00f3tima forma para substituir outras t\u00e9cnicas de estimativa.<\/p>\n

    E ent\u00e3o, o que achou da matriz? Gostou do formato? Deixe seu coment\u00e1rio abaixo! \ud83d\ude42<\/p>\n


    \n
    \n\"M\u00e9tricas<\/a>\n<\/div>\n","protected":false},"excerpt":{"rendered":"

    Se a equipe na qual voc\u00ea trabalha lida com demandas (ex: hist\u00f3rias de usu\u00e1rio, bugs, etc.) que demonstram uma alta variabilidade no lead time ou, em outras palavras, o fluxo de desenvolvimento do time lida com demandas que s\u00e3o entregues r\u00e1pido demais e outras que levam muito tempo para serem finalizadas, provavelmente voc\u00ea est\u00e1 lidando … \u00bb<\/a><\/p>\n","protected":false},"author":43,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[3],"tags":[123],"aioseo_notices":[],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/posts\/6005"}],"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\/43"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/comments?post=6005"}],"version-history":[{"count":5,"href":"https:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/posts\/6005\/revisions"}],"predecessor-version":[{"id":6012,"href":"https:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/posts\/6005\/revisions\/6012"}],"wp:attachment":[{"href":"https:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/media?parent=6005"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/categories?post=6005"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/tags?post=6005"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}