{"id":283,"date":"2015-11-28T11:12:21","date_gmt":"2015-11-28T10:12:21","guid":{"rendered":"http:\/\/www.susannafer.com\/wordpress\/?p=283"},"modified":"2020-10-04T17:50:40","modified_gmt":"2020-10-04T15:50:40","slug":"come-gestire-user-stories-tecniche","status":"publish","type":"post","link":"https:\/\/www.susannafer.com\/wordpress\/come-gestire-user-stories-tecniche\/","title":{"rendered":"Come gestire user stories tecniche"},"content":{"rendered":"<h2>Tre approcci ai requisiti tecnici<\/h2>\n<p>Capita a tutti di dover inserire tra le attivit\u00e0 del team task di tipo prettamente tecnico.<br \/>\nIn questo articolo vi porto l\u2019esempio di <strong>3 modi differenti di gestire questo tipo di richieste<\/strong>.<br \/>\nInnanzi tutto ha senso parlare di user stories tecniche?<br \/>\nMhhh, dipende\u2026<br \/>\nSe siamo in grado di individuare nella richiesta un soggetto, un oggetto e un beneficio esplicito \u00e8 utile definirla attraverso il format della user story.<br \/>\nSe non \u00e8 cos\u00ec e ci si spacca la testa per far rientrare una richiesta in un modello che non le appartiene in alcun modo meglio evitare del tutto. Non l\u2019ha prescritto il medico che tutto ci\u00f2 che entra nel backlog sia esclusivamente una user story!<br \/>\nCi pu\u00f2\u00a0essere molto altro, ad esempio task di bug fixing, attivit\u00e0 architetturali, prototipi, spike e via cos\u00ec.<\/p>\n<p><strong>Ha senso tracciare queste attivit\u00e0 tecniche?<\/strong><br \/>\nAssolutamente s\u00ec! Il team spende del tempo su questi task cos\u00ec come sull\u2019implementazione di nuove funzionalit\u00e0 ed \u00e8 importante tenerne traccia per monitorarle e pianificare il modo migliore di gestirle nel tempo.<\/p>\n<h2>Come affrontare user stories tecniche<\/h2>\n<h3>Sprint funzionali e sprint tecnici<\/h3>\n<p>Quando nel corso del tempo non c\u2019\u00e8 stata un\u2019attenzione continuativa alla qualit\u00e0 e al refactoring possono presentarsi casi in cui il codice legacy ha raggiunto livelli decisamente problematici.<br \/>\nIn alcuni di questi casi mi \u00e8 capitato di vedere i team di sviluppo alternare sprint in cui venivano implementate nuove funzionalit\u00e0 e sprint tecnici dedicati soprattutto al refactoring e alla \u201cmessa in sicurezza\u201d.<br \/>\nAd esempio a 3 sprint funzionali seguiva uno sprint tecnico.<br \/>\nDico subito che non sono una fan di questa soluzione perch\u00e9 per la mia esperienza produce pi\u00f9 svantaggi che vantaggi.<\/p>\n<p><strong>Svantaggi<\/strong><br \/>\nE\u2019 di difficile \u201cdigestione\u201d da parte del business che fatica a comprendere uno stop forzato ogni mese e mezzo; \u00e8 spesso difficile individuare un chiaro obiettivo dello sprint tecnico; il product owner ha difficolt\u00e0 a misurare il valore di questo tipo di interventi (che peraltro poco si prestano a demo); richiede una maturit\u00e0 di gestione se possibile ancora pi\u00f9 elevata da parte del team.<br \/>\nInfine spesso e volentieri questo sforzo non porta comunque un miglioramento effettivo in tempi brevi del codice legacy.<\/p>\n<p><strong>Vantaggi<\/strong><br \/>\nIl team \u00e8 fortemente focalizzato sulla risoluzione degli aspetti tecnici, li gestisce in totale autonomia e non subisce interruzioni.<\/p>\n<h3>User stories funzionali e tecniche nel medesimo sprint<\/h3>\n<p>Questa modalit\u00e0 di gestione \u00e8 piuttosto frequente.<br \/>\nIl tempo disponibile dello sprint \u00e8 suddiviso tra sviluppi funzionali e attivit\u00e0 di tipo tecnico. Diciamo che il team concorda con il product owner di dedicare ad esempio l\u201980% del tempo ai primi ed il restante 20% ai secondi.<br \/>\nE\u2019 il classico esempio di \u201cun colpo al cerchio e uno alla botte\u201d\u2026<\/p>\n<p><strong>Svantaggi<\/strong><br \/>\nIl team fa contest switching all\u2019interno dello sprint (si tratta spesso di attivit\u00e0 a s\u00e9 stanti rispetto al resto); \u00e8 difficile individuare un unico sprint goal.<br \/>\nRichiede comunque tempi lunghi per vedere effettivi benefici a livello di legacy.<\/p>\n<p><strong>Vantaggi<\/strong><br \/>\nE\u2019 un compromesso pi\u00f9 che accettabile per il business perch\u00e9 non richiede periodicamente uno stop delle attivit\u00e0; questa modalit\u00e0 di gestione pu\u00f2 essere adottata in ogni sprint; al termine di ogni iterazione consente di avere workable software da mostrare durante le demo.<\/p>\n<h3>Aspetti funzionali e tecnici nella medesima user story<\/h3>\n<p>Questa \u00e8 un\u2019altra possibilit\u00e0 e devo dire che tra tutte \u00e8 quella dalla quale sento di aver tratto maggior beneficio.<br \/>\nIn sostanza in ogni storia il team stima una quota parte di refactoring del codice e\/o dei test. Questo si traduce in prima battuta in user stories che vengono valutate con un peso maggiore (e quindi in una diminuzione iniziale della velocity del team), ma in un tempo relativamente breve la situazione torna alla normalit\u00e0 e \u2013 addirittura \u2013 a migliorare.<br \/>\nE\u2019 importante notare che richiede grande maturit\u00e0 tecnica ai membri del team e la capacit\u00e0 di fare solo ci\u00f2 che \u00e8 opportuno e nulla di pi\u00f9 (no virtuosismi se non sono necessari).<\/p>\n<p><strong>Svantaggi<\/strong><br \/>\nIl refactoring viene effettuato sulle sole storie funzionali lavorate nel corso dello sprint; iniziale diminuzione della velocity.<\/p>\n<p><strong>Vantaggi<\/strong><br \/>\nNon ha effetti collaterali sugli stakeholder; questa modalit\u00e0 di gestione pu\u00f2 essere adottata continuativamente; aumenta da subito la qualit\u00e0 del software e l\u2019attenzione del team a questo aspetto; nel tempo porta grande confidenza ai dev sulle parti che hanno toccato e maggiore velocit\u00e0 di sviluppo.<\/p>\n<p>E voi quale tipo di approccio adottate?<br \/>\nQuale ritenete pi\u00f9 utile per il vostro caso? Avete esplorato altre possibilit\u00e0?<br \/>\nCi sono casi in cui per risolvere problemi di legacy avete dovuto adottare approcci pi\u00f9 radicali?<br \/>\nSono curiosa di sentire le vostre esperienze&#8230;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Tre approcci ai requisiti tecnici Capita a tutti di dover inserire tra le attivit\u00e0 del team task di tipo prettamente tecnico. In questo articolo vi porto l\u2019esempio di 3 modi differenti di gestire questo tipo di richieste. Innanzi tutto ha senso parlare di user stories tecniche? Mhhh, dipende\u2026 Se siamo in grado di individuare nella &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/www.susannafer.com\/wordpress\/come-gestire-user-stories-tecniche\/\" class=\"more-link\">Leggi tutto<span class=\"screen-reader-text\"> &#8220;Come gestire user stories tecniche&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"footnotes":""},"categories":[5,51,4],"tags":[2,39],"class_list":["post-283","post","type-post","status-publish","format-standard","hentry","category-agile","category-product-ownership","category-scrum","tag-product-backlog","tag-user-stories"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Come gestire user stories tecniche - Product Owner per caso<\/title>\n<meta name=\"description\" content=\"Tre possibili approcci per gestire le user stories tecniche quando \u00e8 necessario intervenire con decisione su codice legacy.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.susannafer.com\/wordpress\/come-gestire-user-stories-tecniche\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Come gestire user stories tecniche - Product Owner per caso\" \/>\n<meta property=\"og:description\" content=\"Tre possibili approcci per gestire le user stories tecniche quando \u00e8 necessario intervenire con decisione su codice legacy.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.susannafer.com\/wordpress\/come-gestire-user-stories-tecniche\/\" \/>\n<meta property=\"og:site_name\" content=\"Product Owner per caso\" \/>\n<meta property=\"article:published_time\" content=\"2015-11-28T10:12:21+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-10-04T15:50:40+00:00\" \/>\n<meta name=\"author\" content=\"Susanna Ferrario\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.susannafer.com\\\/wordpress\\\/come-gestire-user-stories-tecniche\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.susannafer.com\\\/wordpress\\\/come-gestire-user-stories-tecniche\\\/\"},\"author\":{\"name\":\"Susanna Ferrario\",\"@id\":\"https:\\\/\\\/www.susannafer.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/5fa91bb3deca31ad8af1969cef5d01c4\"},\"headline\":\"Come gestire user stories tecniche\",\"datePublished\":\"2015-11-28T10:12:21+00:00\",\"dateModified\":\"2020-10-04T15:50:40+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.susannafer.com\\\/wordpress\\\/come-gestire-user-stories-tecniche\\\/\"},\"wordCount\":752,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.susannafer.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/5fa91bb3deca31ad8af1969cef5d01c4\"},\"keywords\":[\"product backlog\",\"user stories\"],\"articleSection\":[\"Agile\",\"Product Ownership\",\"Scrum\"],\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.susannafer.com\\\/wordpress\\\/come-gestire-user-stories-tecniche\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.susannafer.com\\\/wordpress\\\/come-gestire-user-stories-tecniche\\\/\",\"url\":\"https:\\\/\\\/www.susannafer.com\\\/wordpress\\\/come-gestire-user-stories-tecniche\\\/\",\"name\":\"Come gestire user stories tecniche - Product Owner per caso\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.susannafer.com\\\/wordpress\\\/#website\"},\"datePublished\":\"2015-11-28T10:12:21+00:00\",\"dateModified\":\"2020-10-04T15:50:40+00:00\",\"description\":\"Tre possibili approcci per gestire le user stories tecniche quando \u00e8 necessario intervenire con decisione su codice legacy.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.susannafer.com\\\/wordpress\\\/come-gestire-user-stories-tecniche\\\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.susannafer.com\\\/wordpress\\\/come-gestire-user-stories-tecniche\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.susannafer.com\\\/wordpress\\\/come-gestire-user-stories-tecniche\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.susannafer.com\\\/wordpress\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Come gestire user stories tecniche\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.susannafer.com\\\/wordpress\\\/#website\",\"url\":\"https:\\\/\\\/www.susannafer.com\\\/wordpress\\\/\",\"name\":\"Product Owner per caso\",\"description\":\"Deliziare gli stakeholder e vivere felici\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.susannafer.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/5fa91bb3deca31ad8af1969cef5d01c4\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.susannafer.com\\\/wordpress\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.susannafer.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/5fa91bb3deca31ad8af1969cef5d01c4\",\"name\":\"Susanna Ferrario\",\"logo\":{\"@id\":\"https:\\\/\\\/www.susannafer.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Come gestire user stories tecniche - Product Owner per caso","description":"Tre possibili approcci per gestire le user stories tecniche quando \u00e8 necessario intervenire con decisione su codice legacy.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.susannafer.com\/wordpress\/come-gestire-user-stories-tecniche\/","og_locale":"it_IT","og_type":"article","og_title":"Come gestire user stories tecniche - Product Owner per caso","og_description":"Tre possibili approcci per gestire le user stories tecniche quando \u00e8 necessario intervenire con decisione su codice legacy.","og_url":"https:\/\/www.susannafer.com\/wordpress\/come-gestire-user-stories-tecniche\/","og_site_name":"Product Owner per caso","article_published_time":"2015-11-28T10:12:21+00:00","article_modified_time":"2020-10-04T15:50:40+00:00","author":"Susanna Ferrario","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.susannafer.com\/wordpress\/come-gestire-user-stories-tecniche\/#article","isPartOf":{"@id":"https:\/\/www.susannafer.com\/wordpress\/come-gestire-user-stories-tecniche\/"},"author":{"name":"Susanna Ferrario","@id":"https:\/\/www.susannafer.com\/wordpress\/#\/schema\/person\/5fa91bb3deca31ad8af1969cef5d01c4"},"headline":"Come gestire user stories tecniche","datePublished":"2015-11-28T10:12:21+00:00","dateModified":"2020-10-04T15:50:40+00:00","mainEntityOfPage":{"@id":"https:\/\/www.susannafer.com\/wordpress\/come-gestire-user-stories-tecniche\/"},"wordCount":752,"commentCount":0,"publisher":{"@id":"https:\/\/www.susannafer.com\/wordpress\/#\/schema\/person\/5fa91bb3deca31ad8af1969cef5d01c4"},"keywords":["product backlog","user stories"],"articleSection":["Agile","Product Ownership","Scrum"],"inLanguage":"it-IT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.susannafer.com\/wordpress\/come-gestire-user-stories-tecniche\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.susannafer.com\/wordpress\/come-gestire-user-stories-tecniche\/","url":"https:\/\/www.susannafer.com\/wordpress\/come-gestire-user-stories-tecniche\/","name":"Come gestire user stories tecniche - Product Owner per caso","isPartOf":{"@id":"https:\/\/www.susannafer.com\/wordpress\/#website"},"datePublished":"2015-11-28T10:12:21+00:00","dateModified":"2020-10-04T15:50:40+00:00","description":"Tre possibili approcci per gestire le user stories tecniche quando \u00e8 necessario intervenire con decisione su codice legacy.","breadcrumb":{"@id":"https:\/\/www.susannafer.com\/wordpress\/come-gestire-user-stories-tecniche\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.susannafer.com\/wordpress\/come-gestire-user-stories-tecniche\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.susannafer.com\/wordpress\/come-gestire-user-stories-tecniche\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.susannafer.com\/wordpress\/"},{"@type":"ListItem","position":2,"name":"Come gestire user stories tecniche"}]},{"@type":"WebSite","@id":"https:\/\/www.susannafer.com\/wordpress\/#website","url":"https:\/\/www.susannafer.com\/wordpress\/","name":"Product Owner per caso","description":"Deliziare gli stakeholder e vivere felici","publisher":{"@id":"https:\/\/www.susannafer.com\/wordpress\/#\/schema\/person\/5fa91bb3deca31ad8af1969cef5d01c4"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.susannafer.com\/wordpress\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":["Person","Organization"],"@id":"https:\/\/www.susannafer.com\/wordpress\/#\/schema\/person\/5fa91bb3deca31ad8af1969cef5d01c4","name":"Susanna Ferrario","logo":{"@id":"https:\/\/www.susannafer.com\/wordpress\/#\/schema\/person\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/www.susannafer.com\/wordpress\/wp-json\/wp\/v2\/posts\/283","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.susannafer.com\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.susannafer.com\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.susannafer.com\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.susannafer.com\/wordpress\/wp-json\/wp\/v2\/comments?post=283"}],"version-history":[{"count":2,"href":"https:\/\/www.susannafer.com\/wordpress\/wp-json\/wp\/v2\/posts\/283\/revisions"}],"predecessor-version":[{"id":531,"href":"https:\/\/www.susannafer.com\/wordpress\/wp-json\/wp\/v2\/posts\/283\/revisions\/531"}],"wp:attachment":[{"href":"https:\/\/www.susannafer.com\/wordpress\/wp-json\/wp\/v2\/media?parent=283"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.susannafer.com\/wordpress\/wp-json\/wp\/v2\/categories?post=283"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.susannafer.com\/wordpress\/wp-json\/wp\/v2\/tags?post=283"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}