torstai 22. lokakuuta 2015

Ketterästi kuin gaselli

Ketterät ohjelmistokehitysmenetelmät ovat nykyään ohjelmistosuunnittelun valtavirtaa (Agile software development). Yksi sellaisiksi laskettavista tekniikoista on Scrum. Sille on tyypillistä tuotekehitysprosessin tiukka vaiheistus, jolla pyritään parantamaan tuotekehityksen ennustettavuutta ja hallitsemaan siihen liittyviä riskejä.

Scrumin keskeisiä käsitteitä ovat:

  • Sprintti (Sprint): Yleensä 1 - 4 viikon mittainen pätkä, jonka aikana on tarkoitus tuottaa tietyn toiminnallisuuden sisältävä, osittain valmis ohjelmisto.
  • Tehtävälista (Sprint Backlog): Lista tehtävistä, jotka on tarkoitus toteuttaa.
  • Edistymiskäyrä (Burndown Chart): Kaavio, joka kuvaa tehtävien toteutumista.
  • Suunnittelupalaveri (Sprint Planning Meeting): Sprintin alussa pidettävä kokous, jossa valitaan sprinttiin sisältyvät tehtävät.
  • Scrum-palaveri ts. päiväpalaveri (Daily Scrum): Päivittäinen kokous, jossa kukin tuotekehitystiimin jäsen kertoo:
    1. Mitä on tehnyt edellisen päiväpalaverin jälkeen
    2. Mitä aikoo tehdä ennen seuraavaa päiväpalaveria
    3. Onko työn etenemiselle tiedossa esteitä
  • Katselmus (Sprint Review): Sprintin lopussa pidettävä palaveri, jossa keskustellaan siitä, mitä sprintin aikana saatiin aikaan.
  • Retrospektiivi: (Sprint Retrospective): Palaveri, jossa prosessitasolla tarkastellaan sprintin toteutumista. Mikä meni hyvin, ja mitkä asiat voitaisiin seuraavassa sprintissä toteuttaa paremmin?

Jotta homma säilyisi ketteränä, on lukuisille palavereille määritelty sprintin pituuteen suhteutettu maksimiaikansa. Varsin tavallisen kahden viikon sprintin kohdalla tämä tarkoittaa, että suunnittelupalaverille varataan aikaa neljä tuntia (4h), scrum-palavereille 15 - 30 minuuttia, katselmukselle kaksi tuntia (2h) ja retrospektiville 1,5 tuntia.

Mutta hetkinen... Tässä blogissahan kohkataan enimmäksen juoksemiseen, hiihtämiseen ja retkeilyyn liittyvistä jutuista. Miten Agile ja Scrum liittyvät asiaan?

No, aasinsilta on ainakin helppo rakentaa. Ohjelmistokehityksen tavoin myös edellä mainitut harrasteet sisältävät usein puurtamista samankaltaisina toistuvien tehtävien parissa.

Voisikohan Agile tuoda lisäarvoa myös fyysisiin harjoitteisiin? Kukapa ei haluaisi juosta ketterästi kuin gaselli! Ja olisihan se kätevää, jos lenkille lähtiessään pystyisi tarkasti arvioimaan paluuaikansa, vaikkapa saunan ajastusta varten. Arvelen myös, että Scrumiin sisältyvä retrospektiivinen osuus saattaisi hyvinkin kehittää juoksijan nopeutta.

Asiaa selvästikin täytyy testata, aluksi ainakin ajatustasolla. Koska Scrum on ryhmätyöskentelyyn tarkoitettu menetelmä, otan kuvitteelliseen juoksutiimiin mukaan vaimoni. Tiimillä täytyy olla nimi, jonka valintaan käytetään yleensä kohtuuttomasti aikaa, ja lopulta päädytään johonkin outoon vaihtoehtoon. Mielikuvituksettomasti valitsen tiimimme nimeksi Askelmittari.

Sprintin pituutta täytyy hieman miettiä, koska juoksulenkillä yksi sprintti ei voi olla kahden viikon mittainen. Juoksemme yleensä tunnin lenkkejä, joten ajatus 12 minuutin sprinteistä saattaisi toimia. Tunti on helppo jakaa viiteen osaan, ja Cooperin testikin on sattumoisin juuri saman pituinen.

Myös muut Scrumiin liittyvät jutut täytyy suhteuttaa normaalia lyhyempään sprinttiin. Päätämme pitää scrum-palaverit kahden minuutin välein, jolloin niitä mahtuu yhteen sprinttiin kuusi kappaletta. Palaverien ja katselmusten pituutta lyhennetään vastaavasti:

  • Sprintin suunnittelupalaveri: 30 sekuntia
  • Scrum-palaverit: 15 sekuntia
  • Sprintin jälkeinen katselmus: 30 sekuntia
  • Retrospektiivi: 15 sekuntia

Ja sitten vaan liikkeelle! Tavoitteena on juosta kymmenen kilometrin lenkki ja käyttää siihen aikaa enintään tunti.


Ensimmäinen sprintti

Suunnittelupalaverissa sovimme, että juoksemme sprintin aikana Vaivasenlammelle asti. Matkaa on vain reilut 1,5 km, joten tavoite lienee helppo saavuttaa. Ensimmäisestä sprintistä ei kannata tehdä liian haastavaa.

Otan mukaani A7-kokoisen lehtiön, joka toimii tehtävälistana. Kirjaan ensimmäisen sprintin tehtäväksi "Juokse Vaivasenlammelle", jonka jaan edelleen alitehtäviin "Juokse Monarille", "Juokse Leirikyläntielle" ja "Juokse lammelle". Tuntuu hyvältä, kun homma tulee kerrankin suunniteltua kunnolla!

00:02:00 Olemme päässeet Kermatien risteykseen ja pysähdymme ensimmäiseen scrum-palaveriin. Matka on lähtenyt hyvin liikkeelle, mutta nyt edessä on tien ylitys, johon liittyvistä riskeistä keskustelemme palaverissa.

00:04:00 Scrum-palaveri Luolatien risteyksessä. Pian Kermatien jälkeen alkoi alamäki, jota oli kevyt juosta. Tällaiset pikku pysähdykset ovat oikeastaan aika mukavia!

00:06:00 Pysähdymme scrum-palaveriin Korpitien kohdalla. Alamäki jatkuu edelleen, mutta seuraavaan printin alkuun mennessä sen pitäisi olla jo taputeltu.

00:08:00 Saavumme Leirikyläntielle. Scrum-palaverissa huomioimme, että reittimme kääntyy nyt asfaltilta kohti Vaivasenlampea menevälle hiekkapolulle, jonka kaupunki on ystävällisesti kunnostanut ulkoilijoita varten.

00:10:00 Pidämme scrum-palaveria ehkä puolen minuutin matkan päässä Vaivasenlammesta, minkä jälkeen hölkkäämme lammen rantaan. Lammen yli puhaltava tuuli tuntuu hieman viileältä.

00:12:00 Sprintti päättyy, pidämme katselmusta. Tyytyväisinä toteamme saavuttaneemme Vaivasenlammen. Sprintin aikana olisi ehtinyt pidemmällekin, mutta katsoimme parhaaksi odottaa seuraavaa sprinttiä.

Katselmusta seuraavassa retrospektiivisessä palaverissa mietimme, että Monarin jälkeisessä alamäessä olisi päässyt kovempaakin. Pohdimme myös, että juostessa voisi olla käyttöä scrum-kellolle, joka piippaisi aina, kun on palaverin aika.


Toinen sprintti

Ennen matkan jatkumista pidämme suunnittelupalaverin. Pitäisikö toisen sprintin aikana tavoitella vain Kiviniemeä, vai olisiko parempi pyristellä Rauhalahteen asti? Vatvomme asiaa vähän liikaakin. Lopulta päivitän tehtävälistan: "Juokse Ruokolahden rantaan", "Juokse Kiviniemeen", "Juokse Rauhalahteen".

00:02:00 Saavumme Ruokolahden pohjukkaan, pidämme scrum-palaverin. Vaivasenlammella hartioihin tarttunut kylmyys vaivaa vieläkin hieman.

00:04:00 Ruokolahden jälkeen alkoi ylämäki, joka viimein sai lämmöt nousemaan. Nyt ei kannattaisi pysähtyä, koska kylmä iskee helposti uudestaan, mutta scrum-palaveri täytyy kuitenkin pitää.

00:06:00 Pidämme scrum-palaveria Kiviniemen sillalla. Ehdimmeköhän tämän sprintin aikana Rauhalahteen asti?

00:08:00 Rauhalahden latupohjalla jo. Juoksu tuntuu hyvältä, mutta scrum-palaveri katkaisee etenemisen juuri, kun meno alkoi maistua. Edessä on ylämäki.

00:10:00 Sprintin viimeinen scrum-palaveri pidetään lentopallokentän luona. Ylämäkeen piti vähän kiristää tahtia.

00:12:00 Sprintti päättyy. Ehdimme suunnitelman mukaisesti Rauhalahteen, mutta hiukan tiukille se otti.

Retrospektiivisessä osuudessa vaimo huomauttaa, että ylämäessä mentiin turhan kovaa. Pakkohan se oli rypistää, kun matkalla tuli seisoskeltua.


Kolmas sprintti

Kolmannen sprintin suunnittelupalaverissa päätämme yrittää Leväsentielle asti. Matka on hiukan pidempi kuin toisella sprintillä, mutta maasto tasaisempaa. Ehkä se onnistuu.

00:02:00 Sprintti alkaa huonosti. Luen tehtävälistaa juostessani ja kaadun, kun jalkani tökkää maasta törröttävään juurakkoon. Housut menevät polvesta rikki. Emme ehdi kuin Katiskaniementielle, jossa pidämme ensimmäisen scrum-palaverin.

00:04:00 Tennishallin kohdalla. Olemme jäljessä aikataulusta. Pelkään, että Burndown Chart kääntyy tällä menolla nousuun.

00:06:00 Hauenkoukun risteys. Nyt pitäisi juosta, mutta pysähdymme silti pitämään scrum-palaveria. Mahtaisikohan se riittää, jos sprintin aikana pitäisi vain yhden palaverin?

00:08:00 Jälleen scrum-palaveri. Tällä kertaa Särkilahden sillalla, jossa tuulee kylmästi. Lähtiessämme liikkeelle lenkkarini kengännauha aukeaa, mutta nyt ei ole aikaa solmia sitä.

00:10:00 Yritämme juosta kovaa, mutta ehdimme hädin tuskin Särkilahden laiturin kohdalle, kun on scrum-palaverin aika. Varsinaista asiaa ei ole.

00:12:00 Sprintti päättyy. Emme saavuttaneet Leväsentietä, emmekä tällä menolla ehdi viiden sprintin aikana kotiinkaan.

En haluaisi pitää retrospektiivistä palaveria, koska taivas on alkanut tummua. Onkohan sade tulossa? Arvaan myös, että vaimo valittaa taas liian kovasta juoksuvauhdista. On rasittavaa kuulla samat jutut kerta toisensa jälkeen.


Neljäs sprintti

Sprintin suunnittelupalaveri hermostuttaa minua. Ehkä siksi, että nyt pitäisi vaan pyrkiä eteenpäin, eikä vatuloida reittisuunnitelmien kanssa. Väittelemme silti reittivaihtoehdoista yli minuutin. Lopulta päätämme tavoitella Leväsen Shellin kohdalla olevaa risteystä.

00:02:00 Nousemme viimein Leväsentielle. Pidämme scrum-palaveria samalla, kun taivaalta alkaa tihkua vettä. Hukkaan juoksurytmini tauon aikana.

00:04:00 Scrum-palaveri kauppakeskus Hermanin risteyksessä. Sade tuntuu yltyvän. Kun matka jatkuu, astun edelleen avoimena olevan kengännauhani päälle, ja menen taas nurin. Miksi en sitonut nauhaa edellisen sprintin aikana? Tätä se kiire teettää.

00:06:00 Olemme K-Raudan kupeessa ja pysähdymme scrum-palaveriin. Hittoako näitä täytyy joka sähkötolpan kohdalla pitää? Luovun tehtävälistasta.

00:08:00 Saan Kartanonkadun risteyksessä kimppuuni koiran, joka tarraa kiinni housunlahkeeseeni. Yritän hätistellä koiran tiehensä siinä kuitenkaan onnistumatta. Tilanne laukeaa vasta, kun koira huomaa ohi ajavan pyöräilijän, ja säntää ulvoen tämän perään. Käsittelemme tapahtunutta scrum-palaverissa.

00:10:00 Pidämme scrum-palaverin Vaasan leipomon kohdalla. Vettä sataa kaatamalla. Tuntuu tyhmältä seisoa sateessa.

00:12:00 Sprintti päättyy. Katselmuksessa toteamme tavoitteen jääneen taas saavuttamatta. Emme ehtineet kuin Biltemalle asti.

Retrospektiivisessä palaverissa puimme vielä viivästymisen syitä. Vaimo pitää minua pääsyyllisenä, koska tappelin koiran kanssa. Mistä olisin voinut tietää, että se piski ilmestyy reitillemme?

Palaverin aikana meitä lähestyy toinen juoksuporukka, joka on huomannut touhuilumme. Kun kerromme olevamme scrum-juoksijoita, he innostuvat asiasta ja haluavat juosta kanssamme. No kai se käy, ehkä matka etenee isolla porukalla joutuisammin. Kuopio Agile Scrunners, jeah!


Viides sprintti

Suunnittelupalaverissa teemme selväksi, että kyseessä on juoksulenkkimme viimeinen sprintti, ja sen aikana vaimon ja minun olisi tarkoitus ehtiä kotiin. Nyt siis täytyy laittaa jalkaa toisen eteen!

00:02:00 Saavutamme Leväsen Shellin, jonka edustalla pidämme scrum-palaverin. Uudella tiimillä on paljon asioita. Yksi jäsenistä ehdottaa, että kokeilisimme paljasjalkajuoksua. Toinen on sitä mieltä, että kylmä ilma selätetään parhaiten juoksemalla shortseissa, koska se karaisee. Kolmas valittaa jalassaan olevasta rakosta. Palaveri kestää ja kestää.

00:04:00 Scrum-palaveri Leväsenlammen luona. Vaimo on selvästikin väsynyt ja alkaa vinoilla: "Mitäs olet edellisen palaverin jälkeen tehnyt ja mitä meinaat seuraavaksi tehdä? Onko esteitä?" Yksi tiimimme jäsenistä valittaa jalassaan olevasta rakosta.

00:06:00 Juostuamme lammen rantaa pari minuuttia pidämme jälleen scrum-palaverin mittaisen tauon. Jalassa oleva rakko mainitaan taas.

00:08:00 Ylitämme Leväsenlammesta laskevan pienen puron ja hiljennämme vauhtia scrum-palaveria varten. Vaimo ja minä vilkaisemme toisiamme silmiin, mutta kumpikaan ei sano mitään. Muuten palaverissa käy kauhea pulina.

00:10:00 Lähestymme Leväsenlammen laituria. On sprintin viimeisen scrum-palaverin aika, mutta vaimo ei enää pysähdy. Minäkin jatkan matkaani.

00:12:00 Sprintti päättyy. Matkaa on vielä jäljellä useita satoja metrejä.

Sekä katselmus ja retrospektiivinen palaveri jäävät pitämättä. Emme enää aloita uutta sprinttiä, vaan juoksemme yhtä soittoa kotiin. Aurinko kurkistaa pilven raosta.

perjantai 16. lokakuuta 2015

Kiertoajelulla

Mennyt viikko oli aika hiljainen. Vaimo oli matkoilla ja poikakin edelleen armeijassa, joten omasta rauhasta ei ollut pulaa.

Itse asiassa rauhaa oli siinä määrin runsaasti, että teki mieli lähteä jonnekin. Keskellä työviikkoa ei ehdi kauas, mutta omasta kotikaupungistakin voisi löytyä jotain mielenkiintoista. Talvikin tuntui vielä etäiseltä, kun aurinko paistoi ja lämpötila hipoi kymmentä astetta.

Ehdotin Subbelle, että eiköhän lähdetä pienelle Kuopio-ajelulle. Subbe tietysti innostui heti, mikä ei varsinaisesti ollut yllätys. Kyllähän auto tykkää, kun sillä ajetaan.

Aluksi kurvailimme Kuopion eteläpuolelle, Petoselle. Pahat kielet sanovat, että siellä on joskus vähän rauhatonta, mutta riskit lienevät hallittavissa, jos alueelta poistuu ennen pimeän tuloa.


Petoselta jatkoimme Länsi-Puijolle ja Päivärantaan. Puijon rinteestä on kiva näkymä Kallavedelle ilman, että Puijonsarventieltä tarvitsee kävellä kauaksikaan.


Puijolta etenimme kohti satamaa...


... ja sieltä edelleen Väinölänniemelle.



Hannes se vaan jaksaa.


Subbekin jaksaa, ja halusi välttämättä kuvaan.


Vänäri näkyy mukavasti myös Saaristokadulta.


Tässä vaiheessa alkoi hiukan hämärtää. Ajoimme Kallansilloille, jonne auringon säteet vielä ylsivät.


Kierroksemmme päättyi Neulamäkeen, jossa tarkoitukseni oli kuvata auringonlaskua mäen päällä olevasta näkötornista. Myöhästyimme kuitenkin vähän, sillä aurinko oli jo painunut horisontin alle.

Lisäksi tornissa oli samaan aikaan pariskunta, joka nylkytti niin, että koko torni heilui. Yritä siinä sitten ottaa hämäräkuvia.

sunnuntai 4. lokakuuta 2015

Volokin poloku

En oikeastaan tiedä, miksi Volokin polulle tuli lähdettyä vasta nyt. Ehkä siksi, että kyseessä ei ole Metsähallituksen ylläpitämä reitti, eikä kohde ollut itsellenikään kovin tuttu.

Lähdimme joka tapauksessa lauantaiaamuna ajamaan kohti Sonkajärveä. Sonkajärvihän tunnetaan lähinnä eukonkantokisoistaan, mutta toki varovasti haaveilin siitä, että vaimo selviytyisi retkestä omin jaloin.

Volokin polun sanotaan olevan melko erämainen. Infotekstin mukaan "alueella elää mm. susia, karhuja, ilveksiä, ahmoja, majavia ja kyykäärmeitä", joten toiveet retkiseurasta olivatkin korkealla. Polku on myös melko pitkä - 30 km suuntaansa - joten periaatteessa siitä riittää patikoitavaa useammankin retken tarpeiksi.

Liikkeelle voi lähteä paitsi pohjoisesta (Jyrkän kylältä) tai etelästä (Susi-Kervisen lammen luota) myös reitin varrelta. Polun eteläpää vaikutti helposti saavutettavalta, joten jätimme auton Susi-Kervisen laavun kupeessa olevalle kääntöpaikalle.

Reitin eteläisin osa on hienoa harjumaastoa. Polku mutkittelee lampien välisellä harjanteella, ja matkan varrella on muutenkin useita vesistöjä. Jussinlammen tuvalle asti polku oli helppokulkuista, mutta sen jälkeen reitti sukelsi Uuranholin rotkoon, ja märät pitkospuut muuttuivat liukkaiksi.

Reitin parhaat näköalat olisivat saattaneet avautua Holinmäeltä, mutta sinne asti emme ehtineet, vaan käännyimme paluumatkalle Holinlammen nuotiopaikalta. Itse Uuranholi ei ainakaan nuotiopaikan kohdalla ollut erityisen näyttävä.

Volokin polun rakenteita on edellisinä vuosina ehostettu EU-tuen voimin. Laavut olivatkin melko hyvässä kunnossa, ja myös Jussinlammen autiotupa vaikutti siistiltä.

Pitkospuiden osalta tarjolla oli hyvää ja huonoa, mutta keskimäärin reitti oli tältäkin osin OK, vaikka polun varteen (lopullisesti?) jätetyt vanhat lankut näyttivätkin vähän hassuilta.

Muutamia muita retkeilijöitä lukuun ottamatta polulla oli hiljaista. Muut nisäkkäät loistivat poissaolollaan, enkä muista matkan aikana nähneeni kuin yhden perhosen. Edes isompia lintuloisia ei ollut. Joko se talvea tietää?

Reitin puuhuolto on päättynyt syyskuun lopussa, joten nuotiotulia kaipaava joutuu keräämään polttopuunsa maastosta, mikä ei tosin Valion jäljiltä liene suurikaan homma.

Retken jälkeen mieleen kumpusi polun nimeen liittyvä ihmettely. Kuka tai mikä Volokki on ollut? Vai onko kyseessä Volok, tai peräti Volkki? Volokin poloku?

Netistä nimelle löytyy kahdenlaista selitystä. Lyhyempi versio viittaa venäjänkielen volk-sanaan, joka tarkoittaa sutta. Pidemmässä taas puhutaan Volokki Vorna -nimisestä miehestä, joka joskus kohtasi seudulla tiensä pään.

Olipa totuus nimestä mikä hyvänsä, polulla oli auringon paistaessa aika mukavaa. Reitin pohjoispuoli jäi vielä näkemättä, joten tänne epäilemättä palataan uudestaankin.