{"id":1383,"date":"2012-09-14T22:38:27","date_gmt":"2012-09-14T20:38:27","guid":{"rendered":"http:\/\/jacekwieczorek.agony.webd.pl\/?p=1383"},"modified":"2019-12-02T14:40:48","modified_gmt":"2019-12-02T13:40:48","slug":"sposoby-dzielenia-user-stories-na-male-czesci","status":"publish","type":"post","link":"https:\/\/jacekwieczorek.pl\/blog\/sposoby-dzielenia-user-stories-na-male-czesci\/","title":{"rendered":"Sposoby dzielenia User Stories na ma\u0142e cz\u0119\u015bci"},"content":{"rendered":"<p>Efektem ka\u017cdego sprintu w Scrumie powinien by\u0107 dzia\u0142aj\u0105cy fragment oprogramowania. Problematyczne dla wielu zespo\u0142\u00f3w &#8211; szczeg\u00f3lnie je\u015bli wcze\u015bniej pracowali w modelu kaskadowym &#8211; jest dzielenie wymaga\u0144 produktowych na ma\u0142e, zbywalne przyrosty. Cz\u0119sto s\u0142yszy si\u0119 g\u0142osy z zespo\u0142u m\u00f3wi\u0105ce, \u017ce\u00a0<a title=\"Kr\u00f3tkie sprinty w Scrumie\" href=\"https:\/\/jacekwieczorek.pl\/blog\/krotkie-sprinty-w-scrumie\/\">kr\u00f3tkie sprinty<\/a>\u00a0uniemo\u017cliwiaj\u0105 oddanie sensownego przyrostu, a jako rozwi\u0105zanie proponuj\u0105 wyd\u0142u\u017cy\u0107 sprint.<\/p>\n<p>Id\u0105c tym tokiem my\u015blenia mo\u017cemy za\u0142o\u017cy\u0107, \u017ce skoro w ci\u0105gu jednotygodniowego sprintu oddajemy\u00a0<strong>zero<\/strong> dzia\u0142aj\u0105cego oprogramowania, to w ci\u0105gu dwutygodniowego sprintu oddamy&#8230;\u00a0<strong>2 razy zero<\/strong>.<\/p>\n<p>Jak zatem upora\u0107 si\u0119 ze wspomnianym zerem? Przy dzieleniu wymaga\u0144 na mniejsze cz\u0119\u015bci, pomocne mo\u017ce by\u0107 spojrzenie z kilku perspektyw i pr\u00f3ba odpowiedzi na proste pytania:<\/p>\n<ul>\n<li><strong>u\u017cytkownik<\/strong> &#8211; Kt\u00f3ra rola jest najwa\u017cniejsza? Czy mo\u017cemy obs\u0142u\u017cy\u0107 na pocz\u0105tku tylko zwyk\u0142ego u\u017cytkownika? Kt\u00f3ry typ u\u017cytkownika jest najcz\u0119\u015bciej wykorzystywany?<\/li>\n<li><strong>dane<\/strong> &#8211; Czy mo\u017cemy pewne dane odczyta\u0107 z pliku zamiast z bazy? Czy mo\u017cemy u\u017cy\u0107 wygenerowanych danych? Kt\u00f3re dane s\u0105 najistotniejsze, a kt\u00f3re opcjonalne?<\/li>\n<li><strong>algorytmy<\/strong> &#8211; Jak mo\u017cemy maksymalnie upro\u015bci\u0107 algorytm? Czy zamiast pisa\u0107 kompletny algorytm, mo\u017cemy go zasymulowa\u0107? Czy mo\u017cemy u\u017cy\u0107 <a title=\"Mechaniczny Turek\" href=\"http:\/\/pl.wikipedia.org\/wiki\/Mechaniczny_Turek\">Mechanicznego Turka<\/a>?<\/li>\n<li><strong>wydajno\u015b\u0107<\/strong> &#8211; Czy zanim wydajno\u015b\u0107 b\u0119dzie satysfakcjonuj\u0105ca, funkcjonalno\u015b\u0107 mo\u017ce po prostu zacz\u0105\u0107 dzia\u0142a\u0107? Czy musimy od razu umo\u017cliwia\u0107 obs\u0142ug\u0119 100 tys \u017c\u0105da\u0144 na sekund\u0119? Czy mo\u017cemy p\u00f3ki co poczeka\u0107 5 sekund na wynik zapytania i upewni\u0107 si\u0119, \u017ce wynik (dane) jest dla nas satysfakcjonuj\u0105cy?<\/li>\n<li><strong>bezpiecze\u0144stwo<\/strong> &#8211; Czy mogliby\u015bmy najpierw udowodni\u0107, \u017ce nasz pomys\u0142 dzia\u0142a, zanim zabezpieczymy si\u0119 przed ka\u017cdym mo\u017cliwym sposobem ataku?<\/li>\n<li><strong>interfejs<\/strong> &#8211; Czy mo\u017cemy wy\u015bwietli\u0107 wynik w konsoli zamiast na stronie internetowej? Czy mo\u017cemy odczyta\u0107 wynik z log\u00f3w? Czy mo\u017cemy przygotowa\u0107 formularz w czystym HTML&#8217;u, zanim zaczniemy zaokr\u0105gl\u0105\u0107 rogi w CSS?<\/li>\n<li><strong>\u015bcie\u017cki procesu<\/strong> &#8211; Czy mo\u017cemy obs\u0142u\u017cy\u0107 najbardziej prawdopodobn\u0105 scie\u017ck\u0119 procesu bez \u015bcie\u017cek warunkowych? Kt\u00f3ra \u015bcie\u017cka jest najbardziej prawdopodobna? Kt\u00f3r\u0105 scie\u017ck\u0105 u\u017cytkownicy porusz\u0105j\u0105 si\u0119 najcz\u0119\u015bciej?<\/li>\n<li><strong>walidacja danych<\/strong> &#8211; Czy mo\u017cemy zrezygnowa\u0107 z walidacji danych w formularzu? Czy mo\u017cemy zrezygnowa\u0107 z walidacji w Javascripcie? Czy mo\u017cemy tymczasowo przyj\u0105\u0107, \u017ce klient wie co wpisuje?<\/li>\n<li><strong>zarz\u0105dzanie danych<\/strong> &#8211; Czy potrzebujemy panel administratora, czy mo\u017cemy aktualizowa\u0107 dane bezpo\u015brednio w bazie danych? Czy mo\u017cemy aktualizowa\u0107 pliki z danymi r\u0119cznie? Czy mo\u017cemy przyj\u0105\u0107 domy\u015blne dane i p\u00f3ki co ich nie aktualizowa\u0107?<\/li>\n<li><strong>cz\u0119stotliwo\u015b\u0107 u\u017cycia<\/strong> &#8211; Kt\u00f3re funkcje s\u0105 najwa\u017cniejsze\/najcz\u0119\u015bciej u\u017cywane przez u\u017cytkownik\u00f3w? Kt\u00f3re sk\u0142adaj\u0105 si\u0119 na <a title=\"Minimum Viable Product\" href=\"https:\/\/jacekwieczorek.pl\/blog\/co-to-jest-mvp-minimum-viable-product-i-jak-zrobic-to-dobrze\/\" target=\"_blank\" rel=\"noopener noreferrer\">MVP<\/a> (ang. <em>Minimum Viable Produc<\/em>t)?<\/li>\n<\/ul>\n<p>Gdy nast\u0119pnym us\u0142yszysz, \u017ce &#8222;<em>tej historyjki si\u0119 nie da poci\u0105\u0107 na mniejsze cz\u0119\u015bci&#8221;<\/em>, zaproponuj spojrzenie na problem z perspektywy powy\u017cszej listy.<\/p>\n<div class=\"_3bJ2H CHExY\">\n<div class=\"_1l8RX _1ByhS\">Photo by <a href=\"https:\/\/unsplash.com\/@iavnt?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText\">ivan Torres<\/a> on <a href=\"https:\/\/unsplash.com\/s\/photos\/pizza?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText\">Unsplash<\/a><\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Efektem ka\u017cdego sprintu w Scrumie powinien by\u0107 dzia\u0142aj\u0105cy fragment oprogramowania. Problematyczne dla wielu zespo\u0142\u00f3w &#8211; szczeg\u00f3lnie je\u015bli wcze\u015bniej pracowali w modelu kaskadowym &#8211; jest dzielenie wymaga\u0144 produktowych na ma\u0142e, zbywalne przyrosty. Cz\u0119sto s\u0142yszy si\u0119 g\u0142osy z zespo\u0142u m\u00f3wi\u0105ce, \u017ce\u00a0kr\u00f3tkie sprinty\u00a0uniemo\u017cliwiaj\u0105 oddanie sensownego przyrostu, a jako rozwi\u0105zanie proponuj\u0105 wyd\u0142u\u017cy\u0107 sprint. Id\u0105c tym tokiem my\u015blenia mo\u017cemy za\u0142o\u017cy\u0107, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":3806,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[9,6],"tags":[],"class_list":["post-1383","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-scrum","category-techniki"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/jacekwieczorek.pl\/blog\/wp-json\/wp\/v2\/posts\/1383","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jacekwieczorek.pl\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jacekwieczorek.pl\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jacekwieczorek.pl\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jacekwieczorek.pl\/blog\/wp-json\/wp\/v2\/comments?post=1383"}],"version-history":[{"count":38,"href":"https:\/\/jacekwieczorek.pl\/blog\/wp-json\/wp\/v2\/posts\/1383\/revisions"}],"predecessor-version":[{"id":3807,"href":"https:\/\/jacekwieczorek.pl\/blog\/wp-json\/wp\/v2\/posts\/1383\/revisions\/3807"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/jacekwieczorek.pl\/blog\/wp-json\/wp\/v2\/media\/3806"}],"wp:attachment":[{"href":"https:\/\/jacekwieczorek.pl\/blog\/wp-json\/wp\/v2\/media?parent=1383"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jacekwieczorek.pl\/blog\/wp-json\/wp\/v2\/categories?post=1383"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jacekwieczorek.pl\/blog\/wp-json\/wp\/v2\/tags?post=1383"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}