Ketterän tuotekehityksen opas
Digitaalinen palvelu toteutetaan ketterän kehityksen ja tuoteajattelun keinoin. Oppaasta löydät tuoteomistajalle keskeiset vinkit toteutuksen ohjaamiseen ja tuoteomistajan tehtäviin ja työkaluihin ketterän ohjelmistokehityksen aikana.
Tällä sivulla
- Mitä on ketterä tuotekehitys?
- Ketterän ohjelmistokehityksen aloittaminen
- Kehitystiimin arki
- Ketterän kehityksen menetelmät
- Onko Jira ja Confluence hallussa?
- Sinua voisi kiinnostaa
Mitä on ketterä tuotekehitys?
Ketterä tuotekehitys on lähestymistapa, jonka avulla voit toteuttaa digitaalisia palveluita tehokkaammin. Sen tarkoituksena on nopeuttaa ohjelmistokehitysprosessia, varmistaa asiakashyöty ja sopeutua paremmin muuttuviin vaatimuksiin.
Tuoteajattelu on lähestymistapa, jonka avulla digitaalisia palveluja voidaan toteuttaa ja hallita kokonaisuutena, yksittäisten ominaisuuksien sijaan. Tuoteajattelu tähtää palvelun vaikuttavuuteen ja toteutuksen tavoitteellisuuteen. Tuotteen ensisijainen tarkoitus on tuottaa arvoa asiakkaalle, ratkomalla jotakin arjen haastetta. Tuoteajattelu varmistaa, että toteutetun tuotteen ominaisuudet vastaavat asiakkaiden tarpeisiin.
Esimerkiksi Helsingin kaupungilla hel.fi-tuoteperhettä johdetaan tuoteajattelun avulla. Kaupungilla on valtava määrä erilaisia palveluja ja asiakkaita, joiden tarpeisiin hel.fi-sivuston tulee vastata. Tuoteajattelun avulla tunnistetaan ominaisuustarpeiden kaupunkiyhteinen minimitoteutus ja suunnataan kehittäminen käyttökokemuksen kannalta tärkeimpiin kokonaisuuksiin.
Palvelun kehittämistä johtaa tuoteomistaja.
Tuoteomistajan ydintehtäviä ovat tuotevision muodostaminen ja palvelun ominaisuuksista ja sisällöistä koostuvan kehitysjonon priorisointi. Roolissa on keskeistä moninaiset vuorovaikutussuhteet mm. johdon, sidosryhmien, kehitystiimien ja asiakkaiden kanssa. Roolin tehtävänä on tehdä päätöksiä käytännön tasolla: mitä tavoitteita asetetaan, mikä on tärkeää, mitä tehdään ensin, ja mikä on riittävän hyvä. Tuoteomistaja ohjaa monialaista kehitystiimiä kohti minimi- eli MVP-toteutusta ja vastaa myös palvelun jatkuvasta kehittämistä.
Tuoteomistajan rooli kehittyy kaupungilla. Erityisesti digitaalisten palvelujen kehittäminen vaatii tuoteomistajan roolin. Henkilö, joka käytännön tasolla vastaa palvelun kehittämisen ohjaamisesta, on tuoteomistajaroolissa, vaikka nimikkeenä olisikin esimerkiksi projektipäällikkö.
Palvelun kehittämisen eri vaiheissa tuoteomistajalla on tukenaan kehitystiimi, johon tyypillisesti kuuluu eri alojen osaajia mm. hankinnoista, palvelumuotoilusta, käyttöliittymäsuunnittelusta, ICT-arkkitehtuurista ja ohjelmistokehityksestä.
Ketterässä toteutusvaiheessa kehitystiimin roolit varmistavat ohjelmistokehityksen tehokkuuden. Scrum master eli scrummari on kehitystiimin valmentaja, jonka tehtävään kuuluu kehityssprinttien tapahtumien vetäminen ja kehitysjonon jalostamisen tuki. Usein scrummarilta saa apua myös kehityksen työkalujen (Jira ja Confluence) hyödyntämiseen.
Ohjelmistokehittäjien ja muotoilijoiden yhteistyön hiominen on tärkeä onnistumisen edellytys toteutusvaiheessa. Helsingin kaupungin parhaat käytännöt liittyvät uusien ominaisuuksien kuljettamiseen suunnittelusta toteutukseen.
Kehitystiimissä tarvitaan usein myös arkkitehtia tai teknologia-asiantuntijaa isompien tuotevalintojen tueksi. Saavutettavuuden varmistamiseksi kehitystiimin kannattaa tuoda viikottain saavutettavuusasiantuntijoille tuotoksia arvioitavaksi.
Ketterän ohjelmistokehityksen aloittaminen
-
1Valitse minimitoteutukseen tulevat osat
Minimitoteutuksen suunnittelussa varmistetaan, että kokonaisuudesta toteutetaan ensin sen kokoinen osa, joka on merkityksellinen käyttäjälle ja vastaa hänen tarvettaan niin hyvin, että hän on valmis käyttämään palvelua muiden palveluiden sijaan. Toisaalta minimitoteutus suunnitellaan mahdollisimman pieneksi, jotta se voidaan toteuttaa nopeasti ja käyttäjien tarpeeseen vastaamaan.
Valitse käyttäjätarinakartalta ne toiminnallisuudet, jotka täyttävät edellä mainitun.
-
2Muodosta kehitysjono
Perusta Jira-projekti viimeistään tässä vaiheessa. Käytä kaupungin pohjaa, se auttaa sinua luomaan kehitysjonon oikealla tavalla.
Jirassa on kolme tasoa kuvata tehtävää työtä. ”Epic” on ylätason toiminnallisuuskokonaisuus, jolla kuvataan käyttäjälle ja liiketoiminnalle muodostuvaa hyödyllistä kokonaisuutta. Tämä ylätason kuvaus tarkennetaan purkamalla se ”Storyiksi” tai ”Taskeiksi”. Storyihin kuvataan käyttäjätarinamuodossa ne osat palvelusta, jotka ovat selkeästi käyttäjälle näkyviä. Taskeja käytetään silloin, kun kyse on käyttäjälle näkymättömästä toteutettavasta asiasta. ”Sub-task” on kolmas taso, jota käytetään yleensä silloin, kun tiimi suunnittelee toteutustapaan liittyviä yksityiskohtia. Tämä taso kannattaa jättää vapaaksi sprintin valmisteluvaiheessa käytettäväksi.
Jokaisella tehtävällä on hyvä olla auki kirjoitettu hyväksyntäkriteeri; mistä tiedämme, että tehtävä on toteutettu siten, että se vastaa käyttäjän tarvetta? Tai jos on kyse teknisestä käyttäjälle näkymättömästä asiasta, niin mikä on se kriteeri jota vasten tämän tehtävän valmiuden astetta pitää arvioida.
Yksittäisten tehtävien hyväksyntäkriteerien lisäksi sopikaa se määritelmä, joka kaikkien kehitysputken läpi kulkevien tehtävien pitää täyttää. Valmiin määritelmä (”DoD” eli Definition of Done) kuvaa esimerkiksi, miten työ pitää dokumentoida, miten koodi pitää testata, miten versioita pitää hoitaa jne.
-
3Kokoa toteutustiimi
Tarvitset teknisen tiimin toteuttamaan suunnitelmat. Toteutustiimin kannattaa olla osaamiseltaan sellainen, että se pystyy tekemään kaikki mimimitoteutuksessa tarvittavat asiat. Toteutustiimi valmistelee myös työt, jotka liittyvät ympäristöjen pystyttämiseen, tietokantarakenteisiin ja muihin teknisiin vaatimuksiin. Tarvitset toteutusvaiheeseen myös käyttöliittymäsuunnittelijoita.
Kannattaa pyrkiä siihen, että tekninen tiimi on täysipäiväisesti tekemässä palveluasi. Jotkin roolit saattavat olla sellaisia, joihin ei tarvita kokopäiväisen henkilön työpanoksen määrää. Mieti silloin, voiko jollain tiimin jäsenellä olla tämä rooli sen verran kuin tarvitaan, ja voisiko hän tehdä muita kehittämiseen tarvittavia asioita muun osan ajastaan. Esimerkiksi arkkitehtirooli tai käyttöliittymäsuunnittelija voi olla tällainen.
Tiimin hankit parhaiten käyttämällä valmiiksi neuvoteltuja puitesopimuksia. Ennen hankintaa varmista, että olet tehnyt kaikki tätä edeltävät pelikirjassa kuvatut toimet ja olet valmistautunut hyvin niin tuotejonon kuin oman ajankäyttösi osalta.
Pidä valmisteluvaihe lyhyenä ja tiiviinä ja siirry sitten toteutukseen. Vältä liikaa hiomista, muuten ei mikään edisty tai valmistu.
Kehitystiimin arki
Kun kehitystiimi aloittaa ketterän toteutuksen, panosta erityisesti toimintatapojen hiomiseen. Kun kehitystiimin arki rullaa, toteutus on nopeaa ja vaikuttavaa.
- Tee tiimisi kanssa työtapasopimus
- Kirjaa palvelun dokumentaatio Confluenceen
- Käynnistä sprinttitapahtumat ja kehitä tiimin toimintatapoja
- Ohjaa palvelun toteutuksen laatua ja suuntaa
- Seuraa toteutuksen etenemistä ja työn tehokkuutta
- Julkaisuvalmistelut ja palvelun määräystenmukaisuus
- Laadi suunnitelma jatkuvalle kehittämiselle
Tee heti aluksi tiimin kanssa sopimus rooleista ja työtavoista. Näin varmistat, että kaikki tietävät, miten on tarkoitus toimia. Muistakaa palata työtapoihin säännöllisesti ja sopikaa muutoksista, jos ne ovat teistä tarpeen. Sovitut asiat pysyvät hyvin mielessä, jos esim. tulostatte ne huoneentauluksi seinälle.
Sopikaa ja laittakaa kalenteriin ne ajanjohdat, jolloin teette työtä yhdessä. Näin varmistatte aloittavana tiiminä, että kaikkia kehittämiseen tarvittavia asioita, niin kehittämistä kuin sitä tukevia tehtäviäkin, edistetään kehityssyklin aikana.
Ketterää työtapaa käytetään silloin, kun ei ole ennalta täysin selvää, miten jokin asia kannattaa toteuttaa. Asiakas on viime kädessä se taho, joka määrittelee miten hyvin toteutus on onnistunut. Tästä seuraa se, että haluatte tiiminä kysyä asiakkailta mahdollisimman usein palautetta. Ja jotta voisitte kysyä palautetta usein, teidän pitää toteuttaa toimivia järjestelmän osia usein.
Kahden viikon syklit tehtynä ”scrum-menetelmää” noudattaen ovat hyvä lähtökohta. Tämä tarkoittaa sitä, että tiimi valitsee kahden viikon välein mitä tehdään seuraavaksi ja myös sitä, että kahden viikon välein on luontevaa ottaa asiakkaalta palautetta. Kaikkia asiakkaita ei tähän välttämättä tarvitse osallistaa näin usein, mutta miettikää se tapa, jolla saatte aitoa palautetta auttamaan työjonon priorisointia ja muita päivittäisiä päätöksiä silmällä pitäen.
Sprintin työjonolle valitaan sprint-suunnittelussa sen verran työtä, kuin tiimi uskoo pystyvänsä sprintin aikana toteuttamaan. Varautukaa varsinaisen kehittämisen lisäksi myös tekemään työjonon jalostamista. Tämä on tuoteomistajan vastuulla, mutta koko tiimin osaaminen kannattaa ehdottomasti käyttää tähän työhön.
Tiimin on tarkoitus tuottaa palvelun omistajalle hyötyä nopeilla sykleillä. Esitelkää omistajalle, mitä teitte jokaisen syklin jälkeen. Kysykää häneltä palautetta ja toimikaa seuraavan syklin suunnittelussa palautteen vaatimalla tavalla.
Samalla tavalla, kun haluatte saada asiakkaalta ja omistajalta palautetta palvelun toimivuudesta, haluatte miettiä tiimin kesken omien työtapojenne toimivuutta. Käyttäkää työmääräarvioita ja seuratkaa miten hyvin pystytte ennustamaan ennen sprinttiä paljonko tiiminä saatte työtä tehdyksi. Arvioikaa arviointinne tarkkuutta, seuratkaa miten tiimin tehokkuus ja ennustettavuus paranee.
Arvioikaa säännöllisesti, sprinttien jälkeisissä retrospektiiveissä miten työskentely sujui. Mikä toimi, mitä tulee korjata. Pitäkää toimivat asiat ja nostakaa korjattavia asioita työjonolle samanarvoisiksi tekemisiksi, kuin asiakkaalle tehtävät toiminnallisuudet.
Mitatkaa ainakin työmääräarvioiden toteutumista. Kuinka paljon tiiminä arvioitte yhdessä sprintissä ehtivänne tehdä ja mikä oli todellisuus. Katsokaa myös sprintiltä toiselle jatkuvaa trendiä, kehityttekö tiiminä.
Yleisesti mitatkaa vain sellaisia asioita, joiden mittaamisen jälkeen aiotte tehdä päätöksen. Jos mittaamisen taustalla ei ole päätöksentekoa, mittaaminen on usein toiminnan kehittämisen kannalta hukkaan heitettyä aikaa.
Ketterän kehityksen menetelmät
Kehitystiimin arjen toimintatapojen ja prosessien lisäksi ketterän kehityksen menetelmät ja työpohjat auttavat tuoteomistajaa ja kehitystiimiä jatkuvasti parantamaan työskentelyä.
Hyödynnä käyttäjätarinakarttaa välineenä, kun hahmotat kehittämäsi palvelun kokonaisuutta ja kun rajaat toteutuksen eri versioita, kuten minimituotteen.
Käyttäjätarinakartta palvelee tuoteomistajaa kokonaisuuden ymmärtämisessä ja siitä tuotteen julkaisuversioita kuten minituotetta rajattaessa. Se auttaa myös kommunikaatiossa eri projektiryhmien välillä yksikön johdosta kehittäjiin.
Ideana on lyhyesti kuvata palvelun käyttäjien käyttötarpeet käyttöpolkuina palvelun läpi ja jaotella jokainen käyttöpolun askel sen jälkeen eritasoisiin teknisiin toteutuksiin, yksinkertaisin ylös ja monimutkaisin alimmaiseksi. Sen jälkeen palvelun eri versioita voidaan rajata esim. vetämällä vaakaviiva kaikkien käyttäjän askelien ylimmän eli karkeimman toteutuksen alle ja päättämällä että tämä muodostaa minimipalvelun.
Käyttäjätarinakartan voit rakentaa joko:
- Kortteina työskentelytilan seinälle,
- PowerPoint-muodossa (Käyttäjätarinakartta-työpohja pptx) (vaatii hel.fi-tunnukset),
- Confluence Whiteboardsissa, jonka sivupohjista löytyy valmiiksi “Käyttäjätarinan kaavio” tai
- Yhteistyöskentelyalusta Mirossa, josta löytyy sille kaksi eri pohjaa (templates -> haku ”user story mapping)
Kun tarvitset apua näiden työkalujen käyttöönotossa, ota yhteyttä Kehittämisen tukeen.
Retrospektiivit eivät ole yleensä suoraan tuoteomistajan velvollisuus, koska yleensä niiden pitämisestä huolehtii tiimissä Scrum Master. On kuitenkin tuoteomistajan vahva etu, että retrospektiivit pidetään, koska niiden varassa on tiimin toimintatapojen parantaminen. Alla olevat vinkit voi siis toimittaa tiimin Scrum Masterille tai ottaa itse käyttöön esimerkiksi laajemmissa kehitysprojekteissa.
Retrospektiivien perussäännöt
- Pidä retrot säännöllisesti, mielellään jokaisen kehityssyklin jälkeen.
- Tunnista aina ainakin yksi parannuskohde ja varmista, että se tulee tehtyä. Kovin montaa parannuskohdetta ei kannata olla työn alla yhtä aikaa.
- Jos retrot eivät tunnu toimivan, etsi syy ja ratkaisu tilanteen korjaamiseen. Älä lopeta retrojen pitämistä – ne ovat se tapa, jolla kehitytään
Alla on tyypillisiä retrojen haasteita ja parannuskeinoja niihin. Retrospektiiviohjeet antavat vinkkejä retron vetämiseen ja haasteiden ratkaisemiseen. Huom! Tyypillisesti retroja vetää tiimin Scrum Master. Sinun on kuitenkin hyvä olla hereillä siitä, että jatkuvaa toimintatapojen parantamista tapahtuu.
Hyväksymistestausta tehdään sitä mukaa, kun tiimi saa toteutettua toiminnallisuuksia. Tuoteomistaja on suuressa roolissa hyväksymistestauksessa, mutta myös muuta organisaatiota voidaan osallistuttaa testaamaan. Testaaminen ei siis ole jotain, joka tapahtuu lopuksi, vaan sitä tehdään jatkuvasti ja siihen kannattaa varautua jo ennen kehittämisen aloittamista. Ohessa lista asioista, joita on hyvä ottaa huomioon:
- Varmista, että saat käyttäjien tarpeen kiinni jo projektin alussa, määrittelyvaiheessa
Tämä on tärkeää, jotta voitte sitten testata vastaako toteutettu palvelu aidosti käyttäjien tarpeeseen (sen sijaan, että toteutettu toimii teknisesti täydellisesti, mutta ei vastaa tarpeeseen). - Kirjoita tarve käyttäjätarinoihin ja varmista, että Jiran tiketeillä on hyväksyntäkriteerit
Hyväksymiskriteerien tulee aidosti kuvata niitä perusteita joilla hyväksymistestaus tullaan sitten aikanaan hyväksymään tai hylkäämään. Tämä auttaa kehittäjiä tekemään käyttäjälle toimivaa järjestelmää. - Suunnittele mitä asioita testataan missäkin vaiheessa
Jos järjestelmäsi on laajempi, harkitse kannattaisiko sitä testata ja julkaista käyttäjille osa kerrallaan. Kehittämisen tiekarttaa auttaa myös tämän testauksen jaksottamisessa. - Varmista, että hyväksyntätestaukselle löytyy tekijät ja että heillä on oikeasti aikaa tehdä testaus
Testaajilla on hyvä olla ainakin perusymmärrys siitä miten testattavan palvelun tulisi toimia ja pääsy yhteisiin hyväksymiskriteereihin. - Käy testaajien kanssa läpi se miksi testataan ja miten testaus tulee toteuttaa, jotta sen tuloksiin voidaan luottaa
Selkeät testien kuvaukset ja helppo raportointi auttaa laadukkaaseen tulokseen, mutta on hyvä varmistaa myös testaajien laadukas ja systemaattinen toiminta. - Varmista että hyväksymistestauksen tehtävät ovat selkeästi kuvattu ja että testatut asiat on helppo kuitata käsitellyiksi
Suunnittele tehtävät siten, että ne kattavat järjestelmän toiminnan niin kattavasti, että testauksen jälkeen voidaan luotettavasti päättää voidaanko järjestelmä ottaa käyttöön. Kiinnitä myös huomiota siihen, että korjaustarve on helppo kuvata ja kohdentaa oikeaan toiminnallisuuteen (Xray voi olla työkalu tähän Jirassa, mutta myös Excel-lista voi olla ihan toimiva ratkaisu). - Varmista että se ympäristö, jossa testaus tehdään, mahdollistaa kaiken tarvittavan testauksen
Usein tuotantoympäristössä on enemmän dataa ja suurempi skaala. Pyri siihen, että testausympäristö on tarpeeksi tuotantoympäristön kaltainen. Varmista myös, että testausta tekevillä henkilöillä on pääsy ympäristöön ja tarvittava tuki. - Sovi tunnistettujen ongelmien korjauksen prosessi ja se miten nämä uudelleen testataan käyttäjien toimesta
Varsinkin laajemmissa järjestelmissä tämä on usein tarpeen. Sopikaa myös miten päätetään, että ollaan saavutettu tavoiteltu laatutaso. - Dokumentoi testauksen tulokset ja mahdolliset muut huomiot testaajilta
Dokumentoi huolellisesti testauksen ympäristö, testaajien käyttämät koneet ja selaimet yms. Mikäli tuotantoon siirtyessä testauksesta huolimatta ilmenee ongelmia, näin voidaan helpommin palauttaa ne tilanteet, joissa toimivuus todennettin. Testauksen hyvä dokumentointi helpottaa myös jatkokehitystä ja sen testaamista.
Onko Jira ja Confluence hallussa?
Tutustu ketterän kehityksen työkalujen ohjeisiin, jotta saat Jirasta ja Confluencesta parhaan irti.