Retrospektiivi: Pikatreffit

Tämä retrospektiivi on loistava jos tiimissä on hiljaisempia henkilöitä, joita on vaikea saada aktivoitua osaksi keskusteluita. Pikatreffit saa luontevasti kaikki keskustelemaan keskenään ja hakemaan ratkaisuja.

2016-11-02-10-21-12

Alustus

  1. Pyydä tiimiläisiä kirjoittamaan lapuille hiljaisuudessa 3 minuutissa niin paljon keskusteluaiheita kuin tulee mieleen.
  2. Pyydä jokaista valitsemaan yksi aihe joka on heidän omasta mielestään tärkein johon hakea ratkaisua.
  3. Anna kaikille 5 minuuttia aikaa kirjoittaa indeksikortin toiselle puolelle viisi sanaa tai lausetta ongelmasta johon he hakevat ratkaisua.
  4. Anna toiset 5 minuuttia aikaa ja pyydä piirtämään kortin toiselle puolelle kuva tai vertauskuva joka parhaiten kuvaa ongelmaa. Kuvaa ei näytetä muille vaan se on vain itseä varten.

Pikatreffit

  1. Aloita pikatreffit siten, että kehässä jokaisen vastapuolella oleva henkilö on tämän pari.
  2. Jokaiselle kierrokselle 5 minuuttia aikaa toinen selittää ensin oman ongelmansa ja sen jälkeen keskustella ratkaisusta. Pyydä ongelman esittäjää kirjaamaan muistiinpanoja mahdollisista ratkaisuista.
  3. Kierrätä pareja niin, että kaikki puhuvat kaikkien kanssa ja jokainen saa selittää oman ongelmansa kaikille.

Jos osallistujia on pariton määrä voit antaa parittoman seurata muiden keskustelua kuitenkaan kommentoimatta. Vaihtoehtoisesti pariton voi osallistua kolmantena pyöränä yhteen pareista. Tällöin kyseessä on swinger pikatreffit. Näistä vaihtoehdoista hiljainen seuraaja toimii paremmin koska kolmen hengen keskustelusta meinaa loppua aika.

Purkaminen

  1. Anna kaikille vielä 3 minuuttia aikaa valmistella oma ratkaisuehdotus pohjautuen käytyihin keskusteluihin
  2. Pyydä jokaista vuorollaan tulemaan eteen ja esittelemään mielestään parhaan ratkaisun jota haluaisi kokeilla seuraavassa sprintissä.

Lähteet

 

Miten tilaaja pystyy seuraamaan toimitusaikataulun toteutumista mahdollisimman yksinkertaisesti?

burnup-kuvaaja2

Tämä postaus liittyy oleellisesti aikaisempiin postauksiini Miten varmistetaan se, että tilaaja saa sovitulla hinnalla mitä on haluttu? ja Voiko vauhtia käyttää tehokkuuden mittarina?

Yksinkertaisin tapa seurata projektin toimitusaikataulun etenemistä on etenemis- (Burnup chart) tai burndown-kuvaaja (Burndown chart). Burndown-kuvaaja on erityisen hyvä silloin kun tiedetään etukäteen toteutettava laajuus. Burndown-kuvaaja soveltuu erityisen hyvin sprintin tai kiinteähintaisen projektin serurantaan. Yleensä projektin tasolla burndown-kuvaaja ei ole kovin havainnollinen, koska koko laajuutta harvoin tiedetään ennen projektin alkamista. Projektin etenemisen seurantaan sopii paljon paremmin burnup-kuvaaja.

burnup-kuvaaja2-selityksin

Etenemiskuvaajasta näkee yhdellä silmäyksellä nopeasti mikä projektin tilanne on. Etenemiskuvaajan oleellisimman elementit ovat toteutunut laajuus (vauhti), suunniteltu laajuus, sekä ennustettu laajuus. Yllä olevassa Etenemiskuvaajassa sininen viiva kuvaa suunniteltua laajuutta, keltainen toteutunutta laajuutta ja ohut harmaa viiva ennustettua vauhtia. Tässä burnup-kuvaajassa on lisäksi näkyvissä oranssilla alueella ennusteen virhemarginaali perustuen tilastolliseen analyysiin toteutuneesta vauhdista.

Etenemiskuvaajasta voidaan arvioida onko projekti suunnitellussa aikataulussa katsomalla missä kohtaa ennustettu vauhti ja suunniteltu laajuus viivat risteävät. Lisäksi mikäli virhemarginaali on laskettu voidaan arvoida miten todennäköistä tavoitteen saavuttaminen on. Yllä olevasta esimerkistä nähdään, että suunniteltu laajuus valmistuu aikaisintaan syyskuuun alkupuolella (piste 1). Pessimistisen arvion mukaan suunniteltu laajuus saavutetaan kuitenkin vasta marraskuun alkupuolella (piste 3), mutta todennäköisesti laajuus saavutetaan jossain lokakuun alkupuolella (piste 2).

Esimerkissä olevan projektin kokonaislaajuus on elänyt varsin paljon projektin alkupuolella. Projektin alkupuolella on ensin karsittu laajuutta ja sen jälkeen se kasvanut voimakkaasti ja sitten taas laajuutta on karsittu vastaamaan alkuperäistä. Laajuuden pienentäminen tai suurentaminen vaikuttaa suoraan projektin kustannuksiin. Koska ketterää projektia tehdään kiinteällä tiimillä ja vakio mittaisissa sprinteissä voidaan suoraan kuluneen kalenteriajan perusteella arvioida projektin kustannukset.

Toteutunut vauhti näkyy ylläolevassa etenemiskuvaajassa keltaisella. Esimerkkinä olevassa projektissa kehitystiimi on kyennyt tuottamaan ominaisuuksia melko tasaisella tahdilla. Toteutuneen vauhdin pohjalta on sitten laskettu ennuste tiimin keskimääräisestä vaudista ja sen virhemarginaalista. Ennustettua vauhtia kuvaa ohut harmaa viiva oranssin virhemarginaali alueen sisällä. Esimerkistä näkyy virhemarginaalin kasvaminen mitä kauenmmas tulevaisuuteen yritetään ennustaa. Tässä burnup-kuvaajassa on ennusteessa otettu huomioon myös tiedossa olevat lomat ja sen takia ennuste on lähes suora viiva heinä-elokuussa (piste 4).

Etenemiskuvaaja on siis erittäin helppo ja visuaalinen tapa havainnoida projektin etenemistä. Etenemiskuvaajan hyviin puoliin kuuluu lisäksi se, että sen saa nykyään ulos lähes kaikista sähköisistä ketterän kehityksen työkaluista ja se on helppo piirtää taululle käsin tarpeen vaatiessa.

Voiko vauhtia käyttää tehokkuuden mittarina?

Tiimin vauhti

Ketterässä kehityksessä käytetään useasti käsitettä vauhti (velocity) tulevaisuuden ennustamiseen. Mikä tämä vauhti on ja voisiko sitä käyttää tiimin tehokkuuden mittarina? Lyhyesti sanottuna vauhti on ennustamisen työkalu ei tehokkuuden mittari. Tästä syystä vauhtia voi käyttää ainoastaan tulevaisuuden ennustamiseen eikä sitä voi käyttää kuvaamaan tehokkuutta millään asteella. Miksikö sitten? Jos kerran vauhti hidastuu niin eikös se ole paha asia?

Oleellista on ymmärtää ensin miten tiimin vauhti määräytyy. Ensimmäinen kysymys on tietysti, että mikä on vauhdin yksikkö? Onko se tuntia, päivää tai kenties ideaalipäivää? Vastaus on, että ei mitään näistä. Vauhdin yksikköä kutsutaan monesti tarinapisteeksi (story point), mutta yksinkertaisesti kyseessä on tiimin kehittäjien hihasta heittämä vertailuluku, joka kertoo minkä kokoisia vaatimukset ovat suhteessa toisiinsa.

Suunniteltu ja toteutunut vauhti

Sprintin suunnittelussa tiimi valitsee työjonosta toteutettavakseen vaatimuksia. Tiimi päättää täysin itsenäisesti paljonko se kykenee seuraavan kahden viikon aikana toteuttamaan. Tämän arvauksen pohjalta saadaan suunniteltu vauhti, eli paljonko tiimi arvioi kykenevänsä toteuttamaan seuraavan sprintin aikana. Valittaessa vaatimuksia työjonosta ei valittavien vaatimusten määrää perusteta aikaisempien sprinttien vauhtiin vaan kyseessä on aina uusi arvio sen hetkisen parhaan mahdollisen tiedon pohjalta. Monesti suunniteltu vauhti on hyvin lähellä laskennallista vauhtia.

Tiimin toteutunut vauhti määräytyy sen perusteella kuinka paljon vaatimuksia on saatu toteutettua valmiiksi asti. Valmiit ominaisuudet ovat oikeasti valmiita ja testattuja, sellaisia jotka voisi viedä tuotantoon vaikka heti. Toteutunut vauhti voi heitellä monista eri syistä. Näitä voivat olla esimerkiksi ulkoiset riippuvuudet, laatuvelka, sairastumiset tai toteutumisvaiheessa havaittu vaatimuksen mutkistuminen tai yksinkertaistuminen.

Ulkoiset riippuvuudet

Ulkoinen riippuvuus voi olla esimerkiksi kolmannen osapuolen järjestelmä, jota vasten ei päästä testaamaan heti. Tämä voi johtua esimerkiksi siitä, että järjestelmän toimittaja ei kykene tarjoamaan tarvittavaan testiympäristöä tai oikeuksia kahden viikon sprintin aikana. Tällöin vaatimus jää työjonoon auki, eikä sen pisteitä lueta mukaan tiimin vauhtiin. Kun testaamiseen tarvittavat ympäristöt ja oikeudet sitten lopulta saadaan kirjautuvat valmiit tarinapisteet siihen sprinttiin, jossa tarina lopulta saatiin valmiiksi. Toinen vaihtoehto on myös uudelleen arvioida seuraavan sprintin suunnittelussa jäljellä olevat pisteet vaatimuksista joita ei saatu valmiiksi. Tällöin pisteitä ”katoaa” koska osa työstä on jo tehty, mutta  seuraavassa sprintissä vauhtiin lasketaan vain jäljellä olleet pisteet.

Laatuvelka

Toinen yleinen tapaus joka aiheuttaa vauhdin laskemista väliaikaisesti on teknisen velan kertyminen. Ketterässä kehityksessä lähdetään siitä, että bugit korjataan välittömästi, eikä niitä jätetä työjonoon priorisoitavaksi. On kuitenkin melko yleistä varsinkin uudella tiimillä, että kaikki sprintiin otetut vaatimukset pyritään saamaan valmiiksi hinnalla millä hyvänsä. Saadakseen asiat nopeammin valmiiksi tiimi tinkii yleensä huomaamattaan laadusta, jolloin työjonoon kertyy bugeja eli tekemätöntä työtä. Tekemättömälle työlle ei koskaan anneta työmääräarviota, koska se pitää tehdä välittömästi pois alta, jotta se ei ala kertymään. Tällöin voi käydä esimerkiksi niin, että seuraavaan sprinttiin tulee valtava määrä bugeja edellisestä sprintistä ja näiden korjaaminen on pois uusien vaatimusten toteuttamiselta. Keskimäärin näiden kahden sprintin vauhti antaa siis kelvollisen ennusteen siitä paljonko tiimi saa aikaan suuressa määrässä tulevia sprinttejä.

Vaatimuksen mutkistuminen tai yksinkertaistuminen

Työmäärä arviointiin pyritään käyttämään kohtuullisen vähän aikaa, koska siihen käytetty aika on pois vaatimusten toteuttamiselta. Tästä syystä melko useastikkin käy niin, että yksinkertaiselta näyttänyt vaatimus mutkistuu huomattavasti kun sitä aletaan toteuttamaan. Tämä on erityisen yleistä  kun siirrytään uuteen vähän tuntemattomaan kokonaisuuteen. Tällöin vauhti putoaa verrattuna suunniteltuun kun asiat osoittautuvat monimutkaisemmiksi kun miltä ne ovat näyttäneet. Tämä kuitenkin tasoittuu seuraavissa sprinteissä kun tiimi oppii miten uuden kokonaisuuden kanssa tulee toimia ja uudelleen pisteyttää vaatimuksia uuden parhaan mahdollisen tietonsa pohjalta.

Voisiko vauhtia käyttää tehokkuuden mittarina?

Kiusaus käyttää vauhtia tehokkuuden mittarina on yleensä varsin suuri johtajilla, jotka eivät ymmärrä mikä vauhti on ja mitkä ovat sen rajoitteet. Vauhtia ei yksinkertaisesti voi käyttää tehokkuuden mittarina, koska se on itsestään mukautuva. Itsestään mukautuva tarkoittaa sitä, että jos tiimin tehokkuus kasvaa kun tiimi oppii alkaa se myös arvioimaan vaatimukset pienempinä. Tästä syystä äkillinen tehokkuuden kasvu saattaa näkyä toteutuneessa vauhdissa piikkinä, mutta tasoittuu nopeasti pois kun jäljellä olevat vaatimukset  uudelleen pisteytetään uuden tiedon valossa. Tällöin se mikä aikaisemmin oli kahdeksan saattaa nyt olla kolme verrattuna muihin vaatimuksiin. Lopputuloksena vauhti tasoittuu taas takaisin lähelle pitkäaikaista keskiarvoaan.

Voisiko vauhtia käyttää tulospalkkauksen perusteena?

Jos vauhdista itsestään tekee tavoitteen esimerkiksi tekemällä siitä osan tulospalkkausta ampuu helposti itseään jalkaan. Koska tiimi määrittää itse pisteet ja paljonko se kykenee sprintissä toteuttamaan, voi se kertoa ääritilanteessa kaikki pisteet vaikkapa kymmenellä. Tällöin pisteet ovat edelleen vertailukelpoisia keskenään, mutta ne ovat kärsineet vakavasti inflaatiosta. Lisäksi jos vauhdin asettaa tavoitteeksi kannustaa se tiimiä ottamaan laatuvelkaa ja toivomaan, että se ei ehdi alkaa näkyä projektin aikana.

Mihin vauhtia voi sitten käyttää?

Vauhti on itsestään mukautuvuutensa ansiosta aivan loistava työkalu tulevaisuuden ennustamiseen. Käyttämällä sprinttien vauhdin keskiarvoa ennusteena siitä paljonko tiimi saa tehtyä vaikkapa seuraavan viiden sprintin aikana on varsin hyvä arvio. Koska vauhti saattaa heitellä paljonkin yksittäisten sprinttien välillä ei sitä voi käyttää kuin suuntaa antavasti seuraavan sprintin sisällön arvioimiseen. Viiden sprintin keskiarvo on kuitenkin heilahteluista huolimatta luultavasti hyvin lähellä historiallista keskiarvoa. Excel velhot voivat vauhtihistoriaa hyväksikäyttäen laskea melko hyvätkin tilastolliset ennusteet siitä millä todennäköisyydellä yhden sprintin suunniteltu laajuus saadaan toteutettua tai mitkä ovat todennäköisyydet viiden seuraavan sprintin tapauksessa.

Tulevaisuuden ennustamisessa melko yleinen keino on myös käyttää laskennallista vauhtia, joka ottaa huomioon arkipyhistä johtuvat työpäivien vaihtelut sprinteissä ja yksittäisten kehittäjien lomat. Laskennallisen vauhdin laskemisessa käytetään vauhtikerrointa (focus factor), joka on laskennallinen kerroin joka ottaa huomioon työpäivät ja tunnetut lomat. Kun vauhtikertoimella kertoo vauhdin keskiarvon saa vielä aavistuksen parempia ennusteita.

Esimerkki todelliselta tiimiltä

Tiimin vauhti merkinnöillä

Yllä oleva kuva on todellisen tiimin vauhtikuvaaja. Tiimi oli tässä vaiheessa työskennellyt vähän yli vuoden yhdessä ja kaikki sprintit olivat olleet kahden viikon mittaisia. Harmaa palkki kertoo tiimin sprintin suunnittelussa suunnitteleman laajuuden. Keltainen palkki kertoo toteutuneen vauhdin. Harmaa alue ilmaisee laskennallisen vauhdin ja sininen viiva kertoo tiimityytyväisyydestä.

Kohdassa 1 nähdään kun tiimi aloitti ja luonnollisestikkaan sillä ei ollut vielä mitään käsitystä siitä mitä se saa aikaan sprintissä. Tämän jälkeen nähdää kuitenkin heti, että jo sprintissä 2 vauhti asettui aika lähelle sen tulevaa keskiarvoa. Kohdassa 2 nähdään uuden tiimin yritys ottaa laatuvelkaa. Kohdassa 3 tiimi vaihtoi uuteen kokonaisuuteen, jolloin vaatimukset osoittautuivat monimutkaisemmiksi kuin oli etukäteen odotettu. Kohdassa 4 nähdään kuinka laskennallinen vauhti reagoi kesälomiin.

Kohdassa 5 voidaan nähdä, että suunniteltu vauhti kurottaa sprintistä 22 eteenpäin aina korkeammalle kuin toteutunut. On varsin tavallista, että vauhdin pudotuksen jälkeen tiimi yliarvio oman toteuttamiskykynsä. Lisäksi nähdään, että toteutunut vauhti on välillä yli laskennallisen ja välillä alle. Tämän ei sinänsä pitäisi olla mitenkään tavatonta kun ottaa huomioon, että laskennallinen perustuu määritelmän mukaan toteutuneen vauhdin keskiarvolle.

MSSQL error ”The specified network name is no longer available”

This problem has been bugging us for a long time. When you try to connect to Microsoft’s SQL Server using IP address with SQL Management studio you get this error:
A transport-level error has occurred when receiving results from the server. (provider: TCP Provider, error: 0 - The specified network name is no longer available.) (.Net SqlClient Data Provider)

When you dismiss the error it just keeps popping up time to time but otherwise everything seems to work. This is caused by the Management Studio attempting to connect to the SQL Server by the server name reported by the server. This can happen for example when your production environment is isolated from intranet and servers do not have fully qualified domain names.

However this is easy to fix, you just need to change the server name to correspond to the IP address of the server:

sp_dropserver <current name>;
sp_addserver 'a.b.c.d', local;

After this you need to restart the SQL Server’s instance and you are done. You can check that the new name set correcyly by running:

SELECT @@SERVERNAME

Miten varmistetaan, että tilaaja saa sovitulla hinnalla sen mitä on haluttu?

2015-09-02 17.27.01

Otsikon kysymys on kystty minulta useita kertoja ja vastaus on; ei mitenkään. Toisaalta myöskään kiinteissä toimitussopimuksissa sitä ei oikeasti voida taata. Tästä tunnettuna esimerkkinä HKL ja Siemensin metron automatisointiprojekti vuonna 2008. Eivät ne tiukat sopimukset ja lakimiehet vie sitä projektia eteenpäin vaan ainoastaan osaavat ihmiset, jotka kykenevät järjestelmän toimittamaan. Tiukka kiinteä sopimus ei auta, jos toimittajalla ei ole osaamista tai byrokratiaan menee enemmän aikaa kuin itse tekemiseen.

Ketterässä menetelmässä lähdetään siitä lähtökohdasta, että kaikki tekijä osapuolet ovat ihmisiä, kaikkine inhimillisine vikoineen. Parhaatkaan ammattilaiset eivät kykene tekemään täydellistä vaatimusmäärittelyä etukäteen. Ihmisten aivokapasiteetti ei yksinkertaisesti riitä. Jos kerran vaatimusmäärittelyäkään ei pysty tekemään täydellisesti, niin miten sitten tämän päälle tehty valmis toteutussuunnitelma? Ketterässä tekemisessä lähdetään siitä, että vaatimusmäärittelyä ja suunnitelmaa ei voi tehdä etukäteen inhimillisten rajoitusten vuoksi.

Ketterässä menetelmässä tiukka vaatimusmäärittely ja suunnitelma korvataan kommunikaatiolla asiakkaan kanssa. Parhaat tulokset saadaan kun asiakkaan edustaja ja kehitystiimi istuvat koko kehitysprojektin samassa huoneessa ja vierekkäin. Tämä takaa sen, että kommunikaatio toimii pakostikin, eikä synny vastakkain asettelua, vaan ollaan yhdessä tekemässä yhteistä projektia. Lisäksi ketterässä menetelmässä tarjotaan asiakkaalle jatkuvalla syötöllä selkeitä ennusteita ja mahdollisuutta tarkastella miten muutokset laajuuteen (eli vaatimuksiin) vaikuttavat toteutusaikatauluun, eli suoraan kustannuksiin.

Ketterää projektia tehdään käytännössä aina tuntihintaisena tällöin on varsin suoraviivaista ennustaa paljonko tunteja halutulla budjetilla saa. Kun asiakkaalle lisäksi tarjotaan koko aika selkeät työkalut siihen, että hän näkee mihin jäljellä olevat rahat vielä riittävät, niin projekti ei oikein voi epäonnistua mitenkään. Käytännössä säädetään siis vaatimuksia niin, että budjetilla saadaan paras mahdollinen tuotos, mitä sillä on mahdollista saada. Alkuperäinen kysymys on itseasiassa asenteellinen ja väärä, koska se kysyy imperfektissä mitä on haluttu. Oikeampi kysymys on, että miten taataan, että tilaaja saa jäljellä olevalla budjetilla sen mitä halutaan tämän hetken parhaalla mahdollisella tiedolla?

Tämän lisäksi kehitystiimi toimittaa kahden viikon välein julkaisukelpoisen version järjestelmästä ja jos tilaaja ei ole tyytyväinen tiimin työskentelyyn niin hän voi päättää sopimuksen omalta puoleltaan milloin tahansa ja etsiä uuden kumppanin, tai palata vesiputouskehitysmalliin. Lisäksi hyväksymistestausta ei tehdä projektin lopussa vaan parasta olisi, että asiakkaalla olisi toimittaa henkilö hoitamaan hyväksymistestausta päivittäin tiimin kanssa, jolloin lopussa ei tule enää yllätyksiä.

Muokattu 4.3.2021: Korjattu kirjoitusvihreitä ja yksinkertaistettu lauserakenteita.

Scrum- ja lean-terminologia ja sanasto suomeksi

Lekmannin blogissa on melko hyvä sanasto scrum-terminologiasta suomeksi. Lekmannin blogissa oleva sanasto on sovittu yhdessä suomen merkittävimpien scrum-kouluttajien kanssa. En ole kuitenkaan löytänyt pätevää suomalaista sanastoa jossa olisi myös lean-sanasto mukana. Postauksen alussa on kopio suoraan Lekmannin blogista ja postauksen loppupuolella on Lean-sanastoa. Päivittelen omia listojani sitä mukaa kun törmään termeihin joille kaipaan käännöstä tai kun joku ehdottaa parempaa käännöstä.

Scrum

Tämä on suoraan Lekmannin blogista. Hakasuluissa olevat ovat omia vaihtoehtoisia käännöksiäni, eivätkä siis edusta virallista käännöstä:

Alkuperäinen termiSuositeltu suomennos
Scrumscrum
Product Backlogtuotteen kehitysjono
Sprint Backlogsprintin kehitysjono
Backlog Itemkehitettävä asia / kehitysjonon kohta
Product Backlog Refining
(ent. grooming)
tuotteen kehitysjonon työstö
User Storykäyttäjätarina
Tasktehtävä
Incrementtuoteversio
Orderjärjestys / järjestää
Forecastennuste / ennustaa (sprintin tuottama toiminnallisuus)
Product Ownertuoteomistaja
Development Teamkehitystiimi
Scrum Masterscrummaster
Scrum Teamscrumtiimi (ts. tuoteomistaja, kehitystiimi ja scrummaster)
Servant Leaderpalveleva johtaja (ts. scrummaster)
Stakeholdersidosryhmä
Sprintsprintti / [pyrähdys]
Sprint Planningsprintin suunnittelu
Daily Scrumpäiväpalaveri
Sprint Reviewsprintin katselmointi
Sprint Retrospectivesprintin retrospektiivi
Sprint Burndown Chartsprintin edistymiskäyrä [vähenevä edistymiskuvaaja]
Product Burndown Charttuotteen edistymiskäyrä [vähenevä edistymiskuvaaja]
Sprint Goalsprintin tavoite
Donevalmis
Readyvalmisteltu (tehtäväksi)
Eventtapahtuma
Artifacttuotos
Rolerooli
Impedimenteste
Time-Boxaikaraja
Velocityvauhti
Focus Factorvauhtikerroin
Refactoringrefaktorointi

Lisäksi lisäisin tähän sanastoon vielä seuraavat omat käännökseni:

Alkuperäinen termiEhdotettu suomennos
Definition of DoneValmiin määritelmä
Definition of ReadyTyöstövalmiin määritelmä
Release definition of doneJulkaisuvalmiin määritelmä
Agile ManifestoKetterän ohjelmistokehityksen julistus
EpicEepos
Burnup chartKasvava etenemiskuvaaja
Impact mappingVaikutuskartta
Story mappingTarinakartta
Cross-functionalMonitaitoinen
Self-organizingItseohjautuva

Lean

Nämä termit olen yrittänyt itse kerätä kasaan eri lähteistä. Näihin voi ehdottaa muutoksia ja päivittelen niitä tähän blogipostaukseen sitä mukaan kun joku keksii tai tietää parempia. Tavoitteena on välttää fingelskaa aina kun se on mahdollista ja tarkoituksenmukaista.

Alkuperäinen termiEhdotettu suomennos
Empirical Process Controlempiirinen prosessinohjaus
Defined Process Controlmääritelty prosessinohjaus
Push ja pulltyöntö- ja imuohjaus
Iterativetoistuva
Incremantallaajeneva
Muda / Wastehukka
Eliminating wastehukan karsiminen
 Activitytoiminta
 Value adding activity arvoa lisäävä toiminta
 Non-value adding activity arvoa lisäämätön toiminta
 Muri / Overburden Ylikuormitus
 Mura / Unnecessary variation Tarpeeton vaihtelu

Näin kilpailutat ketterän julkisen IT-hankkeen

Scrum Diagram (Wikimedia Commons)

Laadi lista asioista joita järjestelmällä pitää voida tehdä

Vaikka ohjelmistoa tehdään ketterin menetelmin tarvitsee toimittajan saada jonkinasteinen kuva siitä miten laajasta projektista on kyse.  Kirjoita lista yksinkertaisia lauseita kuten: ”Kansalainen voi lähettää hakemuksen sähköisesti”, ”Käsittelijä voi tutustua kansalaisen hakemukseen tehdäkseen sen pohjalta päätöksen” tai ”Käsittelijä tekee päätöksen joka lähetetään tiedoksi kansalaiselle”. Listaa lisäksi projektin reunaehdot kuten: ”Kansalaisen on voitava käyttää hakemuksen täyttämiseen yleisimpiä nettiselaimia” tai ”Järjestelmän täytyy täyttää lain asettamat vaatimukset sähköisestä arkistoinnista”. Älä takerru yksityiskohtiin sillä ketterässä kehityksessä vaatimuslista voi muuttua lennossa projektin aikana. Järjestelmän toimittaja tarvitsee listan saadakseen karkean kuvan projektin koosta voidakseen tarjota oikean kokoista tiimiä. Listan pituuden pitäisi olla enintään sata vaatimusta.

Vaadi toimittajaa sitoutumaan ketterään kehitykseen

Vaadi, että toimittaja käyttää yleisesti tunnettua ketterää mallia kuten Scrumia. Vaadi tarjouksen liitteeksi projektiin sidottavien kehittäjien CV:t. Projektilla täytyy myös olla täysipäiväinen Scrum Master. Scrum Masterilla täytyy olla vähintään kaksi vuotta kokemusta Scrum Masterina toimimisesta. Certified Scrum Professional -sertifikaatti on tästä pätevä osoitus. Certified ScrumMaster tai Professional Scrum Master todistaa ainoastaan, että henkilö on käynyt kahden päivän kurssilla. Scrum Master on ketterän kehityksen erityisasiantuntija, joka hallitsee ketterän kehityksen koukerot ja pitää huolen siitä, että ketterät periaatteet eivät ole vain paperilla. Mikäli tulevan tiimin koko on alle neljä henkilöä saattaa olla perusteltua, että Scrum Master ei ole täysipäiväisenä projektissa.

Lisäksi vaadi, että toimittajan lupaamat henkilöt on sidottu vähintään 90%:sti vain sinun projektiisi koko projektin ajan. Mikäli toimittaja haluaa vaihtaa henkilöitä kesken projektin olet oikeutettu saamaan korvaavan henkilön työskenetelmään vähintään ensimmäiset kaksi viikkoa ilmaiseksi. Vaadi myös, että sinulla on oikeus haastatella ja hylätä projektiin siirtyvät henkilöt ilman selittelyjä.

Sitoudu itse ketterään kehitykseen

Varmista omasta organisaatiostasi, että teillä on yksi henkilö joka on vastuussa projektista. Tämän henkilön pitää tuntea ongelma jota ollaan lähdössä ratkaisemaan, sekä hänellä pitää olla päätäntävalta tehdä päivittäisiä linjauksia ilman ohjausryhmiä tai komissioita. Lisäksi tämän henkilön pitää olla valmis viettämään koko projektin aika toimittajan kehittäjien ja Scrum Masterin kanssa samassa tilassa. Jos projektista vastaavalla henkilöllä ei ole aiempaa kokemusta ketterästä kehityksestä on järkevää lähettää hänet Certified Scrum Product Owner-kurssille, jossa ketterän kehityksen perusteet, sekä häneltä vaadittavat asiat tulevat selväksi.

Järjestä kehitystiimille tilat omalta toimistoltanne

Kun halutaan toimia ketterästi tällöin päätöksiä on tehtävä nopeasti ja läheskään kaikkea ei ole dokumentoitu paperille. Tällöin on äärimmäisen tärkeää, että projektista vastaava henkilö istuu kehitystiimin kanssa samassa tilassa. Tämä vähentää merkittävästi kehittäjien kynnystä kysyä epäselvissä tilanteissa, sekä parantaa tiedonkulua omaan organisaationne. Parasta on jos voitte järjestää kehitystiimille oman huoneen omalta toimistoltanne. Tällöin kehitystiimi on lähellä niitä ihmisiä joiden ongelmaa ratkotaan. Tämä helpottaa kysymistä ja kommunikaatiota silloin kun täytyy selvittää jotain niiltä ihmisiltä, jotka järjestelmää oikeasti tulevat käyttämään ja tuntevat nykyiset prosessit. Vaadi myös, että tiimin on myös työskenneltävä tarjoamassanne tilassa, eikä etätöitä sallita. Tiimitilasta ei ole hyötyä, jos kehitystiimi istuu kotona tai omalla toimistollaan.

Suojaa selustasi vaatimalla yksipuolinen irtisanomisoikeus

Vaadi toimittajilta yksipuolinen irtisanomisoikeus ilman perusteita ja sanktioita. Mikäli sinä haluat irtisanoa sopimuksen milloin tahansa koska sinusta tuntuu, että et ole tyyväinen, sinulla on siihen oikeus. Toimittajalla on ketterien menetelmien puolesta velvollisuus esitellä sinulle toimivaa järjestelmää vähintään kerran kuukaudessa. Vaikka tiimi ei voikkaan esitellä sinulle koko järjestelmää ensimmäisen kuukauden jälkeen, voi se esitellä ne ominaisuudet mitä on siihen mennessä saatu aikaan. Mikäli tiimi ei pysty esittelemään toimivaa järjestelmää vähintään kerran kuukaudessa tai yrittää selitellä, että järjestelmää ei voi esitellä ennenkuin se on kokonaan valmis on aika vaihtaa toimittajaa. Myös mikäli tuntuu siltä, että tiimi piilottelee sinulta jotain tai esitellyt versiot ovat toistuvasti niin bugisia, että niitä ei voi käyttää niin tällöinkin on tullut aika vaihtaa toimittajaa.

Älä vaadi tyhmiä asioita

Älä vaadi toimittajalta 10 vuoden kokemusta juuri sellaisten järjestelmien tekemisestä kuin mitä olette tarvitsemassa. Varsinkin jos toimittaja on iso talo niin se voi listata kymmeniä projekteja jotka vastaavat sitä mitä olette haluamassa, mutta kehitystiimissä ei välttämättä ole yhtään henkilöä joka olisi ollut näitä tekemässä. Toisinsanoen ihmiset osaavat asioita eivät yritykset. Älä myöskään vaadi kohtuuttomia liikevaihto vaatimuksia yrityksiltä. Mitä pienempiä yrityksiä olet valmis huolimaan toimittajaksi sitä parempia tarjouksia luultavasti saat. Suuret talot joutuvat pyörittämään suurta koneistoa vaikka sinun näkökulmastasi ainoa oleellinen asia on ne henkilöt joita projektissa tulee työskentelmään.

Kilpailuta tiimin tuntihinta

Koska vaatimusmäärittelyyn ei tuhlata aikaa etukäteen, ei toimittajaa voi vaatia sitoutumaan kiinteisiin hintoihin missään projektin osissa. Ketterässä projektissa sinä kannat käytännössä riskin, jolloin toimittaja voi myös tarjota huomattavasti tiukemman tuntihinnan kuin kiinteähintaisessa projektissa. Tiimi laskuttaa käytänössä tehtyjen tuntien mukaan kaikesta mahdollisesta mitä projektin tekemiseen tarvitaan. Vaadi toimittajalta arviota myös tarvittavista lisenssikustannuksista. Jos projektissa käytetään valmisjärjestelmää tai komponentteja pohjana voivat nämä kustannukset olla merkittäviä. Yleensä lisenssikustannukset tulevat maksettavaksi vasta kun järjestelmä otetaan tuotantokäyttöön. Kehittäjien työkalujen lisenssikustannukset sisältyvät tuntihintaan.

Vältä toimittajaloukku

Vaadi toimittajalta, että projektissa käytetään ainoastaan komponentteja ja valmisjärjestelmiä joihin kaikilla toimittajailla on tasapuolinen pääsy. Toimittajan oma järjestelmä jota käytetään pohjana saattaa kuulostaa houkuttelevalta, mutta aiheuttaa suuria ongelmia mikäli toimittajaa joutuu vaihtamaan. Vaadi siis, että järjestelmässä käytetään ainoastaan kolmannen osapuolen valmiskomponentteja. Jos toimittajan komponentteja kuitenkin käytetään varmista, että sinulla on niiden lähdekoodiin täydet oikeudet, jotta voit siirtää projektin uudelle toimittajalle tarvittaessa.

Pisteytä tarjoukset järkevin perustein

Pisteytä tarjoukset ensisijaisesti CV:iden ja toissijaisesti hinnan perusteella. Kiinnitä erityisesti huomiota kehittäjien kokemukseen ja osaamisen laaja-alaisuuteen. Kokeneet kehittäjät tulevat nopeasti halvemmaksi kuin halvat ja kokemattomat. Älä kuitenkaan anna lisäpisteitä yli viiden vuoden kokemuksesta. Se mitä kehittäjä on tehnyt yli viisi vuotta sitten on jo jokatapauksessa vanhentunutta. Anna sen jälkeen miinus pisteitä tarjouksille mikäli niistä ilmenee seuraavaa:

  1. Toimittaja tarjoaa jotain osakomponenttia kiinteähintaisena
  2. Toimittaja yrittää myydä projektiin mukaan erikseen projektipäällikön
  3. Toimittaja tarjoaa projektiin erikseen vastuullista arkkitehtiä
  4. Tiimin kokoonpano vaihtelee toimittajan suunnitelmissa projektin aikana
  5. Tarjottu Scrum Master on kokematon
  6. Toimittaja esittää vaihtelevan pituisia sprinttejä
  7. Toimittaja ei halua lähettää kehittäjiään sinun toimitiloihisi
  8. Tarjouksessa mainitaan erillinen hyväksymistestausvaihe
  9. Tarjouksessa määritellään sanktioita tai ehtoja toimitussopimuksen purkamiseksi

Hanki osaavaa apua ja varo lakimiehiä

Osta osaamista ketterältä valmentajalta, Agile Coachilta, tai muulta kokeneelta henkilöltä tai yritykseltä, joka ei ole mukana tarjouskilpailussa. Maksamalla muutaman tonnin etukäteen konsultaatiosta säästät helposti paljonkin aikaa ja rahaa projektin myöhemmissä vaiheissa. Mikäli tarvitset lakiosaston apua varmista, että heillä on erityisosaamista ketterästä kehityksestä. Jos organisaation oma lakimies yrittää tehdä vesitiivistä sopimusta hän luultavasti päätyy vaatimaan perinteistä koko projektin kilpailutusta kiinteällä tai tavoite hinnalla, sekä tarkempaa vaatimusmäärittelyä. Etsi tässä tapauksessa toinen lakimies joka ymmärtää ketterän kehityksen päälle eikä vain yritä tehdä asioita niin kuin on aina ennenkin tehty.

It-järjestelmän toteuttavat ihmiset eivätkä yritykset

Tämän päivän Helsingin Sanomissa Karoliina Liimatainen kirjoittaa It-järjestelmien tilaamisen olevan taitolaji. Karoliinan näkemykset avoimista rajapinnoista oikean suuntaisia, mutta keskittyvät väärään ongelmaan valtion ja kuntien it-järjestelmien toimitusongelmista. It-hankintojen tärkemmäksi ydinongelmaksi nimetään kommunikaatio tilaajan ja toimittajan välillä sekä se, että tavoitteita ei ole selkeästi kirjoitettu sopimukseen. Tästä suurimmasta ydinongelmasta kumpuaa suurin virhekäsitys siitä mikä on pielessä it-järjestelmähankinnoissa.

It-järjestelmiä tilataan valtion, kuntien ja yritystenkin puolesta edelleen kuin ne olisivat massatuotettavaa tavaraa jolle määritellään piirrustukset ja sitten kilpailutetaan edullisin rakentaja. Tämä väärinkäsitys kumpuaa oletuksesta, että it-järjestelmä olisi kuin talo jolle määrittelijät tekevät konsultin kanssa piirrustukset ja sen jälkeen on aivan sama kuka sen rakentaa. It-järjestelmä on kuitenkin aina yksilöllinen taideteos jonka lopulliseen muotoon vaikuttavat merkittävästi enemmän sen toteuttavat ihmiset kuin yritys jolta se tilataan. Lisäksi vaatimusmäärittely on aina vajaavainen, koska niitäkin tekevät ihmiset, eikä kukaan yksinkertaisesti voi hahmottaa etukäteen  mikä on oleellista ja mikä ei.

Suurilla tietojärjestelmien toimittajilla kuten Tiedolla, CGI:llä, Fujitsulla, IBM:llä ja Accenturella on organisaatioina kyky vastata raskaisiin tarjouskilpailuihin kuten Liimatainenkin toteaa. Tämä ei kuitenkaan muuta sitä tosiasiaa, että sillä ei ole juurikaan väliä kuka toimittajaksi valitaan jos ei katsota niitä ihmisiä jotka projektissa tulevat työskentelemään. Lopulta it-järjestelmän onnistuminen on eniten kiinni siitä miten taitavat ihmiset sitä saadaan tekemään ja tämä ei koske pelkästään ohjelmoijia vaan koko organisaatiota joka tulee työskentelmään projektissa kuten projektipäälliköitä, arkkitehtejä, käytettävyyssuunnittelijoita ja tiimin vetäjiä.

Tietysti onnistunut projekti vaatii osaamista myös tilaajan puolelta, mutta paljon enemmän on kiinni siitä, että keskitytään tuottamaan toimivia osia pienissä paloissa, jolloin tilaaja voi jatkuvasti arvioida meneekö projekti oikeaan suuntaan. Parhaita tuloksia saataisiin varmasti, jos it-järjestelmiä alettaisiin tilaamaan ketterin perustein. Tällöin tilaaja haastattelisi ja etsisikin parhaat ihmiset toteuttamaan ratkaisuja vaatimuksiin sen sijaan, että yritetään saada projektin taakse mahdollisimman suuri yritys jota voidaan syyttää jos jotain menee pieleen. Tällöin tilaajalla pitää kuitenkin olla oikeus nähdä tiimien tulokset vähintään kuukauden välein ja mahdollisesti katkaista sopimus halutessaan ilman irtisanomisaikaa. Tämä varmistaisi, että toimittaja joutuu sopimuspykäliin tuijottamisen sijasta vakuuttamaan tilaajan joka kuukausi siitä, että projekti menee oikeaan suuntaan ja laadusta ei tingitä. Toimittajan mahdollisesta vaihtamisesta toki aiheutuu hieman hidastumista, mutta jos ohjelmisto on tehty hyvin sen tekijän voi aina vaihtaa. Tämä olisi varmasti myös tilaajan etu.

Hää- ja juhlatilat yhdessä paikassa

Hää- ja juhlatilat yhdessä paikassa juhlat.net

juhlat.net etusivu

Ensivuoden puolella pitäisi järjestää häät ja niitä varten pitäisi löytää sopiva tila. Tämä ei kuitenkaan ole ihan simppeliä, koska kaikki juhlatiloja koskeva informaatio on hajallaan eri vuokraajien sivuilla. Insinöörin aivoillani sitten pusersin perjantain ja lauantain aikana kasaan palvelun, josta juhlatiloja voi etsiä ja suodattaa. Tähän saattoi mennä aavistuksen enemmän aikaa kuin vastaavan excelin pyöräyttämiseen, mutta näin tämä oli kiinnostavampaa. Lista tiloista löytyy siis osoitteesta http://juhlat.net.