Hajautettu ohjelmistokehitys Lean-näkökulmasta: tapaustutkimus hukkatekijöistä Paula Mäenpää Helsinki 23.9.2011 Pro gradu -tutkielma HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET UNIVERSITY OF HELSINKI Tiedekunta Fakultet Faculty Laitos Institution Department Matemaattis-luonnontieteellinen Tekijä Författare Author Paula Mäenpää Tietojenkäsittelytieteen laitos Työn nimi Arbetets titel Title Hajautettu ohjelmistokehitys Lean-näkökulmasta: tapaustutkimus hukkatekijöistä Oppiaine Läroämne Subject Tietojenkäsittelytiede Työn laji Arbetets art Level Aika Datum Month and year Sivumäärä Sidoantal Number of pages Pro gradu -tutkielma 23.9.2011 96 sivua Tiivistelmä Referat Abstract Lean-losoan mukaan asiakkaalle tuotetaan oikea tuote oikeaan aikaan, tehokkaasti, joustavasti ja ilman arvoa tuottamatonta toimintaa eli hukkaa. Tutkielmassa tarkastellaan, missä määrin kehitystyö hajautetussa ympäristössä voi olla Lean-periaatteiden ja -päämäärien mukaista. Ongelmaa lähestyttiin analysoimalla, minkälaisia hukkia tutkimuskohteena olleessa hajautetussa projektissa ilmeni ja oliko työnkulku tehokasta. Tutkielman materiaalina hyödynnettiin kirjallisuuslähteitä. Lisäksi tutkielmaa varten suoritettiin empiirinen tapaustutkimus Software Factory -kurssilla talvella 2011. Tutkimusaineisto kerättiin havainoimalla työskentelyä ja haastattelemalla ohjelmistokehittäjinä työskennelleitä yliopistoopiskelijoita. Projekti oli hajautettu maantieteellisesti kahteen pisteeseen: A ja B. Tavoitteena oli tuottaa asiakkaalle protoversio uudesta mobiilisovelluksesta. Projekti oli sekä asiakkaan että opiskelijoiden näkökulmasta onnistunut: tuote valmistui ajallaan ja oppimiskokemus oli kaikille positiivinen. Tutkielman mielenkiinnon kohteena ei ole kuitenkaan projektin menestys, vaan tarkastelun kohteena ovat työtapojen ja työnkulun tehokkuudet. Tutkielmassa havaitaan, että projektissa ilmeni erilaisia hukkia. Osa hukista oli tiimiläisistä riippumattomia, mutta suurin osa oltaisiin voitu ehkäistä tai poistaa. Tarkemman analyysin kohteeksi valittiin yhteistoimintaongelmat, jotka liittyvät hukkaan tehoton kommunikaatio. Tutkielmassa havaitaan myös, että työnkulkua olisi ollut mahdollista optimoida yhteisiä käytäntöjä noudattamalla. Tapaustutkimuksen tulokset vahvistavat tutkimusten tuloksia tehokkaan kommunikaation ja yhteistoiminnan tärkeydestä hajautetuissa projekteissa. Heikkolaatuinen ja riittämätön yhteydenpito aiheuttaa erilaisia hukkia, kuten ylimääräisiä ominaisuuksia ja virheitä toteutettavassa sovelluksessa sekä turhaa odottelua eri pisteiden välillä. Kaikki hukat on tärkeää tunnistaa ja poistaa, mutta ilmeisesti juuri tehoton kommunikaatio aiheuttaa eniten muita hukkia hajautetuissa projekteissa. ACM Computing Classication System (CCS): D.2 [Software Engineering] Avainsanat Nyckelord Keywords Lean, hajautettu ohjelmistokehitys, hukka, kommunikaatio, yhteistoiminta Säilytyspaikka Förvaringsställe Where deposited Muita tietoja övriga uppgifter Additional information ii Sisältö 1 Johdanto 1 1.1 Tutkimustilanteen kartoitus . . . . . . . . . . . . . . . . . . . . . . . 2 1.2 Tutkimuskysymykset . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.3 Tutkielman rakenne . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2 Teoriatausta 2.1 2.2 2.3 3 Hajautettu ohjelmistokehitys . . . . . . . . . . . . . . . . . . . . . . . 4 2.1.1 Hajautettu ohjelmistokehitys käsitteenä . . . . . . . . . . . . . 5 2.1.2 Keskitetystä hajautettuun kehitykseen . . . . . . . . . . . . . 6 2.1.3 Hajautuksen organisointi . . . . . . . . . . . . . . . . . . . . . 7 2.1.4 Etuja hajautetussa ohjelmistokehityksessä . . . . . . . . . . . 8 2.1.5 Uhat hajautetussa ohjelmistokehityksessä . . . . . . . . . . . . 11 Lean-losoa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.2.1 Toyota Production System . . . . . . . . . . . . . . . . . . . . 14 2.2.2 Lean-losoan periaatteet . . . . . . . . . . . . . . . . . . . . 15 2.2.3 Lean-periaatteet ohjelmistotuotannossa . . . . . . . . . . . . . 16 2.2.4 Seitsemän Lean-pääperiaatetta ohjelmistotuotannossa . . . . . 17 2.2.5 Hukka: arvoa tuottamaton toiminta . . . . . . . . . . . . . . . 22 2.2.6 Tutkielmassa tarkasteltavat hukat . . . . . . . . . . . . . . . . 23 2.2.7 Lean-käsitteet hajautetussa ympäristössä . . . . . . . . . . . . 28 Ketterä kehitysmalli 2.3.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . Perinteinen ja ketterä ohjelmistokehitysprosessi . . . . . . . . 32 33 iii 2.3.2 Scrum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 2.3.3 XP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 2.3.4 Agile manifeston arvojen ja Lean-periaatteiden yhteys . . . . . 38 2.3.5 Ketterät käytännöt kommunikaatio-ongelmien ratkaisuna . . . 40 3 Kokeellinen tutkimus 41 3.1 Miten ongelmaa tutkitaan . . . . . . . . . . . . . . . . . . . . . . . . 41 3.2 Tutkimuskohteen esittely . . . . . . . . . . . . . . . . . . . . . . . . . 42 3.3 Tiedon keräämisen välineet . . . . . . . . . . . . . . . . . . . . . . . . 44 4 Empiiriset tulokset 4.1 4.2 4.3 4.4 45 Tiimien työskentelytavat . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.1.1 Prosessimalli . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.1.2 Kanban-menetelmä . . . . . . . . . . . . . . . . . . . . . . . . 48 Työtapojen tehokkuus . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2.1 Projektissa ilmenneet hukat . . . . . . . . . . . . . . . . . . . 50 4.2.2 Yhteistoiminta ja kommunikaatio projektissa . . . . . . . . . . 55 Arvovirtauksen tehokkuus . . . . . . . . . . . . . . . . . . . . . . . . 70 4.3.1 Työnkulku koko projektin ajalta . . . . . . . . . . . . . . . . . 71 4.3.2 Yhden tehtävän työnkulku . . . . . . . . . . . . . . . . . . . . 71 Projektin onnistuminen . . . . . . . . . . . . . . . . . . . . . . . . . . 72 5 Johtopäätökset 5.1 50 Empiiriset tapaustutkimuksen tulokset 74 . . . . . . . . . . . . . . . . . 74 iv 5.2 5.1.1 Työtapojen tehokkuus 5.1.2 Arvovirtauksen tehokkuus 5.1.3 Hajautetun projektin Lean-näkökulma 5.3 . . . . . . . . . . . . . . . . . . . . 78 79 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 Ehdotus hajautettujen projektien tarkistuslistaksi . . . . . . . 80 Tutkimuksen rajoitukset . . . . . . . . . . . . . . . . . . . . . . . . . 6 Yhteenveto 6.1 75 . . . . . . . . . . . . . Suosituksia 5.2.1 . . . . . . . . . . . . . . . . . . . . . . Jatkotutkimuksen aiheita . . . . . . . . . . . . . . . . . . . . . . . . . Lähteet Liitteet 1 Sanasto 2 Haastattelukysymykset 85 86 88 89 1 1 Johdanto Hajautettu ohjelmistokehitys on nykyään arkipäivää suurissa yrityksissä. Syitä keskitetystä hajautettuun ohjelmistokehitykseen siirtymiseen on useita, joista ylivoimaisesti suurin motiivi on taloudellisen hyödyn tavoittelu. Hajautukseen voidaan myös joutua, jos asiakas vaatii yrityksen kehittämiskeskuksen siirtämistä kotimaahansa. Hajautuksen edut ja uhat riippuvat usein katsantokannasta. Lean-losoa on lähtöisin autoteollisuudesta toisen maailman sodan jälkeen. Alun perin nimellä Toyota Production System tunnettu losoa kehitettiin teollisuuden tarpeisiin laadullisten prosessien ja tuottavuuden parantamiseksi. Tärkeimmät teemat ovat vain tilattujen tuotteiden valmistaminen ja niiden toimittaminen juuri oikeaan aikaan ja tuotannon keskeyttäminen välittömästi häiriötilanteissa. Tuotantotapa perustuu aktiiviseen arvoa tuottamattoman toiminnan eli hukan tunnistamiseen ja poistamiseen. Samoja periaatteita voidaan soveltaa myös ohjelmistoteollisuudessa. Nykypäivän suosituimpia ketteriä kehitysmalleja sekä keskitetyssä että hajautetussa ohjelmistokehityksessä lienevät Scrum ja eXtreme Programming. Leankirjallisuudessa niiden hyödyntämistä suositellaan perinteisten prosessimallien sijaan, koska perinteisissä kehitysmalleissa ei pystytä reagoimaan nopeasti asiakkaan muuttuviin vaatimuksiin, jolloin hukan ehkäiseminen vaikeutuu. Lean-ohjelmistokehitys on usein ketterää kehitystä. Tutkielmassa analysoidaan hajautetussa CoT-projektissa ilmenneitä hukkia ja arvovirtauksen tehokkuutta sekä pohditaan niiden merkittävyyttä. Tässä luvussa kartoitetaan nykyinen tutkimustilanne ja esitellään tutkimuskysymykset ja tutkielman rakenne. 2 1.1 Tutkimustilanteen kartoitus Hajautettua ohjelmistokehitystä käsittelevää tutkimusta on tehty paljon. Yrityksille on esitetty suosituksia, kuinka maantieteellisesti eri pisteisiin hajautettuja projekteja tulee hallinnoida erilaisin kehitysmallein. Usein suositellaan hyödynnettäväksi Scrum-prosessimallia tai vähintään joitakin sen menetelmiä. Joidenkin lähteiden mukaan tarvitaan myös perinteisistä kehitysmalleista tuttua muodollisuutta, jotta eri pisteissä sijaitsevat tiimit ovat kontrolloitavissa. Myös Lean-ohjelmistokehityksestä on tehty tutkimusta jo jonkin aikaa. Leanlosoan mukaan ohjelmistoprojektia tulisi hallinnoida ketterin kehitysmallein, sillä perinteiset kehitysmallit ovat joustamattomia ja raskaita. Tutkimuskohteet ovat useimmissa tapauksissa olleet projekteja, joissa ohjelmistokehittäjät työskentelevät samassa tilassa. Hajautusta ja Lean-ohjelmistokehitystä on tutkittu yleensä erillisinä teemoina. Tässä tutkielmassa pyritään selvittämään, voidaanko nämä teemat yhdistää menestyksellisesti, eli voiko kehitystyö hajautetussa ympäristössä olla Lean-periaatteiden mukaista. 1.2 Tutkimuskysymykset Tutkielman lähteinä käytetään tutkielmassa käsiteltyä kirjallisuutta. Lisäksi tutkielmaa varten suoritettiin empiirinen tapaustutkimus. Tutkimuksen kohteena oleva ohjelmistoprojekti CoT järjestettiin talvella 2011 Software Factory -kurssilla. CoTprojektiin liittyvä sanasto löytyy liitteestä 1. Tutkielmassa pyritään selvittämään, missä määrin kehitystyö hajutetussa ohjelmistokehityksessä voi olla Lean-periaatteiden ja -päämäärien mukaista. Kysymystä analysoidaan tarkastelemalla työskentelivätkö tutkimuskohteen projektilaiset te- 3 hokkaasti ilman turhia hukkia ja kuinka tehokkaita projektin arvovirtaukset olivat. Tehokkuus arvioidaan projektitiimien ja asiakkaan näkökulmasta. Tutkimuskysymykset on esitetty GQM-paradigman (Goal-Question-Metric) mukaisesti taulukossa 1. 1. Analyysi Hajautettu ohjelmistokehitys 2. Jotta voidaan Löytää hukkaa 3. Mitä tulee 1. Työtapojen tehokkuus 2. Arvovirtauksen tehokkuus 4. Näkökulma Projektitiimit ja asiakas 5. Asiayhteys Hajautettu ohjelmistoprojekti CoT 6. Motivaatio Toteutuuko Lean Taulukko 1: Tutkimuskysymysten GQM-kehys [Bas93]. 1.3 Tutkielman rakenne Tutkielma on jaettu kuuteen osaan: johdanto, teoriatausta, kokeellinen tutkimus, empiiriset tulokset, johtopäätökset ja yhteenveto. Rakenne on havainnollistettu kuvassa 1. 2 Teoriatausta Tässä luvussa tarkastellaan tutkielman kannalta oleellisia käsitteitä. Hajautettua ohjelmistokehitystä voidaan hallinnoida esimerkiksi ketterin kehitysmallein (agile software development) ja Lean-periaatteita soveltaen. Ketterä ohjelmistokehitys tar- 4 Kuva 1: Tutkielman rakenne. koittaa tässä yhteydessä joukkoa kehitysmalleja, joille kaikille on yhteistä muun muassa iteratiivisuus, suora kommunikaatio ja toimivan ohjelmiston ensisijaisuus. Näitä käytäntöjä soveltavia kehitysmalleja on useita, joista yleisimmät ovat Scrum ja eXtreme Programming (XP). Lean-periaatteita noudattaen ohjelmistokehityksestä pyritään muokkaamaan mahdollisimman paljon arvoa tuottava prosessi. Luvussa 2.1 käsitellään hajautettua ohjelmistokehitystä ja luvussa 2.2 esitellään Lean-losoan mukainen ohjelmistotuotanto. Lopuksi luvussa 2.3 tarkastellaan yleisimpiä ketteriä kehitysmalleja. 2.1 Hajautettu ohjelmistokehitys Ohjelmistokehityksen hajauttaminen ei ole uusi ilmiö. Hajautettuja projekteja on ollut jo vuosikymmenten ajan. Globalisaatio yhdessä vaativamman kilpailun kanssa on osaltaan painostanut ja jopa pakottanut monia yrityksiä siirtymään entistä enemmän hajautettuun ohjelmistokehitykseen. Hajautetut projektit ovat nykyisin taval- 5 lisia varsinkin suurissa globaaleissa yrityksissä. Koska kommunikaatiovälineet ovat kehittyneet, eri aikavyöhykkeillä työskenteleminen ei aiheuta enää yhtä merkittäviä ongelmia kuin ohjelmistokehityksen alkuaikoina, jolloin hajautus oli vielä harvinaista. 2.1.1 Hajautettu ohjelmistokehitys käsitteenä Ohjelmistokehityksen hajautus on monitasoinen käsite. Se voidaan jakaa Prikladnickin et al. [PAD07] mukaan neljään luokkaan, jotka riippuvat projektin maantieteellisestä sijainnista ja omistajuudesta. Projekti on maantieteellisesti joko lokaali (onshore tai Distributed Software Development, DSD) tai globaali (oshore tai Global Software Developmet, GSD). Lokaalissa projektissa kehitystyö tapahtuu siinä maassa, jossa yrityksen päämaja ja muut toiminnot sijaitsevat. Globaalissa kehitystyössä hyödynnetään ulkomaisia resursseja siirtämällä osia kehitystyöstä pois yrityksen kotimaasta. Omistajuudella tarkoitetaan joko palveluiden ulkoistamista toiselle yritykselle (outsourcing) tai yrityksen omien resurssien hyödyntämistä (insourcing). Taulukossa 2 on kuvattuna nämä jaottelut. Lokaali (DSD) Osta Luo Globaali (GSD) Lokaali Globaali ulkoistaminen ulkoistaminen Lokaali, yrityksen Globaali, yrityksen omat resurssit omat resurssit Taulukko 2: Hajautetun ohjelmistokehityksen jaottelu eri luokkiin. Kun kyse on globaalista projektista, pelkän fyysisen etäisyyden lisäksi tulee huomioida myös ajallinen ja sosiokulttuurinen etäisyys [Åge06]. Henkilöiden ajallinen etäisyys estää tosiaikaisen kanssakäymisen. Sosiokulttuurinen etäisyys estää henkilöitä ymmärtämästä toisensa arvoja ja normatiivisia käytäntöjä. 6 Hajautetussa ohjelmistokehityksessä on paljon samoja ongelmia kuin keskitetyssä kehityksessä. Näitä ovat esimerkiksi heikko ohjelmistojen laatu, aikataulujen pettäminen ja kustannusarvioiden ylittyminen [Koa07]. Parnas [ÅgF06] on tullut tutkimuksessaan samaan tulokseen ja tarkentaa, että ilmiöt johtuvat kommunikaatioongelmista. 2.1.2 Keskitetystä hajautettuun kehitykseen Yritykset haluavat siirtyä hajautettuun ohjelmistokehitykseen useista syistä [Paa10, PAD07]. Näistä suurin osa liittyy taloudellisten etujen tavoitteluun. Jotkin seikat jopa pakottavat yrityksiä siirtymään hajautettuun kehitysmalliin. Globaalin yrityksen valtavia resursseja voidaan hyödyntää tehokkaammin jakamalla projekti eri maihin. Esimerkiksi jokaiselle projektille voidaan valita sopivimmat henkilöt osaamisen mukaan, kun henkilöstön sitouttaminen ei ole maantieteellisestä sijainnista riippuvaista. Prikladnick et al. [PAD07] lainaavat artikkelissaan IDC-raporttia, jonka mukaan globaalilla ulkoistamisella voidaan parantaa prosessia, kun toiminnot uudelleenorganisoidaan ja yhtenäistetään. Hajautuksella tavoitellaan usein kustannussäästöjä. Palkka- ja kehityskustannukset ovat eri maissa eri tasoisia. Kehitystyön osioita voidaan siirtää maihin, joissa kustannukset ovat kilpailukykyisemmät (Cost Competitive Countries). Kustannuksia voidaan jossain määrin säästää myös verotuksessa [MoH01], kun asiakkaana on jonkin valtion julkisen sektorin edustaja. Tällöin asiakas voi kuitenkin vaatia, että yrityksellä on kehittämiskeskus asiakkaan maassa. On tavallista, että yritykset fuusioituvat ja ostavat toisiaan. Hajautus on tällöin yrityksen sisäistä ja mahdollisesti globaalia. Jos eri pisteet toimivat itsenäisesti, yhteistyö niiden välillä saattaa Paasivaaran et al. [Paa10] mukaan olla jopa vaikeampaa kuin kahden eri yrityksen välillä. 7 Globaali hajautus tuo kehityksen lähemmäksi markkinoita ja asiakasta [Paa10]. Yrityksen on helpompi tutkia paikallisia markkinoita ja säädöksiä, jolloin ohjelmistoista saadaan paremmin asiakkaan tarpeita vastaavia. Hajautuksella pyritään nopeuttamaan kehitystyötä. Jos yrityksen omat henkilöstöresurssit ovat pienet, voidaan palkata esimerkiksi aliurakoitsija tekemään rinnakkaista kehitystyötä toisessa pisteessä. Kehitystyö voi olla hajautettu myös eri aikavyöhykkeille. Tällöin kehitystyön tuottavuutta voidaan Leen ja Yongin [LeY10] mukaan parantaa työskentelemällä ympärivuorokautisesti. Kilpailijaa nopeampi pääsy markkinoille on ehdoton kilpailuetu, josta seuraa lisäetuja maineen ja uusien tilausten muodossa. Yritys voi haluta keskittyä ydinosaamiseensa ja ostaa muun osaamisen toiselta yritykseltä. Toisaalta yritykseltä voi puuttua osaavaa henkilöstöä, jolloin palveluiden ostaminen toiselta yritykseltä saattaa olla turvallisempi ja nopeampi vaihtoehto kuin oman henkilöstön kouluttaminen. Aliurakoitsijan resursseja on myös helpompi karsia [Paa10]. Larman [Lar08, Lar10] on kirjoittanut isojen hajautettujen Scrum-projektien organisoimisesta. Hänen mukaansa isoa ohjelmistokehitystyötä ei kannata hajauttaa globaalisti useaan pisteeseen, vaikka se on mahdollista [Lar11]. Isojen järjestelmien kehittämiseen ei hänen mielestään tarvita paljon tiimejä. Useaan pisteeseen hajautettu kehitys ei ole erityisen organisoitunutta, vaikka hänen mukaansa niin usein luullaan. Siirtymistä suuriin globaaleihin hankkeisiin ei Larmanin mukaan tule tehdä kevein perustein. 2.1.3 Hajautuksen organisointi Menestyksekäs hajautettu projekti vaatii Ågerfalkin et al. [ÅgF06] mukaan erityisesti toimivaa koordinointia, kontrollia ja kommunikaatiota. Hajautetussa projek- 8 tissa on vaikeampi kommunikoida kuin yhteen pisteeseen keskitetyssä projektissa. Varsinkin globaalisti hajautetussa projektissa, joissa on usean tunnin aikaero eri pisteiden välillä, kommunikaation vaikeus korostuu entisestään. Toimiva kommunikaatio onkin osoittautunut yhdeksi tärkeimmistä huomioon otettavista asiosta hajautetuissa projekteissa. Rameshin et al. [RCM06] mielestä hajautettua ohjelmistokehitystä ei kannata yrittää hallita pelkästään perinteisellä tai ketterällä prosessimallilla. Tärkeintä heidän mielestään olisi löytää tasapaino eri kehitysmallien välillä. Tutkijoilla ei ole Batran et al. [BXV10] mukaan vielä yksimielisyyttä siitä, milloin ja miten näitä malleja tulisi hyödyntää keskenään. He tulivat tapaustutkimuksessaan siihen tulokseen, että tasapaino on saavutettavissa. Heidän mielestään sekä ketteryyttä että perinteiseen prosessimalliin liittyvää kontrollia tarvitaan, jotta saavutetaan tavoitellut päämäärät: ilman kontrollia ketteryys voi olla hajautetussa ympäristössä kaoottista ja toisaalta kontrolli ilman ketteryyttä voi aiheuttaa joustamattomuutta. Paasivaara et al. toteavat kahdessa eri tutkimuksessaan [PaL06, PDL08], että pieni hajautettu projekti voi olla menestyksekäs, jos siinä sovelletaan ketteriä menetelmiä, mutta isommat projektit vaativat vielä lisää tutkimusta. Viime vuonna julkaisemassaan teknisessä raportissa Paasivaara et al. [Paa10] tarjoavat konkreettisia ohjeita yrityksille hajautettujen projektien hallinnoimisesta ja organisoimisesta Scrum-kehitysmallin mukaisesti. Tässä tutkielmassa ohjeita käsitellään soveltuvin osin empiirisen tapaustutkimuksen yhteydessä. 2.1.4 Etuja hajautetussa ohjelmistokehityksessä Hajautuksella oletetaan olevan erilaisia etuja keskitettyyn kehitykseen verrattuna. Seuraavassa hajautetun ohjelmistokehityksen edut on jaoteltu lähteiden ja kirjoittajan oman näkemyksen mukaisesti osittain todettuihin ja ei todettuhin etuihin. Osit- 9 tain todettu etu on etu, jonka hyödyt on havaittu useassa lähteessä. Ei todettuja etuja on tutkittu vähemmän tai tutkimustulokset ovat ristiriitaisia. Osittain todetut edut Kehityskustannuksia voidaan vähentää palkkaamalla osa kehittäjistä halvemman palkkatason maista [Paa10]. Tämä toisaalta lisää kommunikaatio-ongelmia sekä vaikeuttaa ihmisten ja töiden koordinointia ja kontrollia [OHÅ06]. Voidaan lisäksi miettiä, kuinka kustannustehokasta on järjestää koulutusta useisiin maihin useilla eri kielillä. Kun osa kehitystyöstä on lähellä markkina-aluetta, tuote voidaan räätälöidä vastaamaan paremmin paikallisia markkinoita ja määräyksiä [OHÅ06, Paa10]. Toisaalta samalla täytyy huomioda sosio-kulttuuriset ongelmat, kun kehittäjiä on eri kulttuureista. Kun kehitystyö on lähellä asiakasta, voidaan tehostaa muun muassa vaatimusmäärittelyprosessia, jolloin tuote oletettavasti vastaa paremmin asiakkaan tarpeita. Jos ohjelmiston arkkitehtuuria ei voida jakaa suhteellisen itsenäisiin moduuleihin, voivat päällekkäisyydet aiheuttaa Mockusen ja Grinterin [HeG99] mukaan merkittäviä ongelmia tehtävien koordinoinnissa. Hajautus voi jopa pakottaa ohjelmiston arkkitehtuurin modulaarisuuteen. Conchúirin et el. [OHÅ06] mukaan kehitystyön modulaarisuus voi vähentää kommunikaatiotarvetta tiimien välillä, kun tehtävät on voitu jakaa itsenäisiksi osioiksi. Globaalit markkinat tarjoavat laajemmat työvoimaresurssit [Paa10]. Toisaalta saattaa olla vaikeaa löytää jokaisesta pisteestä juuri tietyt ammattilaiset tiettyihin tehtäviin [OHÅ06]. Kun kehitystyö on hajautettu maahan, jossa asiakas sijaitsee, tuote voidaan räätälöidä vastaamaan paikallisen kulttuurin erityispiirteitä. 10 Ei todetut edut Gumm [Gum07] tuli empiirisessä tutkimuksessaan siihen tulok- seen, että hajautus mahdollistaa työrauhan, joka lisää yksilön työpanoksen laatua. Kehittäjän työ ei häiriinny jatkuvien keskeytysten vuoksi, koska muodollista kommunikaatiota on vähemmän, kun kokouksia on hankalampi järjestää. Ihmiset käyttivät vähemmän aikaa kommunikoimiseen ja keskittyivät intensiivisemmin omaan työhönsä. Paasivaara et al. [Paa10] toteavat hajautetun kehitystyön nopeuttavan tuotteen markkinoille pääsyä. Heidän mielestään kehitystyötä nopeutetaan palkkaamalla lisää henkilöstöä toisesta maasta työskentelemään rinnakkain lokaalin tiimin kanssa. Toisaalta Herbslebin at al. [HMF01] mukaan monessa pisteessä työskentely kestää paljon kauemmin kuin keskitetty työskentely ja vaatii useamman henkilön työpanoksen saman laajuisen ja yhtä monimutkaisen tehtävän suorittamiseen. Kesto pitenee muun muassa viivästysten vuoksi. Lisäksi Conchúir et al. [OHÅ06] ovat sitä mieltä, että ympärivuorokautisella työskentelyllä, jossa tehtäviä välitetään eteen päin eri aikavyöhykkeiden välillä (follow-the-sun), ei nopeuteta kehitystyön syklien läpimenoaikaa vaan enintään joitakin osia siitä, kuten testausta. Kun projektissa on eri kulttuurin edustajia ja erilaisissa organisaatioissa työskennelleitä ihmisiä, on oletettavaa, että parhaita käytäntöjä ja innovatiivisuutta on enemmän. Vähäisen epämuodollisen kommunikaation vuoksi innovatiivisuuden ja parhaiden käytäntöjen jakaminen ei ole Conchúirin et al. [OHÅ06] mukaan kuitenkaan merkittävää. Hajautuksen edut on jaoteltu taulukossa 3 kahteen ryhmään: osittain todettu etu ja ei todettu etu. 11 Osittain todettu etu Kehityskustannusten minimointi Kehitys lähellä markkina-aluetta ja asiakasta Kehitystyön modulaarisuus Uudet ja isommat työvoimaresurssit Paikallisen kulttuurin erityisvaatimuksiin vastaaminen Ei todettu etu Työskentely rauhassa ja pienemmän paineen alla Projektin kesto kalenteriajassa lyhenee Parhaat käytännöt, innovatiivisuus Taulukko 3: Hajautetun kehityksen oletetut edut. 2.1.5 Uhat hajautetussa ohjelmistokehityksessä Hajautuksella katsotaan olevan myös uhkia. Seuraavassa esitellyt uhat on jaettu kolmeen ryhmään lähteitä ja kirjoittajan omaa arviointia käyttäen: ajallinen etäisyys, maantieteellinen etäisyys ja sosio-kulttuurinen etäisyys. Jaottelut ovat osittain hieman päällekkäisiä, sillä erityyppiset kommunikaatio-ongelmat liittyvät vahvasti jokaiseen kategoriaan. Ajallinen etäisyys Ajallinen etäisyys eri pisteiden välillä johtuu yleensä aikaerois- ta. Tällöin päällekkäisiä työtunteja on vähän tai ei ollenkaan. Aikaerot aiheuttavat kommunikaatio-ongelmia, kun vastausten odottelu aiheuttaa viivästyksiä. Kommunikaatio-ongelmat voivat aiheuttaa edelleen muita ongelmia, kuten väärinymmärrysten ja virheiden myöhäisen havaitsemisen. Herbslebin ja Grinterin [HeG99] mukaan laadukkaalla suunnitelmalla voidaan vähentää kommunikaatiotarvetta, kun 12 ohjelmiston arkkitehtuuri voidaan jakaa suhteellisen itsenäisesti suunniteltaviin moduuleihin. Globaaleissa projekteissa on usein paljon ajallisia riippuvuuksia, jotka vaikeuttavat resurssisuunnittelua ja heikentävät Lean-näkökulmastakin oleellista toimitusvarmuutta (on-time delivery) [HeG99]. Toimitusvarmuudella tarkoitetaan prosessin ja toimitusketjun tehokkuutta. Maantieteellinen etäisyys Cookin ja Nevillen [CoC05] mukaan maantieteellinen etäisyys kehittäjien välillä aiheuttaa merkittäviä yhteistoimintaongelmia. Hajautetun ympäristön yhteistyöongelmia tutkitaan omalla ohjelmistotuotannon alueellaan (Collaborative Software Engineering). Ohjelmistoarkkitehtuurin laadukas suunnitelma eli mitä suunnitellaan, ei Herb- slebin ja Grinterin [HeG99] mukaan yksinään riitä koordinoinnin toteuttamiseen, vaan on tärkeää tietää myös milloin, kuka, miten ja missä suunnitellaan. Tällöin projektin koordinointi on heidän mielestään paremmin hallittavissa. Jos ohjelmiston arkkitehtuurisuunnittelma ei ole tarpeeksi modulaarinen, voivat eri pisteissä suoritettavat työtehtävät riippua toisistaan merkittävästi. Ristiriitaiset olettamukset tehtävistä eri pisteissä säilyvät Herbslebin ja Grinterin [HeG99] mukaan kauemman aikaa hajautetussa kuin keskitetyssä ohjelmistokehityksessä. Maantieteellinen etäisyys vähentää epämuodollista kommunikaatiota, mikä edelleen heikentää ryhmähenkeä, luottamusta ja Mockusen ja Herbslebin [MoH01] mukaan jopa halua kommunikoida toisiin pisteisiin. Henkilö voi kokea hankalaksi selvittää, kehen ottaa yhteys, jolloin keskustelun aloittaminen voi tuntua työläältä. Toisissa pisteissä työskenteleviin ohjelmistokehittäjiin voi olla vaikea luoda suhdetta pelkkien sähköisten viestimien välityksellä. Epämuodollisen kommunikaation puuttuessa, kaikenlainen päivittäinen kans- 13 sakäyminen toisissa pisteissä työskentelevien henkilöiden kanssa jää oletettavasti vähemmälle. Tärkeäksikin koettu epämuodollinen tieto saattaa jäädä välittämättä toisaalle. Myös muodollista tietoa saattaa jäädä välittämättä. Kehitystyön modulaarisuus voidaan nähdä myös uhkana. Jos hajautetut tiimit työskentelevät liian itsenäisesti ilman riittävää kommunikaatiota, voi seurauksena olla ongelmia myöhemmässä ohjelmiston osien integrointivaiheessa [OHÅ06]. Globaaliin projektiin liittyy usein erilaisia lainsäädäntöjä eri maissa, jotka saattavat monimutkaistaa kehitystyöhön liittyvää byrokratiaa. Teknologioiden kehittyessä koko ajan, eri maissa vallitsevat infrastruktuurierot ja -puutteet pienenevät. Mockusen ja Herbslebin [MoH01] mukaan eri tasoiset verkkoyhteydet, kehitysympäristöt ja testauslaboratoriot aiheuttanevat kuitenkin edelleen joitakin ongelmia globaaleissa projekteissa. Sosio-kulttuurinen etäisyys Globaaleissa projekteissa kaikki eivät kommunikoi äidinkielellään. Sosio-kulttuuriset erot aiheuttavat kieliongelmien lisäksi kulttuurieroista johtuvia ongelmia, jotka vaikeuttavat kommunikaatiota. Toisessa kulttuurissa normaalina pidettyä käytöstä voidaan toisessa pitää loukkaavana. Koulutus- ja kokemuserot voidaan varovaisesti nähdä innovatiivisuuden ja parhaiden käytäntöjen lähteenä. Conchúir et al. [OHÅ06] ovat kuitenkin sitä mieltä, että saavutettu hyöty on minimaalinen, koska kasvotonta kommunikaatiota on vähän. Hajautetuissa projekteissa työskentelevät kehittäjät voivat myös kokea alemman palkkatason kehittäjät uhkina, joille ei haluta jakaa tietoa. Kokemuserot lisäävät oletettavasti myös kustannuksia, kun erilaiset prosessit ja työskentelytavat täytyy kouluttaa. Taulukossa 4 esitetyt uhat on jaettu kolmeen ryhmään: ajallinen etäisyys, maantieteellinen etäisyys ja sosio-kulttuurinen etäisyys. 14 Ajallinen Aikaerot Ajalliset riippuvuudet Maantieteellinen Projektin koordinointi ja kontrolli Työtehtävien riippuvuus toisistaan Vähäinen epämuodollinen kommunikaatio Tärkeän tiedon välittämättä jättäminen Kehitystyön modulaarisuus Lainsäädännöt Infrastruktuurin puutteet tai erot eri maissa Sosio-kulttuurinen Kulttuuri- ja kielierot Kokemus- ja koulutuserot Taulukko 4: Hajautuksen uhat. 2.2 Lean-losoa Raman [Ram98] määrittelee Lean-käytännön mukaisen toiminnan sellaiseksi, jossa oikeat asiat valmistetaan oikeassa paikassa oikeaan aikaan ensimmäisellä kerralla. Samalla vältetään turhaa työtä ja ollaan avoimia muutokselle. Womackin ja Jonesin [WoJ96b] mukaan Lean-periaatteita noudattamalla tehdään enemmän vähemmällä. Toisin sanoen Lean-päämääränä on tuottaa asiakkaalle arvoa mahdollisimman pienillä resursseilla. 2.2.1 Toyota Production System Toyota Production System (TPS) on toisen maailman sodan jälkeen autoyhtiössä Toyota Motor Corporation kehitetty tuotantojärjestelmä. Eiji Toyoda (1913 ) ja Taiichi Ohno (19121990) olivat huomanneet, ettei Japanin autoteollisuudessa voida 15 soveltaa kilpailijoilla käytössä olevia massatuotannon periaatteita. Prosesseja voitiin heidän mukaansa kuitenkin tehostaa vastaamaan kilpailijoiden tasoa. TPS-tuotantojärjestelmä perustuu Ohnon [Ohn88] mukaan täydelliseen hukan poistoon ja ehkäisyyn. Kaksi tärkeintä periaatetta ovat tuotannon keskeyttäminen välittömästi häiriötilanteissa (Jidoka, Stop-the-Line) ja vain tilattujen tuotteiden valmistaminen ja niiden toimittaminen juuri oikeaan aikaan (Just-in-Time, JIT). Tuotantoa pyritään jatkuvasti parantamaan laadultaan ja tuottavuudeltaan. TPS sai myöhemmin Womackin et al. [WJR90] kirjassa Changed the World, The Machine That nimen Lean. 2.2.2 Lean-losoan periaatteet Womack ja Jones [WoJ96a, WoJ96b] määrittelevät Lean-losoan viiden perusperiaatteen mukaiseksi: arvo (value), arvovirta (value stream), tasainen arvovirtaus (ow), imuohjaus (pull) ja täydellisyys (perfection, kaizen). Arvo määritellään aina asiakkaan tarpeen kautta. Esimerkiksi insinöörit ja asiantuntijat vääristävät arvoa lisäämällä tuotteeseen kompleksisuutta, jolla ei ole asiakkaan kannalta hyötyä. Arvovirta kuvaa kaikkia vaadittavia toimintoja, joilla asiakkaalle valmistetaan tuote. Kaikkien vaiheiden on kommunikoitava keskenään tai saatetaan tuottaa kaksoiskappaleita. Arvoa tuottavien toimintojen on edettävä tasaisesti. Yksiköt, jotka suorittavat yhtä tehtävää isoissa erissä, tulee poistaa prosessista. Tuotannonohjauksen tulee perustua imuohjaukseen, jolloin ei tuoteta mitään sellaista palvelua tai tuotetta, mitä asiakas ei ole vielä tilannut. Asiakas tässä yhteydessä tarkoittaa loppuasiakasta tai prosessin seuraavaa työvaihetta. Tähän liittyy tuotannonohjausstrategia JIT. JIT-periaatteella pyritään ehkäisemään turhia kus- 16 tannuksia, kuten tuotetun materiaalin varastointia. Jokaista valmistettua tuotetta kohden löytyy yksi tilaus, mikä tarkoittaa, että tehdään vain sitä, mitä asiakas pyytää ja vain silloin kun asiakas pyytää. Työntöohjaus (push) perustuu tilausten odotuksiin ja tällaista strategiaa tulee välttää. Täydellisen prosessin tavoittelu ei lopu koskaan: ajan lyhentäminen, kustannusten pienentäminen ja virheiden minimointi jatkuvat aina. 2.2.3 Lean-periaatteet ohjelmistotuotannossa Ramanin [Ram98] mielestä Lean soveltuu kaikkiin prosesseihin ja siten myös ohjelmistotuotantoon. Tätä alunperin teollisuudessa käyttöönotettua strategiaa onkin sovellettu menestyksekkäästi myös ohjelmostotuotannossa [Mid01, MiJ11]. Womackin ja Jonesin määrittelemät perusperiaatteet ovat Ramanin mukaan sovellettavissa valmistavasta teollisuudesta ohjelmistoteollisuuteen. Teollisuuden lajista riippumatta on tärkeää keskittyä tuottamaan asiakkaalle arvoa. Mitään teknologiaa ei pidä arvostaa vain teknologian itsensä vuoksi, vaan käyttötarkoitus on kartoitettava perusteellisesti. Ramanin mielestä esimerkiksi nopealla prototypoinnilla voidaan kartoittaa arvoa ohjelmistotuotannossa. Arvovirta käsittää kaikki toiminnot asiakkaan tilauksesta tuotteen luovuttamiseen. On tärkeää tunnistaa tällä välillä tapahtuvat toiminnot ja eritoten toiminnot, jotka tuottavat asiakkaalle arvoa. Näin voidaan havaita arvoa tuottamattomia toimintoja ja pyrkiä poistamaan niitä. Yhdeksi työkaluksi ohjelmistoprosessien parantamiseksi arvovirtojen tunnistamiseen Raman mainitsee SEI CMM -mallin. Tasainen arvovirtaus tarkoittaa tuotannon toimintojen etenemistä ilman turhia pysähdyksiä, takaisin virtauksia (back ow) ja virheitä. Arvovirtauksessa ei ole tällöin turhia jonoja. Ohjelmistuotuotannossa tämä vastaa Ramanin mielestä kehitysmallia sync-and-stabilize [CuS96]. Ihmisten työskentelyä yksilöinä ja rinnakkain 17 toimivien tiimien jäseninä synkronoidaan (synchronize) jatkuvasti. Lisäksi ohjelmisto vakautetaan (stabilize) jaksoittain projektin edetessä, eikä vasta kerralla projektin lopussa. Imuohjausta voidaan havainnollistaa ohjelmistotuotannossa esimerkiksi käyttämällä Kanban-menetelmää. Menetelmän avulla voidaan havaita ja korjata arvovirtauksen mahdolliset tukoskohdat. Imuohjaukseen liittyvä JIT-periaate ei ole Ramanin mielestä sellaisenaan sovellettavissa ohjelmistotuotantoon. Ohjelmistoteollisuudessa on tavallista, että tuotteisiin lisätään ominaisuuksia, joista kehittäjät ajattelevat asiakkaan olevan kiinnostunut. Loppuasiakkaalle ei kuitenkaan saisi tuottaa mitään sellaista, mitä ei olla erityisesti tilattu. Ohjelmistosta saattaa muussa tapauksessa kasvaa liian suuri ja monimutkainen. Jatkuva pyrkimys lähemmäksi täydellisyyttä poistamalla hukkaa liittyy ohjelmistotuotannossa SEI CMM -mallin korkeimpaan tasoon 5. Sen pääperiaatteet ovat jatkuva prosessien parantaminen ja virheiden määrän minimoiminen. 2.2.4 Seitsemän Lean-pääperiaatetta ohjelmistotuotannossa Mary ja Tom Poppendieck [PoP06] summaavat Lean-losoan ohjelmistokehityksessä seitsemään pääperiaatteeseen: 1. Poista hukka (Eliminate waste) 2. Luo kokonaisvaltaista laatua (Build quality in) 3. Tehosta oppimista (Create knowledge) 4. Päätä mahdollisimman myöhään (Defer commitment) 5. Toimita mahdollisimman nopeasti (Deliver fast) 18 6. Arvosta ihmisiä (Respect people) 7. Optimoi kokonaisuus (Optimize the whole) Poista hukka Jatkuva pyrkimys hukan poistamiseksi on Lean-losoan ydin. Muilla periaatteilla on vain vähäinen merkitys, mikäli hukkaa ei saada poistettua. Hukan tunnistamisesta pitäisi tehdä kaikille projektissa työskenteleville arkipäiväinen asia. Ei riitä, että ohjelmistokehittäjät pystyvät poistamaan hukan toiminnastaan, vaan myös muiden projektin sidosryhmien on sitouduttava tunnistamaan ja poistamaan hukkaa. Tässä tutkielmassa keskitytään eritoten listan ensimmäiseen pääperiaatteeseen. Seuraavassa luvussa 2.2.5 käsitellään hukka-käsitettä tarkemmin. Luo kokonaisvaltaista laatua Laatua on vaikea määritellä tyhjentävästi. Ohjel- mistokehityksessä ehkä käytetyin malli laadun arviontiin on kypsyysmalli SEI CMM. Voidaan ajatella, että mitä ylemmällä tasolla työskennellään, sitä lähempänä ollaan Lean-ajatusmallin mukaista toimintaa. Asiakkaan on voitava luottaa koko ohjelmistoon, ei vain joihinkin sen osiin. Koodin jatkuva testaus, integrointi ja refaktorointi ovat oleellisia asioita kokonaisvaltaisen laadun saavuttamiseksi. Testivetoisessa kehityksessä (Test Driven Development, TDD) testit kirjoitetaan ennen ohjelmakoodia. Lean-losoan mukaisesti uuttaa koodia ei lisätä järjestelmään, ennen kuin vanha on testattu ja korjattu. Virheen löytyessä, muu toiminta keskeytetään siksi aikaa, kunnes koodi on korjattu. Virheiden lisääminen virhelistoihin tuottaa jonoja, jotka ovat osittain tehtyä työtä eli hukkaa. Koodin integrointi täytyy tehdä tarpeeksi usein, esimerkiksi kerran päivässä, jotta integroinnista itsestään ei tule liian isoa työvaihetta. Refaktoroinnilla vältytään koodin duplikaateilta, jotka ovat ylimääräistä koodia eli hukkaa. Koodin testaus, kääntäminen, 19 integrointi ja kaikki rutiininomainen toiminta on mahdollisuuksien mukaan automatisoitava. Testaus ja simulointi ovat esimerkkejä dynaamisista laadunvarmistuskäytännöistä. Staattisissa laadunvarmistuskäytännöissä ohjelmakoodia ei suoriteta, vaan laatua varmistetaan esimerkiksi tarkastelemalla dokumentaatiota [HVZ04]. Leanperiaatteen mukaan kokonaisvaltaisen laadun kannalta olisi tärkeää varmistaa, että varsinkin dynaaminen laadunvarmistus on sisällytetty prosessiin koko kehityksen ajan. Ketterissä menetelmissä laadun varmistus on enemmän Lean-periaatteen mukaista kuin vesiputousmallissa, koska kaikkiin iteraatiohin ja koko arvovirtaan on sisällytetty dynaamista laadunvarmistusta. Vesiputousmallissa koodin testaamiseen päästään vasta erillisessä testausvaiheessa, kun ohjelma on käytännössä valmistunut. Kaikista laatutekijöistä täytyisi kuitenkin huolehtia koko ohjelmistokehityksen ajan ja laatua täytyy pyrkiä parantamaan jatkuvasti. Tehosta oppimista Valmistavassa teollisuudessa työ on voitu standardoida ja jakaa niin pieniin osiin, että tehtävästä selviää ilman erityistä osaamista. Toisin kuin linjatyö, ohjelmistokehitys on jatkuvaa uuden oppimista. Toimintaympäristöä prosesseineen ja ihmisiä toimintatapoineen on käytännössä mahdotonta normittaa. Jokaisen projektiin liittyvän henkilön on omaksuttava jatkuvasti uusia asioita muun muassa valmistettavasta tuotteesta. Ongelmanratkaisutaitojen jatkuva parantaminen tehostaa oppimista. Ongelmanratkaisumallilla PDCA (Plan-Do-Check-Act) voidaan varmistaa, että koko projektin ajan pyritään hyödyntämään tietoa mahdollisimman tehokkaasti [PoP06]. Aluksi tunnistetaan ja analysoidaan ongelma (Plan), jonka jälkeen kehitetään ja testataan mahdollinen ratkaisu ongelmaan (Do). Lopuksi mitataan, kuinka tehokas ratkaisu on ja voidaanko sitä tehostaa vielä jotenkin (Check) ja sovelletaan ratkaisu käytännössä (Act). Tämän jälkeen päädytään taas suunnittelemaan. Kuvassa 2 on 20 havainnollistettu sykli, joka jatkuu koko projektin ajan. Kuva 2: Ongelmanratkaisumalli ja jatkuvan parantamisen ajattelutapa PDCA. Lisäksi pariohjelmointi, Wikin ylläpito, dokumentaatiot ja selkeästi kommentoitu ohjelmakoodi ovat menetelmiä ohjelmistokehittäjien oppimisen tehostamiseksi. Pariohjelmoinnilla hankittu tieto koodista on useamman kuin yhden kehittäjän hallussa. Wikiin lisätty tieto kasvaa vähitellen ja se on helposti kaikkien käytettävissä. Dokumentaatiot ja koodin kommentit selventävät ja auttavat hahmottamaan jo tehtyä työtä. Ohjelmistokehitykseen liittyy tunnetusti paljon epävarmuutta [SMÅ10]. Tulevaisuuden ollessa epäselvä, muun muassa vaatimukset saattavat muuttua projektin edetessä. Mahdollisimman myöhäiseksi jätetyillä päätöksillä varmistetaan, että ratkaisut perustuvat tosiasioihin eivätkä arvailuihin tai ennustuksiin. Näin vältetään kiireellä tehtyjä, mahdollisesti puutteellisia, päätöksiä. Optimaalisen ratkaisun etsiminen vaihtoehtoja rajaamalla (set-based concurrent engineering) mahdollistaa päätösten jättämisen viime hetkeen [SWL99]. Mahdollisia suunnitteluratkaisuja (desing engineering) ja toteutusratkaisuja (manufacturing engineering) tutkitaan rinnakkaisesti eri tiimeissä ja niitä karsitaan vähitellen, kunnes päädytään sopiviin suunnittelu- ja toteutuspäätöksiin. Rinnakkaisuuden ansiosta eri vaihtoehtoja pystytään tutkimaan nopeasti ja päätökset voidaan tehdä 21 myöhään. Tällainen lähestymistapa saattaa olla kalliimpi kuin lineaarinen yhden vaihtoehdon tarkasteleminen kerrallaan (point-based serial engineering), mutta ajallisesti kriittisissä tapauksissa välttämätön. Toimita mahdollisimman nopeasti Ketterien kehitysmallien yleistyttyä asi- akkaat ovat tottuneet tiheätahtisiin toimituksiin. Toiminnallisuuksiin sijoitetulla pääomalla on sitä suurempi tuotto (Return on Investment, ROI), mitä aikaisemmin ne saadaan käyttäjien hyödynnettäviksi. Lisäksi lyhyiden iteraatioiden mahdollistama ohjelmiston nopea toimittaminen asiakkaalle tarjoaa kehitystiimeille nopeasti arvokasta palautetta. Mitä nopeammin tuote toimitetaan, sitä vähemmän asiakas ehtii muuttamaan mieltään. Vesiputousmallin mukainen toimitus voi kestää useita kuukausia, ennen kuin asiakkaalle toimitetaan mitään. Tällöin on mahdollista, että asiakas tulee jossain vaiheessa kehitystyön aikana muuttamaan mieltään jo tehdyn toiminnallisuuden osalta. Muutosten tekeminen alentaa liikevoittoa. Ketterien kehitysmallien mukaisesti kehitystyön kestäessä vain 14 viikkoa, on todennäköisempää, että asiakas ei ehdi muuttamaan mieltään ennen toimitusta. Lyhyet iteraatiot varmistavat myös, että ollaan täyttämässä asiakkaan tämän hetkistä tarvetta, eikä tehdä pari kuukautta sitten sovittuja asioita. Toimituksen tehokkuutta voidaan tarkastella jonoteorian avulla [PoP06]. Littlen lain mukaan läpimenoaika voidaan arvioda oheisella kaavalla, jossa kaavan yläosa kuvaa hukkaa (Work in Process, WIP) ja alaosa virtaa: läpimenoaika = keskeneräisten töiden määrä keskimääräinen valmistumistahti Mitä lyhyempi läpimenoaika on, sitä tehokkaampi on myös arvovirtaus. Läpimenoa voidaan tehostaa jakamalla työ pieniin eriin ja minimoimalla keskeneräisten töiden määrää. 22 Arvosta ihmisiä Ihmisiä tulee kunnioittaa ja arvostaa tasa-arvoisina työnteki- jöinä. Tehtävään sopivaksi valitulla henkilöllä pitää ajatella olevan tarpeeksi osaamista ja päätösvaltaa itsenäiseen työskentelyyn. Päätöksiä ei pidä tehdä heidän puolestaan, vaan on luotettava kaikkien pyrkivän samaan yhteiseen päämäärään tehokkaasti työskennellen. On Lean-periaatteen vastaista ajatella, että kaikkeen löytyy yksi paras ratkaisu [PoP06]. Kaikkia työskentelytapoja voidaan parantaa ja kehittää, mutta tehostamisen täytyy lähteä työtä tekevistä ihmisistä itsestään. Optimoi kokonaisuus Kokonaisuuden optimointi tarkoittaa toimintatapoja, joil- la pyritään tehostamaan koko arvovirtaa, ei vain joitakin tiettyjä toimintoja tai tiimejä. Jokaisen toiminnon on tähdättävä samaan päämäärään. Yhtä lailla jokaisen tiimin on työskenneltävä kohti yhteistä tavoitetta. Jos jotakin tiettyä prosessin vaihetta aletaan optimoimaan, on mahdollista, että se tehdään toisten vaiheiden kustannuksella. Projektin kokonaisuutta voidaan analysoida arvovirtakartalla (value stream map) [PoP06]. Karttaa varten päätetään alku- ja loppupisteet, joiden väliin sijoitetaan tuotteen valmistukseen tarvittavia toimintoja. Toisin sanoen arvovirtakartta on aikajana, joka sisältää askeleet konseptista valmiiseen tuotteeseen. Valmiista kartasta voidaan päätellä turhia toimintoja, sahausliikkeitä toimintojen välillä ja viivästyksiä eli kartoitetaan erilaisia hukkia. 2.2.5 Hukka: arvoa tuottamaton toiminta Womack ja Jones [WoJ96b] määrittelevät kaikki tuotekehityksen toiminnot kolmeen luokkaan: arvoa tuottavat (value adding), arvoa tuottamattomat (non-value-adding) ja vaaditut arvoa tuottamattomat toiminnot (required non-value adding). Leanlosoan mukaan tuotantoprosesseja tehostetaan poistamalla niistä erityyppisiä hukkia eli arvoa tuottamattomia toimintoja. Mutta mitä arvoa tuottava toiminta on? 23 Pichlerin [Pic08] mukaan voidaan kysyä seisestä toiminnasta? Olisinko asiakkaana valmis maksamaan ky- Jos vastaus on kyllä, on todennäköistä, että toiminta on arvoa tuottavaa. Toisaalta Womackin ja Jonesin määrittelemät vaaditut arvoa tuottamattomat toiminnot voivat olla myös sellaisia, jotka eivät asiakkaan mielestä tuota arvoa, mutta joita ei voida poistaa. Tällaisia toimintoja voivat olla esimerkiksi lakien ja sopimusten määrittelemät asiat. Kirjallisuudessa hukaksi määritellään tyypillisesti vain arvoa tuottamaton toiminta (muda). Caldwellin [Cal08] mielestä hukkaa ovat myös epäsäännöllisyys (mura) ja ylikuormitus (muri). Tässä tutkielmassa hukkaa tarkastellaan arvoa tuottamattomana toimintana. Epäsäännöllisyyden ja ylikuormituksen katsotaan olevan hukkaan vahvasti liittyviä käsitteitä. Womackin [Wom06] mielestä epäsäännöllisyys ja ylikuormitus ovat perimmäiset syyt arvoa tuottamattoman toiminnan syntyyn. Hänen mielestään on ensisijaisen tärkeää kiinnittää huomiota työn epäsäännöllisyyden ja ylikuormituksen poistamiseen tarkasteltaessa mitkä toiminnot eivät tuota lisäarvoa. Esimerkiksi turha vaihtelu työtavoissa [mura] aiheuttaa ihmisten ylikuormitusta [muri], josta voi syntyä virheitä [muda]. Jos työn epäsäännöllisyyteen ja ylikuormitukseen ei kiinnitetä erityistä huomiota, saatetaan Womackin mukaan tuotantoprosesseihin palauttaa jo aiemmin poistettuja arvoa tuottamattomia toimintoja. 2.2.6 Tutkielmassa tarkasteltavat hukat Lean-losoan tärkein periaate on kyky tunnistaa erilaisia hukkia. Arvon tunnistamisen jälkeen suunnitellaan toimintatapa löytää erilaisia hukkia. Kun hukka on kohdennettu, voidaan keskittyä sen poistamiseen. Seuraavassa on listattu seitsemän hukkaa (1.7.) Poppendieckien mukaan sekä kaksi muuta tutkielman kannalta oleellista hukkaa (8.9.). Seitsemän ensimmäisen hukan lähteenä käytetään Poppendieck- 24 ien [PoP06] teosta. 1. Siirtäminen (Handos) 2. Uudelleen opettelu (Relearning) 3. Virheet (Defects) 4. Osittain tehty työ (Partially done work) 5. Ylimääräiset ominaisuudet (Extra features) 6. Tehtävien vaihtelu (Task switching) 7. Odottelu (Delays) 8. Tehoton kommunikaatio (Ineective communication) 9. Tiedon hukka (Knowledge waste) Siirtäminen Siirtämisellä tarkoitetaan erityisesti työtehtävien siirtämistä hen- kilöltä toiselle. Töiden siirtäminen aiheuttaa usein viivästyksiä, tietokatkoksia ja väärinymmärryksiä. Erityisesti tarpeeton siirtäminen on hukkaa. Tiedon siirtämistä voidaan tehdä dokumentaation kautta tai kommunikoimalla kasvotusten. Ei-kasvotusten tapahtuvassa kommunikaatiossa, esimerkiksi sähköpostin lukemisessa, häviää tärkeää sanatonta tietoa. Myös kasvotusten tapahtuvassa tiedon siirtämisessä henkilöltä toiselle syntyy hukkaa. Ohjelmistokehittäjän siirtäessä ohjelmoimansa koodin testaajalle, syntyy hukkaa. Testaaja ei voi olla tietoinen koodin sisällöstä ennen kuin lukee sen dokumentaation, jolloin syntyy viivästyksiä testaajan selvittäessä koodia itselleen. 25 Uudelleen opettelu Asioiden uudelleen opettelu tuottaa hukkaa. Pahimmassa tapauksessa palataan huomaamatta kokeilemaan jotain jo aiemmin toimimattomaksi todettua asiaa uudestaan. Jo päätetyistä asioista tulisi pitää kirjaa. Kirjanpito ei saa olla kaiken kattavaa ja massiivista, vaan dokumentaation täytyy olla hyödyllistä ja tarkkaan harkittua. Poppendieckit ovatkin sitä mieltä, että aiemmin tuttujen ja unohdettujen asioiden uudelleen keksiminen on kenties paras määritelmä uudelleen tekemiselle kehitystyössä. Jos ihmisten osaamista ei hyödynnetä parhaalla mahdollisella tavalla, aiheutetaan vielä merkittävämpää hukkaa kuin asioiden uudelleen opettelulla. Virheet Virheet ohjelmakoodissa ovat yleisiä. Niiden määrää ja laatua voidaan kuitenkin pyrkiä minimoimaan oikeilla toimintatavoilla. Lean-näkökulmasta testausta täytyy tehdä usein ja alusta asti, jotta virheiden löytäminen ei jää prosessin loppupäähän. Erinäisten vikalistojen ylläpitämistä täytyy välttää. Virheiden korjaaminen suoritetaan heti niiden löydyttyä ja virheelle luodaan testi, jottei samanlaisia ongelmia enää synny. Näin toimimalla vältytään Poppendieckien mukaan rutiininomaiselta virheiden löytämiseltä veriointivaiheessa. Jos ohjelmisto saapuu veriontivaiheeseen jatkuvasti täynnä virheitä, on koko prosessi viallinen. Testaus ei ole heidän mielestään virheiden korjaamista. Osittain tehty työ Työ on osittain tehtyä, mikäli sen osia on jonoissa tai varas- toissa. Esimerkiksi testaamaton koodi on osittain tehtyä työtä, sillä se on odottamassa pääsyä testaukseen. Lean-periaatteen mukaan kehitystyön täytyy edistyä alusta loppuun sujuvasti ja tehokkaasti. Lopputuotteen koodin tulee olla integroitu, testattu, dokumentoitu ja käyttöön otettava. Ainoa tapa saavuttaa tämä, on Poppendieckien mukaan jakaa työ lyhyisiin iteraatioihin. Yksi iteraatio sisältää kaikki luetellut vaiheet. Kun jokainen vaihe on tarpeeksi pieni, on todennäköisempää, että prosessi etenee tehokkaammin ja työ valmistuu nopeammin. 26 Ylimääräiset ominaisuudet Lopputuotteesta löytyvät ylimääräiset ominaisuu- det ovat yksi ohjelmistotuotannon suurimmista lähteistä hukalle. Vain noin viidesosa tyypillisen tilaustyönä tehdyn ohjelmiston ominaisuuksista ja toiminnallisuuksista on säännöllisessä käytössä ja noin kahta kolmasosaa ominaisuuksista käytetään harvakseltaan. Ylimääräinen koodi monimutkaistuu kasvaessaan ja sen ylläpitämisestä tulee kalliimpaa ja ongelmallisempaa. Jos ominaisuudelle ei ole sen hetkistä aitoa taloudellista etua, sitä ei tulisi valmistaa. Aikainen spesikaatio saattaa Poppendieckien mukaan lisätä ylimääräisiä ominaisuuksia. Kun asiakkaalta pyydetään listausta kaikista tarvittavista ominaisuuksista, on todennäköistä, että myös vähemmän tärkeät ominaisuudet tulevat listatuiksi. Asiakas ei välttämättä tiedä projektin alussa, mitkä ominaisuudet todella ovat tärkeitä, joten on tärkeää pystyä tekemään tällaiset päätökset mahdollisimman myöhään. Tehtävien vaihtelu Tehtävien vaihtelu vie aikaa ja häiritsee keskittymistä. Vaih- don jälkeen tehtävään täytyy syventyä uudestaan. Eri asioiden tekeminen samaan aikaan ohjelmistokehityksessä ei useinkaan ole järkevää vaan aiheuttaa turhaan hukkaa. Odottelu Odottelu lienee yksi suurimmista hukan aiheuttajista. Tarvittavan tie- don pitäisi Lean-losoan mukaan olla saatavissa juuri oikeaan aikaan. Liian aikainen tieto voi muuttua ja liian myöhäinen tieto voidaan joutua jättämään huomiotta. Monimutkaisen byrokratian vuoksi päätösten tekeminen on hidasta, mikä aiheuttaa paljon odottelua. Kehitystyötä hidastaa myös ajoittaisen avun tarve toisilta henkilöiltä. Tarvittava henkilö ei ole aina heti tavoitettavissa tai vapaana, joten hänen apuaan joudutaan odottamaan. Ihmisten lisäksi odottelua voivat aiheuttaa muun muassa laitteistohankinnat. 27 Esimerkiksi testaukseen voidaan tarvita laitetta, jossa ohjelmistoa tullaan käyttämään. Odottelu vaikuttaisi olevan hukka, jota on suhteellisen vaikea kontrolloida. Tehoton kommunikaatio Vääräntyyppinen kommunikaatio aiheuttaa hukkaa. Esimerkiksi teknisistä yksityiskohdista keskusteleminen sähköpostin välityksellä on tehotonta. Graebschin et al. [GSL07] tekemässä tutkimuksessa huomattiin, että kyseiseen toimitukseen meni sähköpostitse aikaa kolmesta tunnista yli vuorokauteen. Tapaamisella oltaisiin päästy nopeampaan yhteisymmärrykseen. Kommunikaation täytyy olla myös laadultaan ja määrältään tehokasta. Tiedon hukka Arvovirtaukset ohjelmistokehityksessä koostuvat MacManuksen [Mac05] mukaan enemmän tiedosta kuin materiasta. Hänen mielestään arvovirtauksesta on siten löydettävissä tietoon liittyviä hukkia. Poppendieckien määrittelemät seitsemän hukkaa voidaan ajatella myös tiedon hukkana seuraavasti: 1. Siirtäminen: tiedon tarpeetonta siirtämistä ihmisten, organisaatioiden ja järjestelmien välillä. 2. Uudelleen opettelu: tiedon liiallinen prosessointi. 3. Virheet: virheelliset tiedot ja raportit. 4. Osittain tehty työ: käyttämätön tai työn alla oleva tieto. 5. Ylimääräiset ominaisuudet: tuotetaan ja jaetaan enemmän tietoa kuin tarvitaan. 6. Tehtävien vaihtelu: tarpeeton liikkuminen (fyysinen tai työpisteellä eri järjestelmien välillä liikkuminen). 7. Odottelu: ei saatavissa olevan tiedon aiheuttamaa joutoaikaa. 28 2.2.7 Lean-käsitteet hajautetussa ympäristössä Lean-elementeillä on joitakin erityispiirteitä hajautetussa ympäristössä, jotka selitetään seuraavissa kappaleissa. Kaikki kohdat ovat kirjoittajan omia arvioita. Poista hukka Tunnistettu ja poistettu hukka pisteessä A, mikä vaikuttaa myös pisteeseen B, on poistettava myös pisteessä B. Tällaisia voivat olla asioiden ja ihmisten odottelu pisteiden välillä, päällekkäiset työt, integroimaton koodi ja kaikenlaiset ongelmat kommunikaatiossa pisteiden välillä. Jos piste A onnistuu menestyksekkäästi poistamaan hukkaa tiimien välillä aiheuttavat seikat, voi piste B palauttaa ne omalla toiminnallaan, mikäli B ei pyri aktiivisesti poistamaan kyseistä hukkaa. Siirtäminen Tehtävä voidaan siirtää pisteestä toiseen esimerkiksi sähköpostin kautta. Koska hajautetussa ympäristössä siirtäminen on usein kasvotonta, kasvaa riski aiheuttaa siirtämisestä aiheutuvaa hukkaa. Uudelleen opettelu Tiedon kulussa pisteiden välillä on usein viivästyksiä. Jokin uusi asia on saatettu havaita toimimattomaksi pisteessä A, mutta tietoa ei olla heti välitetty pisteeseen B. Tällöin piste B opettelee huonoksi havaittua asiaa turhaan, kun tieto toimimattomuudesta olisi ollut jo saatavilla. Koko projektin kannalta B opettelee asiaa uudelleen. Virheet Virheitä syntyy aina sekä keskitetyssä että hajautetussa kehityksessä. Tiedon virheellisyys saattaa aiheuttaa isompia ongelmia hajautetussa ympäristössä, jos kommunikointi on tehotonta ja väärinymmärryksiä ei huomata ajoissa. Osittain tehty työ Hajautetuissa projekteissa eri pisteet integroivat luomansa koodin yhteiseen koodikantaan. Integroimaton koodi, toisin sanoen viivästetty in- 29 tegrointi (delayed integration), on osittain tehtyä työtä. Jos eri pisteiden koodia ei integroida tarpeeksi usein, aiheutetaan sahausliikettä. Koodi ei olekaan enää integroitavissa yhteiseen koodikantaan, koska integrointia viivästettiin, jolloin koodia täytyy ensin muokata uudestaan. Ylimääräiset ominaisuudet Tiedon kulku pisteiden ja asiakkaan välillä on tär- keää ehkäistäessä ylimääräisiä ja turhia ominaisuuksia. Jokaisen pisteen on tiedettävä, mitä asiakkaan kanssa on sovittu, jottei eri pisteissä tehdä omia versioita samasta ominaisuudesta. Kun tieto lisääntyy, pienenee päällekkäisen työn tekemisen riski. Tehtävien vaihtelu Koska kehitys on hajautettua, joudutaan toisten tiimien kans- sa kommunikoimaan sähköisesti. Tämä saattaa aiheuttaa tehtävien vaihtelua esimerkiksi sähköpostin ja tekeillä olevan tehtävän välillä enemmän kuin keskitetyssä kehityksessä. Odottelu Fyysinen etäisyys aiheuttaa odottelua, kun toisen tiimin henkilöitä ei tavoiteta heti. Globaalissa hajautuksessa myös aikaerot aiheuttavat odottelua, kun eri tiimit työskentelevät eri rytmissä. Tehoton kommunikaatio Kommunikaatiota on oltava sopiva määrä. Hajaute- tussa kehityksessä saatetaan välittää tietoa liian vähän, jos tiedon välityksen tarvetta ei aktiivisesti tiedosteta. Toisaalta saatetaan liioitella ja välittää sellaistakin tietoa, mitä toisessa pisteessä ei sillä hetkellä tarvita. Tasapainon löytäminen voi olla aluksi vaikeaa. Myös kommunikaation laatuun on kiinnitettävä huomiota, koska kommunikaatio on usein kasvotonta. Viestin sisältö on yhtä tärkeää kuin kommunikaation määrä. 30 Tiedon hukka Hajautetussa ympäristössä työskentely on osittain kasvotonta, jolloin tieto välitetään dokumentaation välityksellä. Jotta ei pääse tapahtumaan väärinkäsityksiä, on dokumentaation laatuun kiinnitettävä erityistä huomiota. Taulukkoon 5 on koottu ensimmäisen Lean-periaatteen poista hukka erityis- piirteitä hajautetussa ympäristössä. Lean-kehityksen periaate Hajautuksen kannalta erityistä 1. Poista hukka Kommunikointi eri pisteiden välillä: tiedostetaan tarvittaessa hukka kaikissa pisteissä 1.1 Siirtäminen Kasvoton tiedon tai työn siirtäminen toiselle 1.2 Uudelleen opettelu Tiedon kulku pisteiden välillä 1.3 Virheet Kommunikaation tärkeyden korostuminen 1.4 Osittain tehty työ Viivästetty integraatio 1.5 Ylimääräiset ominaisuudet Tiedon kulku: kaikilla heti sama tieto 1.6 Tehtävien vaihtelu Kommunikointi toisiin pisteisiin 1.7 Odottelu Aikaerot ja fyysinen etäisyys 1.8 Tehoton kommunikaatio Kommunikaation määrä ja laatu 1.9 Tiedon hukka Kasvoton tiedon kulku Taulukko 5: Lean-periaatteen poista hukka erityispiirteitä hajautetussa ym- päristössä. Luo kokonaisvaltaista laatua Hajautetuissa projekteissa korostuu jatkuvan in- tegroinnin tärkeys. Sen lisäksi, että kehittäjä kääntää, testaa ja integroi koodin paikallisesti, tulee koodi integroida mahdollisimman usein myös tiimien yhteiseen koodikantaan. 31 Tehosta oppimista Oppimista tulee pyrkiä tehostamaan yhteisillä kokouksilla ja varmistamalla, että tieto kulkee mahdollisimman sujuvasti eri pisteiden välillä. Näin tehostetaan nopeaa oppimista myös hajautetuissa projekteissa. Päätä mahdollisimman myöhään Eri tiimeissä voidaan tarkastella rinnakkain useita eri suunnittelu- ja toteutusvaihtoehtoja. Päätösten teko voidaan jättää mahdollisimman myöhäiseksi, kun vaihtoehtoja on alusta asti paljon. Tämä voidaan toteuttaa keskitetyssäkin kehityksessä, mutta hajautetut projektit ovat usein suurempia, jolloin useampi henkilö voi tutkia eri vaihtoehtoja. Toimita mahdollisimman nopeasti Nopea toimitus on joidenkin lähteiden mu- kaan tehokkaampaa hajautetuissa projekteissa ympärivuorokautisen työskentelyn vuoksi. Arvosta ihmisiä Kun kommunikoidaan kasvottomasti, toisiin tiimiläisiin voi olla vaikea luottaa. Toinen tiimi saatetaan helposti ajatella ulkojoukoksi, kun oma tiimi ajatellaan sisäjoukkona. Tällaisilla asenteilla vahvistetaan ajattelumallia me vastaan he. Maantieteellisesti toisaalla sijaitsevan tuntemattoman ihmisen arvostaminen saattaa olla vaikeaa senkin vuoksi, ettei hänen osaamistaan tiedetä. Optimoi kokonaisuus Työskentelyrytmi eri tiimeissä tulisi olla synkronoitu. Ke- hityssyklien synkronointi tahdistaa tiimien työskentelyä, jolloin optimoidaan koko hajautetun projektin etenemistä. Taulukkoon 6 on koottu Lean-periaatteiden 27 erityispiirteitä hajautetussa ympäristössä. 32 Lean-kehityksen periaate Hajautuksen kannalta erityistä 2. Luo kokonaisvaltaista laatua Jatkuva integrointi yhteiseen koodikantaan 3. Tehosta oppimista Tiedon kulku pisteiden välillä 4. Päätä mahdollisimman myöhään (Usein) enemmän henkilöitä suunnittelu- ja toteutusratkaisuja rajaamaan 5. Toimita mahdollisimman nopeasti Työskentely ympärivuorokautisesti 6. Arvosta ihmisiä Luottamuspula ja asenteet 7. Optimoi kokonaisuus Kehityssyklit eri pisteissä Taulukko 6: Lean-periaatteiden 27 erityispiirteitä hajautetussa ympäristössä. 2.3 Ketterä kehitysmalli Ketterälle ohjelmistokehitykselle on lähes mahdotonta tarjota kattavaa ja kaikkien hyväksymää määritelmää. Kaikilla ketterillä kehitysmalleilla on kuitenkin Agile Manifeston [Agi01] mukaan neljä yhteistä arvoa: • yksilöiden ja vuorovaikutuksen arvostaminen ennen prosesseja ja työkaluja, • toimiva sovellus ennen kokonaisvaltaista dokumentaatiota, • asiakasyhteistyö ennen sopimusneuvotteluita ja • muutoksiin reagoiminen ennen suunnitelman noudattamista. Lisäksi ketterät kehitysmallit noudattavat 12:ta periaatetta, joihin sisältyvät muuan muassa tiheät toimitussyklit, muuttuvien vaatimusten hyväksyminen ja kestävän kehityksen suosiminen ylläpitämällä tasaista työtahtia. 33 2.3.1 Perinteinen ja ketterä ohjelmistokehitysprosessi Ohjelmistotuotannon osatehtäviin sisältyy yleisesti määrittely, suunnittelu, toteutus, testaus sekä käyttö ja ylläpito. Ohjelmistojen kehitysmallit voidaan määritellä sen mukaan, miten edellä mainitut vaiheet suoritetaan. Perinteisessä vesiputousmallissa on vain yksi kehityssykli ja sen vaiheet suoritetaan lineaarisesti jokainen vaihe kokonaisuudessaan ennen seuraavaa. Tämä tarkoittaa, että yksi vaihe voi kestää jopa kuukausia. Suoritettujen vaiheiden välillä ei saisi olla sahausliikettä. Todellisuudessa aiempiin kehitysvaiheisiin tullaan usein palaamaan [Roy70]. Kuvassa 3 havainnollistetaan vesiputousmallin mukaista prosessia. Kuva 3: Vesiputousmalli. Ketterässä kehitysmallissa eri prosessivaiheet ovat samankaltaiset kuin vesiputousmallissa. Merkittävin ero vesiputousmalliin verrattuna on sen iteratiivisuuden ja keveyden mahdollistama nopea toimitus. Ohjelmistoa kasvatetaan vähitellen lisäämällä siihen jokaisen kehityssyklin aikana uusia ominaisuuksia. Yhden kehityssyklin pituus on vain 14 viikkoa ja syklejä voi kertyä yli 10 [ASR02, GMS10]. Lisäksi yhden kehityssyklin sisällä on pienempiä iteraatioita. Kuvassa 4 havainnollistetaan ketterää prosessimallia kuvaamalla prosessin ensimmäinen iteraatio. Ketterä ohjelmistokehitys on kattotermi, joka käsittää useita erilaisia kehitysmalleja ja käytäntöjä. Seuraavissa luvuissa tullaan käsittelemään kehitysmalleja 34 Kuva 4: Ketterä prosessimalli [Kon08]. Scrum ja XP korkealla tasolla. Scrum soveltuu erityisesti projektinhallintaan ja XP keskittyy enimmäkseen toteutuskäytäntöihin. 2.3.2 Scrum Scrum kehitettiin aikanaan ohjaamaan järjestelmän kehitysprosessia [ASR02]. Menetelmässä ei määritellä mitään erityisiä toteutuskäytäntöjä vaan siinä keskitytään tehostamaan tiimiläisten toimintaa, jotta tuote valmistuu joustavasti toistuvasti muuttuvassa ympäristössä. Määritelmä Scrum-prosessi sisältää kolme vaihetta: alkupeli, kehitysvaihe ja jäl- kipeli. Alkupeli sisältää korkean tason suunnittelua ja ohjelmiston arkkitehtuurin määrittelyä. Suunnitteluvaiheessa tuotteen työlistaan (product backlog) lisätään kaikki tunnetut vaatimukset. Ohjelmiston arkkitehtuuri suunnitellaan tuotteen työlistalla olevien vaatimusten mukaisesti. Kehitysvaihe on prosessin ketterä osa: kehi- 35 tystyö jaetaan 14 viikon mittaisiin pyrähdyksiin. Jokainen pyrähdys sisältää kaikki perinteiset ohjelmistokehitysvaiheet määrittelystä toimitukseen. Kun vaatimukset on täytetty, siirrytään jälkipeli-vaiheeseen. Integroinnin, testauksen ja lopullisen dokumentoinnin jälkeen tuote on valmis toimitettavaksi kokonaisuudessaan. Kuvassa 5 on havainnollistettu eri vaiheiden sisältö. Kuva 5: Scrum-kehityksen vaiheet [ASR02]. Scrum-kehitysmallissa on käytössä kaksi kolme erilaista työlistaa: tuotteen työlista, toteutusvaiheen työlista (sprint backlog) ja joskus myös julkaisun työlista (release backlog). Jokaisen pyrähdyksen aluksi tarkastellaan toteutusvaiheen työlistaa. Se sisältää tuotteen työlistalta valittuja vaatimuksia, jotka aiotaan valmistaa kyseisen pyrähdyksen aikana. 36 Roolit Henkilöille määritellään Scrum-projektissa roolit. Tärkeimpiä rooleja ovat tuoteomistaja, Scrum-mestari ja Scrum-tiimi. Tuoteomistaja edustaa asiakasta ja varmistaa, että tiimi tuottaa arvoa. Tuoteomistajan tehtävänä on määritellä ja priorisoida käyttäjätarinat ja lisätä ne tuotteen työlistalle. Scrum-mestari huolehtii, että prosessit etenevät suunnitellusti ja tiimi voi työskennellä mahdollisimman tehokkaasti. Scrum-tiimi käsittää 59 henkilöä ja sen vastuuna on tuotteen valmistus. Kaikki kehittäjät Scrum-tiimissä osallistuvat aktiivisesti toteutusvaiheen työlistan luontiin. 2.3.3 XP XP kehitettiin ratkaisuksi perinteisten ohjelmistokehitysmallien pitkien toimitussyklien aiheuttamiin ongelmiin [ASR02]. Se on kokoelma käytäntöjä, kuten TDD, jatkuva integrointi ja koodin yhteisomistus. Kaikki käytännöt olivat olemassa jo ennen XP-kehitysmallia. Uutta oli näiden käytäntöjen teoretisoiminen ja hyödyntäminen tehokkaasti yhdessä. Taulukkoon 7 on listattu kaikki Beckin [Bec99] määrittelemät 12 XP-käytäntöä. Määritelmä Termi extreme (äärimmäinen) kuvaa kehitysmallin tapaa käyttää tavanomaisia periaatteita ja käytäntöjä äärimmäisellä tasolla. Esimerkiksi kaikki ohjelmointi suoritetaan pariohjelmointina, ei vain jossain projektin vaiheessa tai vain joidenkin ohjelmistokehittäjien osalta. Beckin sanoin XP on kevyt, tehokas, mata- lariskinen, joustava, ennustettava, tieteellinen ja hauska tapa kehittää ohjelmistoja. XP on tarkoitettu suhteellisen pienille projekteille, joissa tiimikoot ovat 210 henkilöä. Roolit Jokaisella henkilöllä on jokin rooli ja vastuualue. Henkilöllä voi olla use- ampi rooli samanaikaisesti. Ohjelmoija luo mahdollisimman yksinkertaista koodia ja kirjoittaa moduulitestit. Asiakas määrittelee käyttötapaukset ja toiminnalliset testit 37 1. Suunnittelupeli The Planning Game 2. Pienet julkaisut Small releases 3. Järjestelmän vertauskuva Metaphor 4. Yksinkertaisuus Simple design 5. Testaus Testing 5.1 Testivetoinen kehitys TDD 5.2 Asiakastestaus Customer tests 6. Refaktorointi Refactoring 7. Pariohjelmointi Pair Programming 8. Yhteisomistus Collective ownership 9. Jatkuva integrointi Continuous integration 10. Tasainen tahti 40 hour week 11. Asiakas paikan päällä On-site customer 12. Toteutuskäytännöt Coding standards Taulukko 7: XP-käytännöt Beckin mukaan. sekä päättää, milloin eri vaatimukset on täytetty. Testaaja muun muassa auttaa asiakasta toiminnallisten testien määrittelyssä. Valvoja antaa palautetta tiimiläisten toiminnoista ja arvioi jokaisen iteraation etenemistä. Valmentaja on vastuussa XP-prosessista. Konsultti on ulkopuolinen henkilö, jolla on jokin tietty tekninen osaamisalue, jonka avulla hän ohjaa tiimiä. Johtaja huolehtii tiimin tarpeista ja tekee tärkeät päätökset. Neljä arvoa Kehitysmallilla on neljä Beckin [Bec99] määrittelemää arvoa, jotka palvelevat sekä ihmisten että yritysten tarpeita: kommunikaatio, yksinkertaisuus, palaute ja rohkeus. Hänen mielestään toimimaton kommunikaatio ei ole sattumaa, 38 vaan ihmiset aiheuttavat sen itse omalla toiminnallaan. Kommunikaatio pyritäänkin ylläpitämään sujuvana hyödyntämällä erilaisia käytäntöjä, jotka vaativat toimivaa kommunikaatiota. Tällaisia ovat esimerkiksi pariohjelmointi ja tehtävien arvionti. Beckin mukaan on tärkempää tehdä asia ensin yksinkertaisesti ja vasta myöhemmin tarvittaessa muuttaa sitä, vaikka muutos maksaisikin enemmän. Tällöin vältytään tuottamasta jotain monimutkaista, jota ei ehkä koskaan tulla tarvitsemaan. Yksinkertaisuus liittyy kommunikaatioon, koska kommunikaatiolla asioista saadaan yksinkertaisempia. Mitä yksinkertaisempi järjestelmä on, sitä vähemmän tarvitaan kommunikaatiota ihmisten välillä. Järjestelmän nykytilasta saatu palaute on arvokasta tietoa. Ohjelmistokehityksessä optimismi on vaarallinen asenne, joka voi estää löytämästä virheitä ohjelmakoodista ja saamasta tietoa asiakkaalta. Konkreettinen palaute muun muassa testauksen muodossa estää olettamuksien aiheuttamia ongelma. Mitä enemmän saadaan palautetta, sitä parempaa on kommunikaatio. Tällöin myös järjestelmästä tulee yksinkertaisempi. Rohkeus auttaa ohjelmoijaa kokeilemaan uskomattomalta vaikuttavia ratkaisuja, jotka toisinaan tuottavat erinomaisia tuloksia. Ilman kommunikaatiota, yksinkertaisuutta ja palautetta, rohkeus on kuitenkin vaarallista. 2.3.4 Agile manifeston arvojen ja Lean-periaatteiden yhteys Agile manifeston neljällä arvolla ja Lean-periaatteilla voidaan nähdä yhtymäkohtia. Taulukossa 8 havainnollistetaan joitakin tällaisia yhtäläisyyksiä. Ketterät tiimit ovat itseorganisoituvia ja valtuutettuja ratkaisemaan itse ongelmansa. He myös koordinoivat omat tehtävänsä. Lean-näkökulmasta asia nähdään pitkälti samoin: yksilön arvostaminen on tiimityöskentelyä, vastuun antamista sekä toisten mielipiteiden kuuntelemista ja arvostamista. Kummastakin näkökulmasta 39 tyytyväinen työntekijä on tehokkaampi ja tyytyväisen asiakkaan tae. Laajat dokumentaatiot ovat ketterien kehitysmallien mukaan turhaa työtä ja Lean-mielessä hukkaa. Ketterissä kehitysmalleissa jokaisen syklin päätteeksi asiakkaalle esitellään jotain valmista toimivaa koodia. Lean-näkökulmasta toimiva sovellus on tärkeä monella tavalla. Testaamaton koodi on hukkaa, joten heti alusta alkaen pyritään välttämään suurien virheraporttien laatimista ja ryhdytään tuottamaan valmista testattua ja integroitua koodia. Näin tuotetaan kokonaisvaltaista laatua, eikä pyritä kasvattamaan erinäisiä varastoja ja jonoja siirtämällä tehtäviä tulevaisuuteen. Ketterissä kehitysmalleissa sopimusneuvotteluja tehdään koko projektin ajan sopimalla aina iteraatioiden vaihtuessa seuraavaksi toteutettavat ominaisuudet. Käytännössä tämä on asiakkaan kanssa työskentelyä ilman kirjallisia sopimuksia. Tehosta oppimista -periaate liittyy vahvasti asiakasyhteistyöhön, sillä ohjelmistokehitys on jatkuvaa uuden oppimista ja yksi tärkeimmistä palautteen antajista on asiakas. Tiivis asiakasyhteistyö edesauttaa arvon tunnistamista, jolloin valmistettu tuote vastaa asiakkaan tarpeita. Ketterien kehitysmallien etu perinteiseen vesiputousmalliin verrattuna on niiden joustavuus ja mahdollisuus reagoida nopeasti muutoksiin. Päätä mahdollisimman myöhään -periaate mahdollistaa nopean reagoimisen muutoksiin, mikä ei ole mahdollista, jos noudatetaan jo projektin alussa tehtyjä suunnitelmia. Poppendieckien [PoP06] mukaan arvolla on ohjelmistokehityksessä tapana muuttua, joten muutoksiin on pystyttävä varautumaan. Lean on vielä suhteellisen nuori käsite ohjelmistoteollisuudessa. Sitä ei pidä ajatella ketterien kehitysmallien vaihtoehtona vaan niiden seuraavana vaiheena, kuten Abrahamsson [Les11] mainitsee Tietokone-lehden haastattelussa. Hänen mukaansa Ketterä kehitys soveltuu koneiston kehittämiseen, kun taas Leanilla voidaan 40 Agile manifeston arvot Lean-periaate Yksilöt ja vuorovaikutus ennen Kunnioita ihmisiä prosesseja ja työkaluja Toimiva sovellus ennen Luo kokonaisvaltaista laatua kokonaisvaltaista dokumentaatiota Asiakasyhteistyö ennen Tehosta oppimista sopimusneuvotteluita Muutoksiin reagoiminen ennen Päätä mahdollisimman myöhään suunnitelmien noudattamista Taulukko 8: Agile manifeston arvojen ja Lean-periaatteiden yhteys. pureutua organisaatioon. Voidaan siis ajatella, että Lean sisältää agile manifeston arvot. 2.3.5 Ketterät käytännöt kommunikaatio-ongelmien ratkaisuna Hajautetun projektin menestyminen vaatii tehokasta yhteistoimintaa eri pisteiden välillä ja mikään muu sen saavuttamiseksi ei ole niin tärkeää kuin tehokas kommunikaatio. Kommunikaatio-ongelmat tiimien välillä on useissa lähteissä [MoH01, PaL06, GMS10] määritelty merkittävimmäksi ongelmaksi hajautetussa ohjelmistokehityksessä. Tehoton kommunikaatio on hukkaa ja sen poistaminen on oleellista riippumatta projektin rakenteesta. Ketterillä menetelmillä voidaan Pikkaraisen et al. [PHS08] tutkimuksen mukaan parantaa sekä muodollista että epämuodollista kommunikaatiota ohjelmistoprojekteissa. Muun muassa avoin toimistotila, pyrähdyksien suunnittelu ja päivittäiset kokoukset parantavat kommunikaatiota lisäämällä sitä. 41 Pikkarainen et al. ovat sitä mieltä, ettei ketteristä kehitysmalleista ole sellaisenaan kommunikaatio-ongelmien ratkojaksi laajennettuihin ympäristöihin, joissa useat sidosryhmät ja kehittäjätiimit ovat mukana saman ohjelmiston kehitysprosessissa. Kuitenkin esimerkiksi Scrum-käytäntöjä voidaan tutkimusten [VäK08, SMÅ10] mukaan käyttää parantamaan kommunikaatiota hajautetuissa projekteissa, kunhan niitä sovelletaan oikein. 3 Kokeellinen tutkimus Suoritetun tapaustutkimuksen tarkoituksena oli kerätä materiaalia tutkimuskysymysten analyysia varten. Analysoitua materiaalia verrattiin kirjallisuudesta löytyviin tutkimuksiin. Ensimmäisessä luvussa 3.1 selitetään, miten tutkimusongelmaa on tutkittu. Luvussa 3.2 esitellään tutkimuskohde ja viimeisessä luvussa 3.3 tiedonkeräämisen välineet. 3.1 Miten ongelmaa tutkitaan Tapaustutkimus suoritettiin laadullisena tutkimuksena, jonka avulla pyrittiin ymmärtämään tutkittavia ilmiöitä. Tutkimuksessa käytettiin hypoteesia vahvistavaa triangulaatiota, jossa kahta tai useampaa menetelmää käytetään mittaamaan yhtä tutkimuskohdetta [RuH09]. Aineisto kerättiin haastattelemalla ohjelmistokehittäjiä kasvotusten ja havainnoimalla työskentelyä paikan päällä [Mäe11a, Mäe11b]. Lisäksi tietoa kerättiin Wikistä, versionhallintaohjelmistosta ja sähköisestä Kanban-taulusta. Tutkimustiloina toimivat todellista ohjelmistokehitystilaa simuloiva Software Factory [Abr10] sekä toinen luokkatila. Software Factory -tila on suunniteltu vastaamaan mahdollisimman tarkasti oikeaa ohjelmistokehittäjän työtilaa. Kaikki tässä 42 tilassa tapahtuva tallennettiin videolle ja äänitettiin. Lisäksi kaikki tietokoneella tehty tallennettiin. Toisessa pisteessä sijainneessa luokkatilassa ei äänitetty eikä tallennettu työskentelyä. 3.2 Tutkimuskohteen esittely Projektissa Cloud of Things (CoT) työskenteli kaksi kehitystiimiä: A ja B. A koostui kahdeksasta ja B kuudesta ohjelmistokehittäjästä. Fyysinen välimatka tiimien välillä oli noin 400 kilometriä. Asiakasta Tieto Oyj edusti kaksi tuoteomistajaa: T1 ja T2 . Tuoteomistajan T1 työpiste sijaitsi lähellä pistettä A. Hän vieraili kummankin tiimin luona noin joka toinen viikko ja oli demotilaisuudessa paikan päällä vuoroin pisteessä A ja vuoroin pisteessä B. T2 osallistui demotilaisuuksiin tavallisesti etäyhteydellä. Tuoteomistaja T2 oli hieman teknisempi. Lisäksi projektiin liittyi pisteessä B järjestetty käytettävyyskurssi (UCD-kurssi), jota hyödynnettiin käyttöliittymäsuunnittelussa. Projektissa ei ollut havaittavissa yhtä hajautettua tiimiä, vaan työskentely tapahtui kahdessa itsenäisessä tiimissä (two-site). Kuvassa 6 havainnollistetaan projektin kokoonpanoa. Pallot kuvaavat henkilöitä ja viivat kommunikaatioväyliä. Tuoteomistajan T1 kanssa kommunikoitiin kummastakin tiimistä. Tuoteomistajaan T2 oltiin yhteydessä tiimistä A, mutta tiimin B yhteydenpidosta ei ollut havaintoja eikä asia tullut esille haastatteluissa. Oletettavasti teknisempiä asioita tiedusteltiin enemmän tiimistä A käsin. Käytettävyyskurssilaiset kommunikoivat vain tiimin B kanssa. Tiimiläiset koostuivat suomalaisista ja ulkomaalaisista opiskelijoista, joten tiimien välisenä yhteisenä kielenä käytettiin englannin kieltä. Sisäiseen kommunikaatioon tiimissä B käytettiin suomen kieltä ja tiimissä A englannin kieltä. Kommunikoimiseen tiimien välillä käytettiin videoneuvottelulaitteistoa, puhelinta, sähkö- 43 Kuva 6: Projektin sosiaalinen rakenne. postia, Skype-pikaviestipalvelua ja työpöydän jakamiseksi TeamViewer-ohjelmaa. Lisäksi Tiimillä A oli käytössään interaktiivinen taulu SMART board. Tuoteomistajiin oltiin yhteydessä sähköpostitse ja puhelimitse. Kenellekään tiimiläisistä ei osoitettu mitään tiettyjä rooleja. Projektissa ei siis ollut esimerkiksi testaajia, tietokantaohjelmoijia, Scrum-mestaria tai agile-valmentajaa. Projekti oli seitsemän viikon mittainen. Miestyöviikon pituus oli 24 tuntia eli kuusi tuntia päivässä, koska perjantai pidettiin vapaapäivänä. Pisteestä A oli kolme henkilöä (21 % kaikista kehittäjistä) poissa projektin aktiivisesta työajasta kuuden päivän ajan (21 % projektin kestosta). Taulukossa 9 on esitetty yhteenveto projektin perustiedoista. Työtunneissa ei olla otettu huomioon projektin ulkopuolisten käytettävyyskurssilaisten työpanosta. Kenelläkään tiimiläisistä ei ollut aikaisempaa kokemusta hajautetusta ohjelmistokehityksestä. Scrum-prosessimallista ja Kanban-menetelmästä oli vähäistä kokemusta parilla henkilöllä. Tiimissä A oli kokonaisuudessaan enemmän ohjelmointikokemusta. Ohjelmointiosaaminen pisteessä B vaihteli merkittävästi. Projektin tavoitteena oli tuottaa prototyyppi uudelle pilvipalveluita hyödyntävälle mobiilituotteelle ShopMate. Tuotteeseen tehtiin niin paljon ominaisuuksia, 44 Tiimi A Tiimi B Henkilömäärä 8 6 Työviikkotunnit/hlö 24 24 Työviikkotunnit/tiimi 192 144 Työpäivät/hlö 2228 28 Työpäivät/tiimi 206 168 Taulukko 9: Projektin perustiedot. kuin seitsemässä viikossa ehdittiin. 3.3 Tiedon keräämisen välineet Tutkimus suoritettiin havainnoimalla työskentelyä ilman osallistumista [Mäe11a] ja haastattelemalla kehittäjiä [Mäe11b]. Haastattelun muoto oli puolistrukturoitu ja kesto 2045 minuuttia. Lisäksi tuoteomistajilta saatiin lyhyt palaute projektin päätyttyä. Havaintoja tehtiin pisteessä A paikan päällä neljänä ensimmäisenä viikkona ja projektin jälkeisenä jälkiarviontipäivänä (debrieng). Lisäksi pisteessä B oltiin paikan päällä heidän jälkiarviontipäivänään. Yhteensä havaintoja tehtiin 46:n tunnin ajan. Tutkimusta varten haastateltiin viisi henkilöä: kaksi pisteessä A ja kolme pisteessä B. Haastattelut pisteessä A suoritettiin projektin puolivälin jälkeen ja pisteessä B projektin jälkiarviontipäivänä. Kaikkia haastateltavia ohjeistettiin olemaan keskustelematta haastattelun sisällöstä toisten henkilöiden kanssa. Pisteen A henkilöt eivät olisi ehtineet keskustella keskenään, sillä haastattelut suoritettiin peräkkäin, mutta pisteessä B tähän oli teoreettinen mahdollisuus. Haastateltavat pisteessä A valittiin arvioidun kokemuksen ja projektissa esiintyneen aktiivisuuden perusteella. Toinen henkilöistä oli aiemmin työskennellyt Soft- 45 ware Factory -kurssilla ja toisellakin oli projektikokemusta aiemmilta kursseilta. Pisteessä B haastateltavat valikoituivat satunnaisesti sen mukaan, kuka oli vapaana. Haastattelut nauhoitettiin ja litteroitiin lähes sanatarkkaan tutkimuksen analyysivaihetta varten. Seuraavassa luvussa 4 siteerataan haastattelukysymysten vastauksia ja jälkiarviontipäivän havaintoja [Mäe11b]. Mainitut havainnot ovat havainnointipäiväkirjasta [Mäe11a]. Haastateltavat on nimetty satunnaisesti niin, että An vastaa tiimin A kehittäjää ja Bn tiimin B kehittäjää: [A1 ], [A2 ], [B1 ], [B2 ] ja [B3 ]. Numerointi ei välttämättä vastaa haastattelujärjestystä. 4 Empiiriset tulokset Tässä luvussa esitellään hajautettuun ohjelmistoprojektiin kohdistuvan empiirisen tutkimuksen tulokset. Hajautettujen projektien Lean-näkökulmaa on tutkittu vielä vähän, mutta voidaan varovaisesti arvioida, että hajautetussa ympäristössä erinäiset hukat korostuvat. Tapaustutkimuksessa pyritään selvittämään, missä määrin hajautettu ohjelmistokehitys voi olla Lean-periaatteiden ja päämäärien mukaista. Tuloksia tarkastellaan kahden tutkimuskysymyksen kautta: 1. Työskentelivätkö projektilaiset tehokkaasti ilman hukkia. 2. Oliko arvovirtaus tehokas. Luvussa 4.1 kuvataan tiimien työskentelytavat, luvussa 4.2 tarkastellaan työtapojen tehokkuutta ja luvussa 4.3 kartoitetaan arvovirtauksen tehokkuutta. Lopuksi luvussa 4.4 selvitetään kuinka onnistunut projekti oli kokonaisuudessaan. 46 4.1 Tiimien työskentelytavat Tässä luvussa esitellään projektissa käytetty prosessimalli ja Kanban-menetelmä. 4.1.1 Prosessimalli Projektin alussa kehittäjiä ohjattiin käyttämään projektin hallintaan Scrum-prosessimallia ja työnkulun visualisoimiseen Kanban-menetelmää. Muutama henkilö tiimistä A ilmaisi halunsa käyttää perinteistä tai jotain muuta ketterää prosessimallia, josta heillä olisi ollut kokemusta. Käytetty prosessimalli oli jonkinasteinen Scrumban-järjestelmä, jossa pyritään hyödyntämään Kanban-menetelmän ja Scrumkehitysmallin parhaita puolia [KnS09]. Säännöllisesti kummassakin tiimissä käytössä olleita käytäntöjä olivat viikon mittaiset pyrähdykset, säännölliset demot ja pyrähdyksien suunnittelu demotilaisuuden päätteeksi. Scrum-kokous kestää noin 15 minuuttia ja sen aikana vastataan kolmeen kysymykseen: Mitä olet tehnyt edellisen Scrum-kokouksen jälkeen?, Mikä on hankaloittanut työtäsi? ja Mitä aiot tehdä seuraavaan Scrum-kokoukseen mennessä?. Kokouksia pidettiin joka aamu tiimissä B. Tiimissä A niiden hyödyntäminen lopetettiin projektin puolivälissä, koska sovitusta kokousajasta oli joka viikko joku myöhässä ja kokouksen alkua odotellessa ei aina työskennelty tehokkaasti. Kokousten pitäminen lopetettiin erään tiimiläisen mukaan tarkoituksellisesti, sillä: Ne [Scrum-kokoukset] eivät toimineet. [A2 ] Projektissa ei ollut erillistä toteutusvaiheen työlistaa, vaan käytössä oli pelkkä tuotteen työlista. Kuvassa 7 on esitetty käytössä ollut työlista. Ensimmäisessä sarakkeessa on toiminnallisuuden nimi, toisessa sarakkeessa toiminnallisuus kuvataan tarkemmin ja kolmas sarake sisältää tarkennusta vaativia asioita. 47 Kuva 7: Tuotteen työlista. Tuotteen työlistan toiminnallisuudet priorisoitiin ominaisuuslistaan, jota päivitettiin koko projektin ajan. Kuvassa 8 osittain näkyvä ominaisuuslista on projektin viidennen pyrähdyksen lopulta. Ensimmäinen sarake kuvaa toiminnallisuuden tämänhetkistä tilaa, toinen prioriteettia, kolmas sisältää toiminallisuuden nimen ja viimeisessä sarakkeessa toiminnallisuus kuvataan tarkemmin. Tehtävien jako tiimien välillä tehtiin pyrähdyksen päätteeksi pidetyn demotilaisuuden lopuksi tai myöhemmin tilaisuuden jälkeen. Aikaisempi kokemus ja kiinnostus vaikuttivat tehtäväjakoon. Jos tehtävät loppuivat kesken pyrähdyksen, voitiin uusia tehtäviä kysellä esimerkiksi Skypen välityksellä toiselta tiimiltä. Vaihtoehtoisesti voitiin itsenäisesti valita seuraava tehtävä työlistalta. Tiimi B kyseli mieluummin apua toiselta tiimiltä ja tiimi A toimi itsenäisemmin. Wikistä löytyi vain kahden ensimmäisen pyrähdyksen suunnitelmat, joten kaikista suunnitelmista ei ole erillistä dokumentaatioita. Ensimmäinen suunnitelma näkyy kuvassa 9. Oletettavasti ominaisuuslista korvasi pyrähdysten suunnitteludoku- 48 Kuva 8: Sovelluksen ominaisuulista. mentaatiot. 4.1.2 Kanban-menetelmä Kanban on imuohjaukseen perustuva Lean-menetelmä, jolla ohjataan tuotantoprosesseja ja visualisoidaan työnkulku. Menetelmässä käytetään taulua, joka on jaettu sarakkeisiin, jotka vastaavat prosessin työvaiheita. Jokaisen työvaiheen WIP pyritään määrittelemään optimiksi, jolloin prosessiin ei aiheuteta tukoksia tai odottelua työvaiheiden välille. Näin arvovirtaus pyritään pitämään tasaisena. Kummallakin tiimillä oli käytössään Kanban. Aluksi kummallakin oli omansa: pisteessä A fyysisellä seinällä ja pisteessä B verkossa. Toisella ja kolmannella viikolla oli käytössä yksi yhteinen Kanban verkossa. Seuraavilla viikoilla tiimi A päätti ottaa 49 Kuva 9: Ensimmäisen pyrähdyksen suunnitelma. fyysisen taulun takaisin käyttöön. Tällöin pisteessä A oli käytössä kaksi päivitettävää taulua. Viimeisenä kahtena viikkona Kanban-taulua käytettiin pisteessä A lähinnä raportointivälineenä. Verkossa olevalla Kanban-taululla oli kolme saraketta: ToDo, Doing ja Done. Tiimin A käytössä olleella fyysisellä taululla oli viisi saraketta: ToDo, Analysis, Doing, Review ja Done. Taulujen sarakekohtaisia WIP-arvoja ei rajoitettu. Kuvassa 10 näkyy, kuinka yhteinen Kanban on jaettu kahteen osaan niin, että kummallakin tiimillä on omat itsenäiset kaistansa. Vihreät työkortit esittävät sovellukseen toteutettavia ominaisuuksia, vaaleat yleisiä tehtäviä ja siniset työkortit ovat parannuksia. Yleinen tehtävä voi olla esimerkiksi XML-aiheen tutkimus. Kanban- taulussa käytettiin myös punaista työkorttia, joka kuvasi korjattavan virheen. Punainen kahdeksankulmio, jonka sisällä on valkoinen ruksi, kuvaa työkortin tukostilaa (blocked). Tukostilassa työkortti ei etene, vaan odottaa jonkin muun asian suoritusta. 50 Kuva 10: Tiimien yhteinen Kanban verkossa. 4.2 Työtapojen tehokkuus Seuraavissa aliluvussa tarkastellaan projektilaisten työtapojen tehokkuutta analysoimalla havaittuja hukkia ja projektilaisten yhteistoimintaa ja kommunikaatiota. 4.2.1 Projektissa ilmenneet hukat Projektin Wikissä olleessa Kanban-tutoriaalissa esiteltiin lyhyesti Lean-losoan tärkeimpiä periaatteita ja hukkatekijöitä. Kehitystyössä ei ollut kuitenkaan havaittavissa erityistä pyrkimystä hukkien tunnistamiseen ja poistamiseen. Seuraavassa tarkastellaan projektissa ilmenneitä hukkia, jotka on lopuksi koottu erilliseen taulukkoon 10. 51 Siirtäminen Tiedon siirtäminen tiimien välillä aiheutti muun muassa ylimääräisiä ominaisuuksia, kun välitettävä tieto oli puutteellista: Esim. B oli piirtänyt käyttöliittymään sellaisia toiminnallisuuksia, joita ei toteuteta ja se toiminnallisuus on nyt toteutettu. Kun B lähetti kuvat tiimille A, he eivät huomanneet sanoa, että ovat jo toteuttaneet tän [jokin toiminnallisuus]. Nyt meillä on kaksi toteutusta samasta toiminnallisuudesta, jotka toimii ihan eri tavalla. [A1 ] Kyllä joo niitäkin ilmeni [tehtävissä päällekkäisyyksiä tiimien välillä]. Aika usein jonkinlainen [verkko-Kanban] Kanban-moka. Ei ollut Kanban syystä tai toisesta ajan tasalla. Lähdettiin toteuttamaan eri tiimeissä samaa toiminnallisuutta. Luotettiin Kanbaniin. Välillä ei ehkä olisi pitänyt tai siihen olisi pitänyt voida luottaa. [B2 ] Uudelleen opettelu Uudelleen opettelua aiheutui versionhallintaohjelman käyt- töongelmista. Syy oli mitä todennäköisimmin osaamistasolla: Yhtäkkiä tekemäni koodi oli kadonnut GIT:istä [versionhallintaohjelmistosta] jonnekin. En tiedä minne. Jouduin tekemään koodin uudestaan. [Tiimin A jälkiarviointi] Virheet Niin asiakas kuin projektitiimitkin olivat sitä mieltä, että sovelluksesta löytyy joitakin pieniä virheitä, mutta mitään erityistä ei tullut esiin jälkiarviointitilaisuudessa. Testatussakin koodissa on aina virheitä, joten testaamisen vähyys saattoi lisätä virheiden mahdollisuutta: ...Voimassa oleva Hudson-palvelin [testauspalvelin], muttei tähän mennessä kirjoitettu montaakaan testiä. [A2 ] 52 ...Käytettiin hirveästi aikaa Hudsonin laittamiseen. Meillä ei ole käytännössä minkäänlaisia testejä tähän projektiin. Ei olla ihan varmoja toimisiko Hudson. Tai siis Hudson saadaan toimimaan Androidin kanssa, mutta kukaan ei ole jaksanut tehdä minkäänlaisia testejä. Hudson oli muutenkin kohtalaisen turhaa ajanhukkaa. [A1 ] ...Hudson oli ajatus, että käytetään, mutta ei oikeastaan hyödynnetty. Alun perin oli tarkoitus tehdä yksikkötestit, mutta ne ei oikein tuntunut soveltuvan tähän. Ei ollut oikein yksikkötestattavaa. [B2 ] Osittain tehty työ Testaamaton ja integroimaton koodi on jonoon siirrettyä työtä. Kummatkin olivat jonkin verran toisistaan riippuvaisia: Jos testauspalvelin oltaisiin saatu toimimaan heti alussa, yhteinen koodiintegraatio olisi tapahtunut paljon nopeammin. Muuten aika paljon osaamistasolla ongelmia, ei välttämättä osata käyttää GIT:iä työkaluna järkevästi. [A2 ] ...Osa ajatteli, että kun ei saada continuous integration -palvelua toimimaan, ei hyötyä kirjoittaa testejä tai ei niin kiire koodin integroinnin kanssa. [A2 ] Ylimääräiset ominaisuudet Siirtäminen aiheutti ylimääräisiä ominaisuuksia, joista mainittiin ensimmäisen hukan kohdalla. Tehtävien vaihtelu Kanban-taululla olleet tehtävät olivat varsinkin projektin alussa välillä liian isoja. Tämä johti keskeytyksiin, kun liian isoja tehtäviä jouduttiin pilkkomaan pienempiin osiin. 53 Sitäkin [tehtävien määrittelyä] opittiin siinä aikanaan. Kun ei tosissaan sitä kokemusta ollut, niin kyllähän siinä välillä tuli ihan huonojakin määrityksiä. Siis liian isoja tehtäviä. Ei osattu sillai mitoittaa. [B2 ] Alussa ei [määritelty hyvin tehtäviä]. Hyvin riippuvainen siitä, millainen kokemus henkilöllä on. Paranee koko ajan. Ei henkilöä, joka katsoisi, että kaikki tarvittava on taululla, kun on omatkin tehtävät tehtävänään... [A2 ] Jonkin verran keskeytyksiä Kanbanissa, koska liian isoja taskeja [tehtäviä]. [Tiimin A jälkiarvionti] Vaikka tehtävä oli pilkottu oikean kokoiseksi, sitä ei aina saatettu loppuun asti, ennen kuin aloitettiin toinen tehtävä. Tämä saattoi johtua siitä, että jonkin tehtävän oli valmistuttavakin ennen tekeillä olevaa tehtävää tai tehtäviä saatettiin vaihdella myös jostakin muusta syystä: Olisi pitänyt suunnitella taskit projektin alussa. Tehtäviä ei siis tehty loppuun asti, kun aloitettiin toinen. [Tiimin A jälkiarviointi] Tekeillä oleva tehtävä jouduttiin toisinaan keskeyttämään myös siksi, että työkortteja jouduttiin käydä tarkentamassa Kanban-taululla: Ongelma oli enemmän projektin suunnittelussa, joka vuosi myös Kanbaniin kun sinne piti sitten laittaa mitä oli tekemässä. Mutta kun ei ollut suunnittelua, sinne sitten kerääntyi epämääräisiä työtehtäviä, joita joku aina vähän väliä pyysi tarkentamaan... [A2 ] 54 Odottelu Tiimissä B oli tiimin A näkemyksen mukaan jonkin verran passiivista odottelua, kun ei tiedetty mitä tehdä, ja pikaviestimien kautta tulleisiin viesteihin ei aina ehditty vastaamaan heti: Pisteessä B ollut ilmeisesti liian vähän tehtävää tai vastaavaa. En ymmärrä syytä, miksi ovat odottaneet demotilaisuutta. Eivät ole toimineet ihan täysin itsetoimisesti. Eivät ottaneet itselleen lisää työtä. [A2 ] Useampaankin otteeseen jonkin verran jouduttiin odottamaan. Pääasiassa keskusteltiin Skypen kautta ja joskus saattoi tovi mennä, että sai jonkinlaista vastausta. Harvemmin kuitenkaan mitään pitkiä aikoja. Ei siis mitenkään kovin kriittistä. [B2 ] Projektin ulkopuolisen käytettävyyskurssin tuotoksia jouduttiin toisinaan odottelemaan: Jonkin verran joo [odottelua]. Käyttöliittymäsuunnitelmien kanssa... [A1 ] Taukokäytännöt vaihtelivat. Esimerkiksi ensimmäisellä viikolla erään kokouksen väliin sovittu 15:n minuutin tauko pitkittyi 37:ään minuuttiin. Osa tiimiläisistä meni syömään, vaikka oltiin sovittu, että pidetään vain lyhyt tauko. Tiedon vastaanottamista jouduttiin toisinaan odottelemaan, kun tuoteomistajalle T2 oli yritetty soittaa. Hän oli huonosti tavoitettavissa puhelimitse ja yleensä oli päädytty lähettämään tiedustelut sähköpostiviesteinä. Vastauksia kysymyksiin jouduttiin toisinaan odottelemaan monta tuntia: Teknisempi asiakas ei ollut tarpeeksi paikalla/tavoitettavissa. [Tiimin A jälkiarviointi] 55 Pisteessä A jouduttiin odottamaan testauspalvelimen ja yhteisen koodikannan käyttöönottoa: ...Käytin suunnilleen 3 päivää tämän asian virittämiseen itse. B oli saanut toimimaan, mutta A ei...Jos testauspalvelin oltaisiin saatu toimimaan heti alussa, yhteinen koodi-integraatio olisi tapahtunut paljon nopeammin. [A2 ] Projektin alussa kesti muutaman päivän, ennen kuin kaikilla oli salasanat tarvittaviin järjestelmiin. Asiakkaan tilaama testauspuhelin pisteeseen A saatiin vasta projektin loppupuolella, koska puhelimen toimittajalla oli ongelmia. Pisteeseen B puhelinta ei saatu koskaan: Me ei saatu niitä kännyköitä ikinä tänne pisteeseen B... [B1 ] Asiakkaan palomuuria ei saatu projektin aikana auki ja web service -linkkiä ei saatu lopulta toimimaan. Asiakkaan tietoturva-asioita oli tiukennettu vuodenvaihteessa, minkä vuoksi kyseiset asiat viivästyivät: Asiakas ei tiennyt, etteivät web servicet ja puhelinasiat tule toimimaan. Luotettiin asiakkaaseen, ja luovuttiin web service -asiasta vasta projektin keski- tai loppupuolella. [Tiimin A jälkiarviointi] Tehoton kommunikaation Seuraavassa luvussa 4.2.2 käsitellään yhteistoiminta- ongelmat ja siihen liittyvä hukka tehoton kommunikaatio. 4.2.2 Yhteistoiminta ja kommunikaatio projektissa Kommunikaatiohävikki on hukkaa, joka aiheutuu vääränlaisesta kommunikaatiosta. Liian vähäinen kommunikaatio lisää virheiden ja väärinymmärrysten mahdollisuut- 56 Hukka Lähde 1. Siirtäminen Puutteellinen tieto 2. Uudelleen opettelu Toteutettu toiminnallisuus katosi versionhallintaohjelmasta 3. Virheet Ei järjestelmällistä testausta 4. Osittain tehty työ Testaamatonta ja integroimatonta koodia 5. Ylimääräiset ominaisuudet Siirtäminen: kommunikaatio- ja yhteistoimintaongelmia tiimien välillä 6. Tehtävien vaihtelu Kanban-taululla liian isoja tehtäviä Kun huomattu, että toisen tehtävän on valmistuttava ensin Tehtävien tarkentamistarve 7. Odottelu Avun/ohjeiden odottelu Käyttöliittymäsuunnitelmat Liian pitkät tauot Tuoteomistan T2 tavoittaminen IT-tuki: salasanat Testauspalvelin ja yhteinen koodikanta Testauspuhelimet Asiakkaan palomuuri ja web service -linkki 8. Tehoton kommunikaatio Käsitellään kappaleessa 4.2.2 Taulukko 10: Projektissa ilmenneet hukat ja niiden lähteet. ta. Toisaalta tiivis kommunikointi silloin kun se on turhaa, on myös hukkaa (communication overhead). Kommunikaation tarve voi vaihdella esimerkiksi sen mukaan, missä vaiheessa projektia ollaan [GMS10]. 57 Kommunikaatio-ongelmat ovat yksi hajautettujen projektien tunnistetuimpia uhkia. Tämä lienee seurausta siitä, että ohjelmistokehitys on riippuvaista ihmisten vuorovaikutuksesta [SMÅ10]. Tehoton kommunikaatio on itsessään hukkaa, mutta myös aiheuttaa muita hukkia. Projektissa oli havaittavissa alusta asti joitakin ongelmia yhteistoiminnassa. Sidosryhmien yhteistoiminta ja kommunikaatio valittiin tarkemman analyysin kohteeksi edellä mainituista syistä. Seuraavissa kappaleissa analysoidaan projektissa ilmenneiden yhteistoimintaongelmien aiheuttajia kalanruotokaaviolla (Ishikawa diagram). Kaavio esittää syyseuraus-suhteita: kalan pää ilmaisee ongelman (seuraus) ja jokainen iso ruoto esittää yhtä pääkategoriaa (syy). Ruodosta lähtee alaspäin pienempiä ruotoja, jotka saadaan esittämällä kysymys miksi. Mitä pienempi ruoto on, sitä lähempänä ollaan pohjimmaista syytä. Syy-seuraussuhteita voidaan tarkastella myös toisinpäin. Tällöin kaaviossa liikutaan alhaalta ylöspäin ja käytetään sanaa aiheuttaa tai aikaansaa. Kuvassa 11 esitetään analyysin kohteena olevat pääkategoriat: ihmiset, tieto/taito, ympäristö, prosessit, johtaminen ja laitteet/välineet. Jatkossa kirjoittajan tulkinnan mukaan erityisen vahvat ja oleelliset havainnot on merkitty kaavioihin paksummilla ruodoilla. Ihmiset Tiimiläisillä oli havaittavissa ennakkoluuloisuutta toisen tiimin henkilöitä kohtaan. Tämä johtui oletettavasti fyysisen etäisyyden vuoksi syntyneestä me vastaan he -ajattelumallista. Lisäksi tiimiläiset ajattelivat hajautuksen tarkoittavan tiukasti kahteen paikkaan hajautettua kehitystyötä, jossa kumpikin tiimi on täysin itsenäinen yksikkönsä: ...Kommunikaatio ei olisi toiminut tai olisi paljon sekavampaa, jos olisi ollut yksi iso tiimi. Vaikea saada selvää kuvaa henkilöstä, jonka on nähnyt kerran neljä tuntia ja jolla on joku kummallinen Skype-nimi tai vastaavaa. Samassa tilassa voi eleistä nähdä, ymmärsikö toinen mitä 58 Kuva 11: Yhteistoimintaan negatiivisesti vaikuttaneet tekijät. tarkoitin. [A2 ] Projektin alussa pidetyssä ensimmäisessä ja lopulta ainoassa fyysisesti yhteisessä kokouksessa ei tavoitettu luottamusta, mikä olisi tärkeää ryhmähengen kannalta: Yhteistyö alkoi nihkeästi ensimmäisessä kokouksessa. B ei ollut valmistautunut tarpeeksi. [Tiimin A jälkiarviointi] Fyysisen etäisyyden aiheuttaman kasvokkaisen kommunikaation puuttuessa toinen tiimi ajateltiin joskus etäiseksi ja jopa häiritseväksi tekijäksi: Ei selkeää kuvaa, mitä tiimi B pitää meistä. Viestittäminen on ollut suhteellisen letkeää. Tietyt henkilöt meidän tiimin sisällä kokee kaikki ulkopuoliset tekijät vähän häiriöksi tässä projektissa. [A2 ] Tapaerot vaikuttivat kommunikaatioon joidenkin henkilöiden kohdalla vähentäen avun pyytämistä. Tähän saattoi vaikuttaa henkilön kulttuuri tai persoona: 59 Periaatteessa joo [tarvittaessa saatu pyydettäessä heti apua], riippuu siitä, mistä asioista on ollut vastuussa. Käytöstavoista/kulttuurista riippuvaista. Hiljaiset ei kysy apua niin nopeasti. Pitää käydä kattomassa miten menee. [A2 ] Tiimien välillä ilmeni toisinaan erimielisyyksiä, mikä saattoi vaikuttaa kommunikaatiohalukkuuteen: Kyllähän tapahtui parikin sosiaalisesti hankalaa tilannetta. Eripuraa syntyi välillä, mikä aika paljon varmaan johtui siitä turhautumisesta, kun projekti ei ihan edennyt alkuperäisten odotusten mukaan. [B2 ] Eräässä tiimien välisessä kommunikaatiotilanteessa yksi tiimiläinen turhautui johonkin erimielisyyteen siinä määrin, että kääntyi videoneuvottelun aikana poispäin kamerasta ja kuiskasi: Mä kohta jyrään yksin ton! Moni koki, että muilla on erilaiset odotukset ja näkemykset projektilta. Tämä saattoi lisätä muun muassa väärinymmärrysten mahdollisuutta: ...kun ihmisillä ei ole minkäänlaista selvää näkemystä siitä, että millainen se pitäisi olla se koko projekti [ohjelma] projektin lopussa. [A1 ] ...Kommunikaatio hieman ongelmallista, koska epäilen, että tiimeillä on erilainen näkemys siitä, mitä tämä projekti oikeasti tarkoittaa. Esim. demoissa painotetaan eri featureja, mikä on luonnollista, koska riippuu siitä, mitä on tehnyt. [A2 ] 60 ...Useampaan otteeseen kävi ilmi, ettei tiimeillä ollut yhtenäistä näkemystä ja oli väärinymmärryksiä ja ristiriitaisia käsityksiä. Ei nyt ihan ehkä ihan joka päivä, mutta useita projektin aikana... [B2 ] Tiimiläiset kokivat konseptin liian avoimeksi, koska he eivät tienneet tarkalleen alusta asti, mitä ollaan tekemässä: Tiedolla [asiakas] liian avoin konsepti. [Tiimin B jälkiarviointi] Henkilöiden tavoitettavuudessa oli välillä pieniä ongelmia. Toisinaan jouduttiin odottamaan vastauksia toiselta tiimiltä, tuoteomistajalta tai tuloksia käytettävyyskurssilta. Syyt ongelmaan on käsitelty edellisen kappaleen 4.2.1 kohdassa odottelu. Liian itsenäisesti toimiminen voi olla seurausta henkilön vahvasta uskosta omaan näkemykseen. Tämä vähensi kommunikaatiota: Joillakin liian vahvoja persoonia. [Tiimin B jälkiarvionti] Se, että joku sooloilee ja tekee ihan omiaan, on minun mielestäni pahempi asia kuin se, ettei osaa. Pisteessä A oli ainakin yksi tosi vahva persoona, joka veti sitä hommaa sinne, minne se halusi. Itse yritän tietoisesti mukautua siihen toisten näkökulmaan. [B3 ] Tiimissä A oli enemmän kokemusta ohjelmistojen tekemisestä, mikä vaikutti asenteisiin työskennellä yhtenä tiiminä. Saatettiin kokea, ettei toisen tiimin kanssa tarvitse kommunikoida niin paljon, koska osataan paremmin itse. Toisaalta ihmisillä on erilaiset sosiaaliset tavat, jolloin toisen henkilön keskeyttäminen ja avun saaminen voi olla vaikeampaa: 61 Kommunikoinnin määrään ei vaikuttanut niinkään välineet vaan asenteet. Ei aitoa yhteistyötä. [Tiimin B jälkiarviointi] Ei [olla jouduttu pyytämään apua toiselta tiimiltä]. Tehtäväjako on kuitenkin ollut niin selkeä. Tiimissä A ihmiset eivät ole kiinnostuneita puhumaan asioista, vaan tekevät vaan. Tämä aiheuttaa ongelmia myöhemmin. Johtunee siitä, että tiimissä [projektissa] ihmisillä erilainen kokemustaso ja käyttäytymistavat erilaisia. Keskeyttävät helpommin toisen työt. [A2 ] Kuvassa 12 on esitetty pääkategorian ihmiset yhteistoimintaan negatiivisesti vaikuttaneet syyt. Tieto/taito Kommunikaation tehokkuuteen vaikuttaa oleellisesti kielitaito. Tii- missä B koettiin, että kaikkea ei päästy ilmaisemaan, koska osalla henkilöistä kielitaito ei ollut tarpeeksi vahva. Koettiin kuitenkin, että pakotettuna käyttämään englannin kieltä myös tiimin sisäisenä kielenä, kommunikointi toisen tiimin kanssa olisi toiminut lopulta paremmin: Kieliongelmia. Lukeminen ja kirjoittaminen helpompaa, joten Skypeily oli helpompaa kuin puhe. Harjoituksen puute. Olisi varmasti parantunut, jos koko ajan olisi pitänyt puhua englantia. [Tiimin B jälkiarviointi] Englannin käyttäminen toi osaltaan lisää haasteita ja vaikeutti [kommunikaatiota]. Jos haluttiin olla ihan varmoja, että ymmärretään tiimien välillä toisiamme, haluttiin, että sieltä [tiimistä B] oli joku suomenkielinen yhteydessä. [B2 ] Toimintaohjeet projektin alussa olivat joidenkin mielestä liian tarkkoja tai toisaalta epätarkkoja. Prosessimalli oltaisiin haluttu valita itse tai valitusta pro- 62 Kuva 12: Yhteistoimintaan negatiivisesti vaikuttaneet tekijät: ihmiset. sessimallista olisi pitänyt olla jonkinlainen koulutus: Pakotettiin agileen malliin...Ihmiset eivät osanneet/tienneet, mitä agile on tarpeeksi...Ohjeistusta enemmän tai vähemmän, mutta ei näin miten nyt oli. [Tiimin A jälkiarviointi] Kokemuksen kautta omaksutut pohjataidot vaikuttavat siihen, miten kokouksissa ja palavereissa kommunikoidaan. Pohjataitojen puute voi vaikuttaa haluttomuuteen esittää kysymyksiä tai kommentteja, kun itseluottamusta ei ole vielä tarpeeksi: 63 ...Esim. X:n kieliset ja Y:n kieliset puhuvat ja muut ovat hiljaa kokouksessa tai keskustelevat keskenään. Johtuen ehkä siitä kokemuksen puutteesta. Ei halua näyttää, ettei osaa, tai ei oikein osaa kysyä oikeassa kohtaa. [A2 ] Projektin tavoitteet olivat joillekin epäselviä ja tekemisen tavoitteellisuus ei ollut ilmeistä kaikille alusta asti: Käytännössä olisi pitänyt olla paljon enemmän yhteistyötä. Asiakas ei oikein tiennyt mitä haluaa. Jotenkin sellainen tavoite [tekemisen tavoitteellisuus] puuttui koko projektilta. Oli sekainen olo, että mitä tässä tehdään. Mikään ei ollut valmiina. Silloin, kun asiakas oli paikalla, tuntui, että se oli kiinnostunut, mutta kun se oli jossain muualla, tuntui, ettei sitä oikeastaan loppujen lopuksi kiinnostanut se, mitä me tehdään. [B3 ] Kuvassa 13 on esitetty pääkategorian tieto/taito yhteistoimintaan negatiivisesti vaikuttaneet syyt. Ympäristö Kehittäjätiimien ympäristöksi tässä yhteydessä mielletään asiakas ja käytettävyyskurssi. Kumpikin tiimi pyrki usein esittämään oman näkemyksensä tuoteomistajalle. T1 antoi eräässä tilanteessa kummallekin tiimille eri vastauksen samaan kysymykseen. Tämä johtui siitä, että toisena asiansa esittänyt tiimi pystyi perustelemaan näkemyksensä vakuuttavammin, minkä vuoksi T1 pystyi oikeutetusti vaihtamaan vastauksensa. Tästä aiheutui ongelmia, koska päätöksiä ei aina välitetty toiseen tiimiin: 64 Kuva 13: Yhteistoimintaan negatiivisesti vaikuttaneet tekijät: tieto/taito. ...Eräs toiminnallisuus varmistettiin asiakkaaltakin, mutta sitten ilmeisesti tiimit sai ihan erilaisen varmistuksen ja käsityksen sen jälkeen, kun oli asiakkaan kanssa keskustellut. Molemmat kyseli erikseen asiakkaalta. Se on vähän hämärä kohta, miten näin pääsi käymään. Se luonnollisesti tuotti vähän turhaa työtä. Vääränlaista featurea lähdettiin tekemään sitten. [B2 ] Asiakkaalla oli tiukennettu tietoturva-asioita vuodenvaihteessa, minkä vuoksi jotkin tekniset asiat eivät toteutuneet odotetussa aikataulussa. Osa tiimiläisistä tulkitsi asian niin, ettei asiakas ollut valmistautunut projektiin tarpeeksi: ...Asiakas ei ole ollut valmis tähän projektiin siinä vaiheessa kun se alkoi. Tuntuu siltä, että aloittivat samaan aikaan tai pikkasen myöhemmin teknisen puolen omasta toteutuksestaan. [A2 ] 65 Tuoteomistajat eivät esittäneet tiimeille alusta asti valmista konseptia, minkä jotkut tiimiläiset ajattelivat tarkoittavan, ettei asiakas tiedä mitä haluaa. Kurssin alussa tuoteomistajille oli esitetty yliopiston puolelta toive, ettei heiltä tarjottaisi liian paljon valmista materiaalia. Tiimiläiset tulkitsivat, että työskentelyllä ei ole tavoitteellisuutta, kun konsepti puuttuu: Puolet tietämättömyydestä johtuu asiakkaan tietämättömyydestä myös. Olisi ollut hyvä, että asiakas olisi edes tiennyt, mitä haluavat projektilta. [A1 ] Kommunikaatio tiimien ja käytettävyyskurssin välillä ei ollut tarpeeksi tehokasta: Ongelma oli siinä, kuinka heitä [käytettävyyskurssilaisia] kuullaan. Toisaalta eivät itsekään ehkä tulleet tarpeeksi mukaan toiseen ryhmään. Mutta tilanne oli varmaan liian epäselvä, ei ollut selvää, miten pitäisi toimia, kun kurssit [Software project -kurssi ja käytettävyyskurssi] olivat erillisiä. [T1 ] Kuvassa 14 on esitetty pääkategorian ympäristö yhteistoimintaan negatiivisesti vaikuttaneet syyt. Prosessit Tavat hyödyntää Kanban-tauluja vaikuttivat osaltaan yhteistoiminnan tehottomuuteen. Kenellekään ei ollut vastuuta taulujen ylläpidosta ja niiden päivittäminen oli vaihtelevaa, koska niitä ei pidetty erityisen tärkeinä ja ne koettiin hankaliksi. Esimerkiksi ensimmäisellä viikolla pisteen A fyysisellä Kanban-taululla oli eri tehtäviä kuin mitä jotkut olivat tekemässä. Taulujen sisällöt olivat siten epäluotettavia. Projektin loppupuolella Kanban-taulua käytettiin lähinnä raportointivälineenä suoritetuista tehtävistä: 66 Kuva 14: Yhteistoimintaan negatiivisesti vaikuttaneet tekijät: ympäristö. En ole varma viikosta 5, mutta kahtena viimeisenä viikkona ei seinällä ollut Kanban muuttunut mielestäni juuri mitenkään, eikä kukaan sitä juuri katsellutkaan. Verkossa olevaan tehtiin myös kahtena viimeisenä viikkona vähän muutoksia ja lopussa vain dumpattiin tehtyjä asioita sinne, mutta ei niitä kukaan minun tietääkseni pisteessä A katsellut. Kovin vähän koko projektin aikana kukaan kanbaneja katseli ja mielestäni ei niistä suurta hyötyä ollut. [A1 ] Viikoilla 56 ei ollut Kanbania. Kaikki oli niin selvää Kanban-mielessä. Tieto kulki paremmin ilman Kanbania. Kanbania käytettiin enemmän dokumentointina: työskenneltiin nopeammin kuin Kanban. Taskit lisättiin suoraan Done-sarakkeeseen. [Tiimin A jälkiarviointi] Aina vähän laiskasti päivitettiin. Siihen ei aina voinut luottaa.... [B1 ] Tiimien välisen tehokkaan kommunikaation kannalta yhteinen Kanban verkossa oli erinomainen ratkaisu: ...Yhteinen Kanban olisi paras. Yhteinen Kanban vaikutti kommunikaa- 67 tion määrään, kun nähtiin suoraan mitä kukin tekee. [B1 ] Kanban oli kuitenkin jaettu kahteen kaistaan, mikä ei ollut kaikkein tehokkain tapa hyödyntää taulua. Tiimissä A Wikiä pyrittiin hyödyntämään uudelleen opettelun vähentämiseksi ja tiedon jakamisessa tehokkaammin. Kun joku teki jotain sellaista, jota muutkin joutuvat myöhemmin tekemään, tehtiin asiasta tutoriaali Wikiin kaikkien luettavaksi. Vain yksi henkilö opetteli asian kunnolla alusta asti. Tiimin B puutteellinen ja epäsäännöllinen dokumentointi Wikiin saattoi aiheuttaa joitakin kommunikaatioongelmista johtuvia hukkia: Ehkä B käytti sitä liian vähän. B teki itsekseen, eikä jakanut sitä minnekään. A teki minun mielestäni hyvin: dokumentoi puolivalmiitkin tekeleet aina jonnekin. Olisi pitänyt informoida, että nyt on lisätty tämmöinen juttu tänne [Wikiin]. [B3 ] Tiimeillä oli erilliset Scrum-kokoukset. Pisteessä A niiden käyttö lopetettiin kolmannen viikon aikana, koska ne eivät toimineet. Erilliset kokoukset johtuivat oletettavasti siitä, että tiimit kokivat työskentelevänsä kahtena täysin itsenäisenä tiiminä, joiden ongelmat ovat heidän omiaan. Kuvassa 15 on esitetty pääkategorian prosessit yhteistoimintaan negatiivisesti vaikuttaneet syyt. Johtaminen Päätöksenteko oli vaihtelevaa. Tiimeillä ei ollut kokemusta hajaute- tuista projekteista ja he näkivät projektin jaettuna kahteen erilliseen ja itsenäiseen tiimiin. Projektissa ei myöskään ollut mitään yhtenäisiä käytäntöjä päätöstentekoon tai niiden noudattamiseen, mistä aiheutui toisinaan ongelmia: 68 Kuva 15: Yhteistoimintaan negatiivisesti vaikuttaneet tekijät: prosessit. Puhuttiin, että asiat pitäisi hyväksyttää sekä asiakkaalla että toisella tiimillä. Näin ei kuitenkaan toimittu. Käytännöt pitäisi päättää alussa, eikä niin, että kumpikin tiimi keksii niitä kilpaa... [B3 ] Suunnittelupäätöksistä päästiin aina lopulta johonkin yhteisymmärrykseen, mutta joitakin ongelmia saattoi aiheutua turhasta kiireestä, halusta aloittaa toteutus ilman suunnittelua ja kehityssyklien lyhyydestä (4 päivää): Projektissa on pidetty kiirettä koko ajan myös sellaisissa tilanteissa, joissa ei ole ollut mitään tarvetta sellaiseen. Tämä on heijastunut työntekotapaan mahdollisesti... [A2 ] 69 Pick a feature and implement it, learn by doing. [Tiimissä A kuultu kommentti viikolla 3] Projektissa ei haluttu kenellekään kehittäjälle mitään erityisiä rooleja. Scrummestarin puuttuminen saattoi osaltaan heikentää kommunikaation tasoa. Kuvassa 16 on esitetty pääkategorian johtaminen yhteistoimintaan negatiivisesti vaikuttaneet syyt. Kuva 16: Yhteistoimintaan negatiivisesti vaikuttaneet tekijät: johtaminen. Laitteet/välineet Tiimien yhteinen koodikanta saatiin käyttöön vasta projektin puolivälissä osittain siksi, ettei sitä pidetty kiireellisenä, kun testauspalvelinkaan ei ollut toiminnassa. 70 Testauspalvelinta ei saatu toimimaan heti projektin alusta lähtien. Tämä johtui suurimmaksi osaksi tiimiläisten kokemattomuudesta. Kukaan ei ole tehnyt Androidilla mitään aiemmin. [A1 ] Se [testauspalvelin] on paljon hankalampi kuin mitä yleensä. Androidalusta on sen verran uusi... [A2 ] ...[testauspalvelin] Toimisi varmaan hyvin tietokoneohjelmien kanssa, mutta niin hirveä työ laittaa Androidille. [A1 ] Videoneuvottelun aloittaminen oli usein työlästä, kun ohjelmistojen kanssa oli teknisiä ongelmia. Projektin toisella viikolla hitaampi Skype korvattiin tehokkaammalla Adobe Connect Pro -ohjelmalla. Demotilaisuuksissa asetuksia ei saatu siirtymään tietokoneelta toiselle, jolloin demoa ei saatu näkyviin halutulla tietokoneella. Tällöin jouduttiin turvautumaan hätäratkaisuun: kauemman tietokoneen näyttöä kuvattiin webkameralla. Videoneuvotteluissa oli vaikea huomata, jos jollakin on asiaa, kun viittausta tai muuta puheenvuoron pyytämistä oli hankala nähdä monitorilta. Tällöin puhuttiin usein yhtäaikaa. Kuvassa 17 on esitetty pääkategorian laitteet/välineet yhteistoimintaan negatiivisesti vaikuttaneet syyt. 4.3 Arvovirtauksen tehokkuus Arvovirtauksen läpimenoaika on aika, joka kuluu, kun asiakas esittää tilauksensa ja saa tuotteen käyttöönsä. Arvovirtaa voidaan arvioida työnkulkua tarkastelemalla. Tässä luvuissa esitetään työnkulku sekä koko projektin ajalta että yhden tehtävän osalta. 71 Kuva 17: Yhteistoimintaan negatiivisesti vaikuttaneet tekijät: laitteet/välineet. 4.3.1 Työnkulku koko projektin ajalta Arvovirtausta projektin alusta loppuun voidaan pitää optimina, koska projektilaisilla ei olisi ollut mahdollisuutta vaikuttaa koko projektin läpimenoaikaan, koska kurssi oli joka tapauksessa seitsemän viikon mittainen. Prototyyppiin oli tarkoitus tehdä niin paljon ominaisuuksia kuin ehditään. Projektissa oli seitsemän pyrähdystä, jotka lähes kaikki olivat hieman erilaisia. Päivittäisiä Scrum-kokouksia ei hyödynnetty jokaisessa pyrähdyksessä, vaan pisteessä A niiden käyttö lopetettiin projektin puolivälissä. Myös Kanban-taulujen hyödyntäminen vaihteli paljon eri viikkoina. Tämä epäsäännöllisyys työtavoissa [mura] vaikutti osaltaan projektissa ilmenneisiin ongelmiin. 4.3.2 Yhden tehtävän työnkulku Projektilaisilla oli mahdollisuus vaikuttaa yksittäisten tehtävien läpimenoaikaan työja toimintatavoillaan. Työskentelyssä oli joitakin arvovirtaa heikentäviä toimintatapoja, jotka eivät tuottaneet asiakkaalle lisäarvoa. Näitä hukkia tarkasteltiin tar- 72 kemmin luvuissa 4.2.1 ja 4.2.2. Yhden tehtävän työnkulkua voidaan kuvata tarkastelemalla Kanban-taulujen käyttöä. Tauluja hyödynnettiin projektissa vaihtelevasti. Pisteessä B käytettiin vain sähköistä Kanban-taulua, mutta pisteessa A käytössä oli myös fyysinen Kanbantaulu, joten prosessissa oli kaksi tapaa edetä. Tehtävät valittiin sähköiselle Kanban-taululle joka viikko demotilaisuudessa priorisoidulta ominaisuuslistalta. Kuvan 18 vuokaavio esittää prosessia yhden työkortin etenemisestä alusta loppuun. Kuvattu tilanne on projektin puolivälistä. Lyhenne tkortti tarkoittaa työkorttia, fk fyysistä Kanban-taulua ja lyhenne vk verkossa olevaa sähköistä Kanban-taulua. Koska pisteessä B ei ollut fyysistä Kanban-taulua, prosessi oli heidän osaltaan yksinkertaisen suoraviivainen ja työkortti siirrettiin Doing-sarakkeesta suoraan Done-sarakkeeseen. Tehtävien arvioinnit tehtiin henkilökohtaisesti ilman vertaisarviointia, joten Review-saraketta ei tarvittu. Myöskään tehtävän analysointiin ei katsottu tarvittavan erillistä saraketta. Prosessi on esitetty kuvan 18 vasemmassa reunassa. Pisteessä A työnkulku eteni kahden taulun ylläpitämisen vuoksi hieman monimutkaisemmin. Kuvan 18 oikea reuna kuvaa tätä prosessia. Arvionnin jälkeen työkortti siirrettiin joko takaisin Doing-sarakkeeseen tai eteen päin Done-sarakkeeseen. Done-sarakkeen jälkeen oli vielä käytävä erikseen siirtämässä verkossa olevan Kanban-taulun työkortti sarakkeeseen Done. 4.4 Projektin onnistuminen Projektin tavoitteena oli valmistaa protoversio uudenlaiselle tuotteelle. Samalla projekti oli opiskelijoille turvallinen tapa tutustua työelämään. Jälkiarviointipäivänä joku tiimiläisistä mainitsi hieman pettyneenä tuotteen olevan fake product. Koska 73 Kuva 18: Vuokaavio Kanban-taulujen käytöstä projektin puolivälissä. kyseessä oli kuitenkin protoversio, ei ollut lähtökohtaisestikaan tarkoitus toimittaa valmista tuotetta markkinoille. Poppendieckien [PoP06] kirjan nimi Implementing Lean Software Development: From Concept to Cash, kuvaa prosessia tuotteen valmistuksesta aina tilauksesta toimitukseen. Tämä tarkoittaa, että tuotteella pitää olla konsepti ennen sen valmistamista. Tiimiläisillä ei ollut valmista konseptia. Ennen projektin alkua konseptia alustettiin asiakkaan pitämässä pintapuolisessa tuotteen esittelytilaisuudessa. Projektin tuottamaa protyyppiä voitaisiin tarkastella enemmän konseptin määrittelynä kuin tuotteen valmistamisena. Aikarajoja kunnioitettiin, eivätkä aikataulut pitkittyneet. Jokaisen iteraation lopuksi pidetyssä demotilaisuudessa oli aina jotain uutta ja mielenkiintoista esitet- 74 tävää asiakkaalle. Asiakkaalla ei ollut tarkkoja odotuksia projektilta, mutta heiltä oltiin erittäin tyytyväisiä lopputulokseen. He voivat välittömästi käyttää sovellusta hyödykseen. Myös oppilaat olivat tyytyväisiä sovellukseen ja saamaansa oppimiskokemukseen. Havaitut hukat eivät vaikuttaneet projektin lopputulokseen likaa, vaan onnistuttiin tuottamaan prototyyppi, johon asiakas oli tyytyväinen. Ilman havaittuja hukkia tuotteeseen oltaisiin kuitenkin oletettavasti ehditty tekemään enemmän ominaisuuksia. 5 Johtopäätökset Lean voidaan määritellä toisiinsa linkitettyjen arvoa tuottavien toimintojen jatkumoksi, josta on poistettu arvoa tuottamattomat toiminnot. Toisin sanoen arvovirtaus on tehokas ja työtavoissa ei ilmene hukkia. Tämän tutkielman tarkoitus oli selvittää, voiko hajautettu ohjelmistokehitys olla edellä mainitun määritelmän mukainen. Tuloksia varten tutkittiin ja analysoitiin CoT-projektin työskentelyä. Luvussa 5.1 vastataan tutkimuskysymyksiin ja pohditaan niiden merkittävyyttä. Luvussa 5.2 ehdotetaan tapaustutkimuksesta johdettua tarkistuslistaa hajautetun projektin yhteistoiminnan ja kommunikaation tehostamiseksi. 5.1 Empiiriset tapaustutkimuksen tulokset Tässä luvussa vastaan tutkimuskysymyksiin: 1. Työskentelivätkö projektilaiset tehokkasti ilman hukkia. 2. Oliko arvovirtaus tehokas. 75 5.1.1 Työtapojen tehokkuus Oletettavasti CoT-projektissa ajauduttiin modulaarisuuteen. Tähän viittaavat projektin alussa käytetyt erilliset Kanban-taulut, yhteisen Kanban-taulun jako kahteen kaistaan ja projektin toisena ja kolmantena päivänä pisteessä A esitetyt kysymykset: Mitä se hajautus edes on? Miten jaetaan työtä/tehtäviä AB? Mitä se B tekee? Projektin tiukka modulaarisuus olisi saattanut aiheuttaa ongelmia, mikäli asiaa ei oltaisi tiedostettu. Vaikka tarkoitus ei välttämättä ollut työskennellä niin itsenäisesti kuin tiimit lopulta työskentelivät, vältyttiin vakavilta ongelmilta. Haastattelussa kävi ilmi, että lisääntynyt kommunikaatiotarve oltiin tiedostettu. Joitakin hukkia kuitenkin ilmeni, kun kommunikaatio ei ollut aina tehokasta. Useimmiten tehottomuus johtui siitä, että välitetty tieto oli ollut yhteisellä Kanban-taululla tai sähköpostiviestissä puutteellista. Tästä voidaan päätellä, että pelkästään kommunikaatiotarpeen [määrä] tiedostaminen ei riitä, vaan myös kommunikaation sisältö [laatu] on tärkeää. Uudelleen opettelu versionhallintaohjelmasta hävinneen koodin takia oli mitä varmimmin käyttäjätason ongelma. Tiimiläiset järjestivät pienen koulutuksen versionhallintaohjelman käytöstä. Joko koulutus oli riittämätön, ohjelmassa oli virhe tai käyttäjä käytti ohjelmaa väärin. Oletettavin syy tähän hukkaan on viimeisin. Virheet korjattiin heti niiden löydyttyä eikä niitä siirretty virhelistoille odottamaan testausvaihetta. Virhelista on virheiden varasto eli hukkaa. Projektissa onnistuttiin välttymään tältä hukalta, mutta toisaalta valmiiseen tuotteeseen saatoi jäädä virheitä, sillä testausta ei suoritettu järjestelmällisesti. Löydetylle virheelle olisi voitu kirjoittaa testi, ettei se toistuisi myöhemmin. Vaikutti siltä, että testaus- 76 ta ei pidetty niin tärkeänä, koska asiakas ei ollut määritellyt tiukkoja laatukriteereitä tuotteelle. Testausta vähensivät myös testauspalvelinongelmat. Työtavat olivat tehokkaita siinä mielessä, että virheet korjattiin heti, mutta tehottomia virheiden ehkäisemiseksi. Osittain tehtyä työtä olisi ollut vähemmän, mikäli versionhallintaohjelmisto ja testauspalvelin oltaisiin saatu toimimaan projektin alusta asti. Testaamatonta koodia ei kannata integroida yhteiseen koodikantaan, ja testaamista ei voida suorittaa tehokkaasti ennen testauspalvelimen toimimista. Tehtävien vaihtelu liittyi Kanban-taulun työkorttien määrittelyyn. Kokemuksen puute vaikeutti tehtävien määrittelyä ja toisaalta Kanban menetelmänä oli monelle vieras. Projektin alussa pidettiin pieni Kanban-koulutus, mutta pelkkä koulutus ei kuitenkaan riitä tehtävien määrittelyn osaamiseen. Tehtävien vaihtelu liittyi siis vahvasti kokemustaustaan ja osaamiseen. Odottelu on hukkaa, jota ei voida käytännössä täysin ehkäistä missään projektissa. Sitä voidaan kuitenkin pyrkiä minimoimaan. Ilmeisin odottelu, mitä tiimiläiset itse olisivat voineet vähentää, aiheutui sovittujen asioiden noudattamatta jättämisestä. Esimerkiksi sovittujen taukojen noudattaminen olisi tehostanut kaikkien työaikaa. Paikalla olevat eivät olisi joutuneet odottelemaan ja myöhässä paikalle tulleet eivät olisi tarvinneet kertausta, jos joitakin asioita oltiin jo käsitelty. Ylivoimaisesti suurin osa tiimiläisistä riippumattomasta hukasta aiheutui odottelusta: tuoteomistajan tavoittaminen, IT-tuki, laitteistohankinnat, asiakkaan palomuurin aukeneminen ja web service -linkin toimiminen. Viimeiset kaksi seikkaa olivat hukkaa tiimiläisten näkökulmasta. Ne olivat projektin kannalta myös merkittävimmät hukat. Usea tiimiläinen teki turhaa ohjelmointityötä useamman viikon ajan. Toiminnallisuudet joihin palomuuri ja web service liittyivät, olivat tärkeitä asiakkaalle, joten tiimiläiset olettivat asiakkaan saavan IT-asiansa valmiiksi projek- 77 tia varten. Asiakkaaseen luotettiin, eikä asioiden laita selvinnyt tiimiläisille ja tuoteomistajille kuin vasta projektin puolivälissä, jolloin toteutetut toiminnallisuudet jouduttiin hylkäämään. Yhteistoiminta- ja kommunikaatio-ongelmia analysoitiin luvussa 4.2.2 kalanruotokaavion avulla. Merkittävin keino tehostaa kommunikaatiota ja yhteistoimintaa on selvittää ihmisiin liittyvät ongelmat. Suurin osa kommunikaatio-ongelmista johtui enemmän tavoista ja halusta kommunikoida kuin välineistä. Myös ihmisiä ohjaavat prosessit ovat tärkeitä ja niiden hyödyntäminen on oltava järjestelmällistä. Esimerkiksi työnjohdon tulee olla johdonmukaista. Koulutuksella ja ohjeistamisella voidaan parantaa joitakin tieto/taito-kategorian ongelmia, mutta osaaminen ohjelmistokehityksessä karttuu suurimmaksi osaksi kokemuksen kautta. Kategoriaan ympäristö liittyvät syyt voidaan minimoida varmistamalla, että kaikilla projektilaisilla on samanlainen käsitys projektin tavoitteellisuudesta ja sidosryhmien välillä on riittävästi laadukasta kommunikaatiota. Esimerkiksi tiimiläiset kokivat, että tuoteomistaja oli epäjohdonmukainen, koska hän antoi eri vastaukset kummallekin tiimille. Ongelma ei kuitenkaan johtunut tuoteomistajasta, vaan siitä, että tietoa ei jaettu tiimien välillä. Tiimien työskentelystä löytyi tehokkaita toimintatapoja, kuten virheiden korjaaminen heti, tutoriaalien tekeminen Wikiin kaikkien saataville ja asiassa pysyminen demotilaisuuksissa. Edellä mainittujen kappaleiden perusteella ensimmäiseen tutkimuskysymykseen joudutaan kuitenkin toteamaan, että tiimiläiset eivät työskennelleet täysin tehokkaasti ilman hukkia. Suurin osa hukista olisi ollut ehkäistävissä noudattamalla yhteisesti päätettyjä asioita, hyödyntämällä valittuja menetelmiä ja teknologioita järjestelmällisesti ilman epäsäännöllisyyttä [mura] ja kiinnittämällä huomiota tehokkaaseen kommunikaatioon. 78 5.1.2 Arvovirtauksen tehokkuus CoT-projektissa sovellettiin imuohjaukseen perustuvaa Kanban-menetelmää, joka ei rajaa työskentelyä timeboxing-käytännön mukaisesti erillisiin pyrähdyksiin. Projektin prosessimallina oli käytössä Scrum, joten käytettiin pyrähdyksiä, mutta ilman toteutusvaiheen työlistaa, joka olisi määritellyt yksiselitteisesti, mitä seuraavan pyrähdyksen aikana tuotetaan. Kanban-menetelmän idea perustuu katkottomaan työskentelyyn, jossa tehtävät virtaavat ToDo-sarakkeesta Done-sarakkeeseen sujuvasti [KnS09]. Virtaus ei pysähdy pyrähdysten vaihtuessa, joten erillistä toteutusvaiheen työlistaa ei olisi ollut mielekästä käyttää. Pyrähdyksen aikana kaikki tehtävät valittiin Kanban-taululle tuotteen työlistalta. CoT-projektin tuotteen työlista esiteltiin luvussa 4.1.1. Kanban-menetelmää ei kuitenkaan hyödynnetty tehokkaasti. Tiimissä A Kanban-taulujen käyttö vaihteli suuresti projektin aikana. Tiimiläisten mielestä niiden käyttö oli koko projektin ajan turhaa ja häiritsevää. Tästä johtuen niiden käyttö muuttui lopulta raportoinniksi suoritetuista tehtävistä. Kummassakaan tiimissä tauluihin ei voitu luottaa, joten niillä ei voinut tehokkaasti visualisoida projektin tilaa. Luvussa 4.3.2 esitetystä kuvasta 18 ilmenee, että Kanban-prosessi oli monimutkainen. Usean eri Kanban-taulun käyttö ei ollut tehokasta. Kaksi tiimiä olisi voinut hyödyntää yhteistä sähköistä taulua, joka näkyisi esimerkiksi työtilojen seinillä olevilta näytöiltä. Tällöin vuokaaviosta poistuisi toinen reitti ja prosessi yksinkertaistuisi ja tehostuisi. Sähköiseen Kanban-tauluun olisi suositeltavaa lisätä ainakin sarakekohtainen WIP, jolla vältetään tukoksia. Arvovirtauksen tehokkuuden määrittelyksi olisi voitu tehdä arvovirtakartta vuokaavion lisäksi. Koska toimintojen välisiä odotteluita ei selvitetty, arvovirtakartasta olisi tullut epätarkka. Vuokaaviosta voidaan kuitenkin päätellä, että tiimin B 79 arvovirta oli tehokas, ehkä jopa liian yksinkertainen selventääkseen tehtävän tilaa. Tiimissä A käytettiin kahta polkua yhden tehtävän suorittamiseen, mikä monimutkaisti prosessia. Toimintoja oli tarpeeksi selventämään tehtävän tilaa, mutta arvovirtaa olisi mahdollista virtaviivaistaa poistamalla toinen reitti kaaviosta. 5.1.3 Hajautetun projektin Lean-näkökulma Suoritetun tutkimuksen perusteella CoT-projektissa ei toimittu Lean-losoan mukaisesti poistaen aktiivisesti hukkaa. Arvovirtaa olisi voitu tehostaa ja työtavoista löytyi parannettavaa. Tuloksista ei ole kuitenkaan mahdollista tehdä yleistystä, ettei hajautettu ohjelmistokehitys voisi olla Lean-periaatteiden mukaista. Tutkielman pääkysymystä voidaan lähestyä aiemmin luvussa 2.2.7 esiteltyjen kahden taulukon avulla analysoimalla, voiko jokin hajautuksen kannalta erityinen tekijä estää projektia olemasta Lean-periaatteiden ja -päämäärien mukainen. Onko esimerkiksi odottelua eri tiimien välillä aina siinä mittakaavassa, että siitä tulee merkittävä hukka? Globaaleissa projekteissa, joissa päällekkäistä työskentelyaikaa on vähän, riski pitkiin odotusaikoihin on selvä. Jatkoanalyysi on niin laaja, että se vaatii jatkotutkimusta. Projektissa kartoitetut hukat on esitetty luvun 4.2.1 taulukossa 10. 5.2 Suosituksia Tehottomasta kommunikaatiosta ja puutteellisesta yhteistoiminnasta aiheutunutta hukkaa voidaan pyrkiä ehkäisemään hajautetuissa projekteissa monin eri tavoin. Ratkaisuksi on ehdotettu muun muassa ketteriä menetelmiä [VäK08, SMÅ10], mutta kyseisen hukan ehkäisemiseen liittyy muutakin. Seuraavassa ehdotetaan hajautettujen projektien yhteistoiminnan ja kommunikaation tehostamiseksi tarkistuslistaa, joka on johdettu tapaustutkimuksesta. 80 5.2.1 Ehdotus hajautettujen projektien tarkistuslistaksi Tarkistuslista on johdettu luvussa 4.2.2 käsitellystä kalanruotokaaviosta. Listan jaottelu voitaisiin tehdä monella tapaa, mutta ohessa on haluttu seurata kalanruotokaavion jaottelua. Tarkistuslista on tarkoitettu pienille hajautetuille projekteille, joissa tiimejä on 23. Ihmiset Hajautetun projektin alussa on tarpeellista järjestää aloitustapaaminen. CoT-projektissa tiimi B saapui puoleksi päiväksi pisteeseen A, jossa pidettiin yhteinen kokous. Tämä ei ollut tarpeeksi luottamuksen saavuttamiseksi, mikä näkyi asenteissa ja ennakkoluuloissa. Parin päivän työskentely yhdessä olisi saattanut parantaa tilannetta. Aloitustapaamisen jälkeen tiimien on siis työskenteltävä yhteisessä tilassa vähintään 12 päivän ajan, jolloin toiset tiimiläiset tulevat tutuiksi. Lisätapaamisia järjestetään tarpeen mukaan erityisesti projektin ongelmallisissa kohdissa. Tällainen tilanne projektissa oli niin sanottu henkinen romahtaminen projektin puolivälin jälkeen, kun tiimi A halusi pitää yhden päivän lomaa tekemättä mitään. Lisätapaaminen olisi saattanut vähentää turhautumista, kun asioita oltaisiin voitu purkaa yhdessä. Tehokkaat ja monipuoliset kommunikaatiovälineet ovat tärkeitä työvälineitä hajautetuissa projekteissa. Sekä muodolliseen että epämuodolliseen kommunikaation tarkoitettuja välineitä tarvitaan. CoT-projektissa ei ilmennyt puutteita kommunikaatiovälineissä, vaan havaitut ongelmat liittyvät niiden käyttöön. Tiimiläisten osaamisen kartoitus on oleellinen osa aloitustapaamista. Ihmiset kokevat olevansa hyödyllisia ja arvostettuja, kun saavat tehdä osaamaansa työtä. CoT-projektissa tehtävät jaettiin pitkälti osaamisen mukaan: tiimissä A toteutettiin enemmän sovelluksen logiikkaa ja tiimissä B suunniteltiin enemmän käyttöliittymää. 81 Prosessit Tarkistuslistaan on valittu Kanban, sillä se on Lean-losoan mukainen menetelmä, jolla visualisoidaan projektin tila. CoT-projektissa menetelmän hyödyntäminen oli epäsäännöllistä ja puutteellista. Hajautetussa projektissa Kanban tulisi olla verkossa kaikkien tiimien muokattavissa, ilman eri kaistoja ja taulu voisi olla myös työtilojen seinillä erillisillä näytöillä. Paasivaaran ja Lasseniuksen [SMÅ10] mukaan Scrum-kokoukset ovat tärkein Scrum-käytäntö hajautetuissa projekteissa. Hajautetussa ympäristössä Scrum-kokoukset voidaan pitää yhteisesti. Koska kasvokkainen kommunikaatio ei ole mahdollista, kokous voidaan pitää videoneuvotteluna. CoT-projektista puuttuneet yhteiset kokoukset olisivat lisänneet tiedon välitystä, koheesioita ja luottamusta tiimien välillä sekä nopeuttaneet ongelmien havaitsemista. Lyhyet pyrähdykset selkeine päämäärineen lisäävät Välimäen ja Kääriäisen [VäK08] mukaan hajautettujen projektien näkyvyyttä ja parantavat tiimiläisten motivaatiota. Eri tiimit saavat tasaisin aikavälein palautetta tekemästään työstä, jolloin projektin suunnittelu ja muuttaminen on joustavampaa. Pyrähdysten suunnittelu voidaan tehdä yhdessä eri tiimien kesken. Tiimien yhteiset sähköiset työlistat ovat tärkeitä hajautetuissa projekteissa. Listojen on oltava kaikkien nähtävillä. Kun tiimejä on vähän, voidaan pitää yhteiset demotilaisuudet, jolloin palautetta voidaan antaa ja vastaanottaa tehokkaasti. Kaikkien tiimiläisten ei tarvitse osallistua demotilaisuuteen. Retrospektiivi on tiimien pitämä kokous, jossa tarkastellaan pyrähdyksen onnistumista tuotteen kannalta. Kokous pidetään pyrähdyksen päätteeksi. CoT-projektissa pidettiin demotilaisuuden päätteeksi pieni keskustelu päättyneestä pyrähdyksestä, mutta jäi epäselväksi, kuinka hyödyllinen tämä kokous oli. Retrospektiivissä voidaan hyödyntää luvussa 2.2.4 käsiteltyä ongelmanratkaisumallia PDCA. 82 Ohjelmiston elinkaarenhallinta -työkaluilla (Application Lifecycle Management tool, ALM) mahdollistetaan kellonajasta riippumaton tiedon jakaminen ja hallinta [VäK08]. Samalla ALM parantaa kommunikaatiota ja yhteistoimintaa. ALM integroi kaikki projektissa tarvittavat tiedot yhteen paikkaan. Kokonaisvaltainen ALMratkaisu on kuitenkin kallista [Kol11]. Oletettavasti halvempi ratkaisu on varmistaa, että kaikki tarvittava tieto on tallessa jossain turvallisesti ja löydettävissä helposti. Tieto/taito Jos tiimiläisillä ei ole kokemusta hajautetussa projektissa työsken- telystä, tulee siitä tarjota ohjeistusta projektin alussa. Tiimiläisten on ymmärrettävä perusperiaatteet hajautetusta ohjelmistokehityksestä, jottei sitä voida tietämättömyydestä johtuvista syistä pitää tekosyynä joidenkin ongelmien syntyyn. CoT-projektissa hajautuksen ajateltiin olevan syy osaan kommunikaatio-ongelmista. Vaikka hajautus aiheuttaakin kommunikaatio-ongelmia, niiden tiedostaminen vähentänee niistä aiheutuvaa stressiä. Myös muun ohjeistuksen tulee olla riittävää. Projektin alussa sitoudutaan arvostamaan toisia projektilaisia ja ymmärretään, että kaikilla on erilaiset kokemustaustat ja kyvyt. Tämä tarkoittaa, että muiden mielipiteitä kuunnellaan, toisia rohkaistaan ilmaisemaan omat mielipiteensä ja tiimiläisten annetaan itse valita tehtävänsä. Ympäristö Koska projekteissa tarvitaan usein asiakkaan resursseja, on asiakkaan oltava valmistautunut ja sitoutunut projektiin heti alusta alkaen. CoT-projektissa asiakkaan resursseja olivat esimerkiksi asiakkaan palomuuri. Tuoteomistajat eivät tienneet vielä projektin puolivälissä, että palomuuria ei tulla saamaan auki. Tämä aiheutti turhaa työtä ja odottelua. Asiakas oli sitoutunut ja valmistautunut, mutta vuodenvaihteessa tiukentuneet tietoturva-asiat aiheuttivat projektille odottamattomia ongelmia. Selkeät tavoitteet ja odotukset projektilta lisäävät arvon tuntemusta. CoT- 83 projektissa asiakkaalla ei ollut selkeitä odotuksia projektilta, sillä ainut tavoite oli tuottaa protyyppi, johon tehdään niin paljon toiminnallisuuksia kuin ehditään. Tiimiläiset kokivat tämän stressaavaksi, eikä heillä ollut aina selkeää kuvaa siitä, mikä toiminnallisuus tai tehtävä on asiakkaalle tärkein, vaikka toteutettavat toiminnallisuudet priorisoitiin tuoteomistajan toimesta viikoittain. Kirjoittaja ei saanut selvitettyä syytä tähän epäselvyyteen. Joka tiimissä on tunnettava toimiala ja toiminnallisuudet, joita sovellukseen ollaan tuottamassa. Välimäen ja Kääriäisen mukaan tietoa tiimien välillä voidaan jakaa vierailijoiden toimesta ja käyttämällä toteutusvaiheen työlistaa, johon on määritelty toiminnallisuuksien tarkemmat ominaisuudet. CoT-projektissa tuoteomistaja T1 vieraili tasaisin väliajoin kummassakin pisteessä. Kuten aiemmin on käynyt ilmi, tämä ei välttämättä riittänyt tiedon kulkuun tiimien välillä, koska tuoteomistajan kanssa päätettyjä aioita ei aina välitetty toiselle tiimille. Ratkaisuna tähän kirjoittaja ehdottaa sopimuksia toimintatavoista ja -käytännöistä. Voidaan esimerkiksi laatia sopimus, että tuoteomistajan kanssa päätetyt asiat talletetaan jonnekin kaikkien tiedossa olevaan paikkaan, jonne kaikilla tietoa tarvitsevilla henkilöillä on pääsy. Eräs testaamisen arvoinen ratkaisu voisi olla tiedon tallettaminen verkkosivulle, josta tiimiläisille lähtee RSS-ilmoitus aina kun sivua päivitetään. Tällöin jokainen tiimi pysyy ajantasalla päätetyistä asioista, ja tuoteomistaja voi luottaa siihen, että asia välittyy joka pisteeseen. Johtaminen Kirjoittaja suosittelee, että hajautus toteutetaan Scrum-prosessi- mallilla, jossa tiimien välisessä kommunikaatiossa otetaan huomioon suurempi muodollisuuden tarve. Ennen projektin alkua on selvitettävä, jos tarvitsee järjestää Scrum-koulutusta. Sovittuja menetelmiä ja käytäntöjä on noudatettava tai toimintatapojen epäsäännöllisyys aiheuttaa ihmisten ylikuormitusta, joka edelleen aiheuttaa erinäisiä hukkia [Wom06]. 84 Tiimit saattavat tarvita myös Kanban-koulutusta. Jos tiimeillä on yhteinen koulutus, voidaan samalla sopia kuinka yhteistä Kanban-taulua aletaan hyödyntää. Tulee sopia ainakin saraketyypit ja sarakekohtaiset WIP-luvut. CoT-projektissa oli jonkinlainen koulutus, mutta eri pisteissä menetelmää hyödynnettiin eri lailla. Jokaiseen tiimiin täytyy Välimäen ja Kääriäisen [VäK08] mukaan järjestää tarvittavat Scrum-roolit, jotta kommunikaatio olisi tehokasta eri pisteiden välillä. Samat roolit on järjestettävä jokaiseen pisteeseen. Yhdellä henkilöllä voi olla myös monta roolia. CoT-projektissa ei nimetty rooleja tuoteomistajaa lukuun ottamatta. Scrum-prosessimalli oli useimmille täysin uusi asia, joten saattaa olla, ettei nimetyistä rooleista olisi ollut merkittävää hyötyä. Hajautettuja projekteja on vaikea koordinoida ja kontrolloida [ÅgF06]. Sovituilla toimintatavoilla ja -käytännöillä voidaan pyrkiä vähentämään tiimien välisiä yhteistoimintaongelmia. Sopimuksilla voidaan varmistaa, että eri pisteissä työskentelevät tiimiläiset noudattavat yhteisesti päätettyjä asioita ja siten tehostetaan myös yhteistoimintaa. Haastatteluissa ilmeni, että CoT-projektissa oltaisiin toivottu sopimuksia, joilla olisi estetty liian vahvojen persoonien dominoiminen. Laitteet/välineet Projektin alussa on varmistettava, että infrastruktuuri on no- pea ja tehokas. Tietoliikenneyhteyksien on toimittava hajautetussa projektissa moitteettomasti. Tarkistuslista Taulukkoon 11 on koottu hajautettua projektia varten lista, jo- ta täyttämällä voidaan tarkistaa, että tarvittavat asiat on huomioitu. Sarakkeeseen OK merkitään X, jos käytäntö on kunnossa ja järjestetty. Tarkistuslistaa voidaan tarkentaa projektikohtaisesti: kommunikaatiovälineisiin voidaan lisätä valitut välineet, ALM-työkalut voidaan tarkentaa, sopimukset voidaan listata tarkasti ja niin edelleen. 85 Kategoria Ihmiset Käytäntö OK Aloitustapaaminen ja työskentely yhdessä Lisätapaamiset tarvittaessa Tehokkaat kommunikaatiovälineet Osaamisen kartoitus Prosessit Yhteinen sähköinen Kanban Yhteiset Scrum-kokoukset Pyrähdykset _kpl ja niiden suunnittelu yhdessä Sähköiset työlistat Yhteiset demotilaisuudet Yhteiset retrospektiivit Tarvittavat ALM-ratkaisut Tieto/taito Tarpeeksi ohjeistusta projektin alussa Sitoudutaan arvostamaan toisia Ympäristö Valmistautunut ja sitoutunut asiakas Selkeät tavoitteet ja odotukset Tiedonkulku sidosryhmien ja tiimien välillä Johtaminen Tarvittaessa Scrum-koulutus Tarvittaessa Kanban-koulutus Tarvittavat Scrum-roolit Sopimukset toimintatavoista ja -käytännöistä Laitteet/välineet Tehokas infrastruktuuri Taulukko 11: Pienen hajautetun projektin tarkistuslista. 5.3 Tutkimuksen rajoitukset Tapaustutkimus on tutkimusmenetelmä, jossa keskitytään ymmärtämään yksittäistä tapahtumaa. Yhden tapaustutkimuksen tuloksista ei voida tehdä yleistyksiä, mutta 86 toisaalta niiden avulla on mahdollista tuottaa uudenlaisia teorioita [Eis89]. Suoritetusta tapaustutkimuksesta ei näin ollen voitu johtaa yleistyksiä, mutta tuloksista voitiin kuitenkin johtaa jatkotutkimuksen aiheita. Tieteellisestä näkökulmasta on tärkeää huomioida, että tutkimuksen tulokset perustuvat haastateltavien subjektiivisiin näkemyksiin ja kirjoittajan tulkintoihin havainnoistaan. Koska kyseessä oli hajautettu projekti, havainnoija ei voinut olla paikan päällä kummassakin pisteessä. Siten voidaan ajatella, että havaintojen määrä oli karkeasti puolet siitä, mitä se olisi voinut olla keskitetyssä projektissa. Havainnot olisivat voineet olla erilaisia toisessa pisteessä, jossa kaikki puhuivat suomen kieltä. Haastateltaviksi valittiin vain suomalaisia opiskelijoita. Vaikka projektissa oli eniten suomalaisia henkilöitä, olisi voinut olla hyödyllistä haastatella myös muiden kulttuurien edustajia. Tutkimusta olisi voinut monipuolistaa myös haastattelemalla Software Factoryn opettajia ja tuoteomistajia. 6 Yhteenveto Tutkielman tavoitteena oli selvittää, missä määrin hajautettu ohjelmistokehitys voi olla Lean-periaatteiden ja päämäärien mukaista. Ohjelmistoprojektien hajautusta ja Lean-ohjelmistokehitystä on tutkittu erillisinä teemoina, mutta yhdistettynä niitä on tutkittu vähemmän. Tutkielmassa ongelmaa analysoitiin lähdekirjallisuutta hyödyntäen ja suorittamalla empiirinen tapaustutkimus. Lean-losoa sisältää useita periaatteita ja päämääriä. Arvoa tuottamaton toiminta eli hukka on Leanlosoan keskeisin käsite, sillä sen määrä kuvaa tietyllä tasolla projektin tehokkuutta. Tutkimuskysymystä lähestyttiin analysoimalla mitä hukkia projektissa esiintyi ja kuinka tehokasta tiimiläisten työnkulku oli. 87 Tutkielman materiaalia varten käsiteltiin aiheen kannalta keskeisimmät käsitteet: hajautettu ohjelmistokehitys, Lean-losoa ja yleisimmät ketterät kehitysmallit (agile software development). Hajautus voi olla ajallista, maantieteellistä tai sosiokulttuurista. Lisäksi se voidaan nähdä ulkoistamisena tai yrityksen omien resurssien käyttämisenä ja lokaalina tai globaalina. Kirjallisuudessa ei ole vielä yksimielisyyttä siitä, miten hajautus tulisi organisoida, jotta työskentely olisi tehokasta. Joidenkin mielestä hajautus ei ole koskaan kannattavaa. Hajautus on kuitenkin yleistä, vaikka siihen liittyy uhkia. Riippuu usein katsantokannasta, nähdäänkö jokin seikka uhkana vai etuna. Lean-losoan päämääränä on jatkuva prosessien tehostaminen ja arvon tuottaminen asiakkaalle. Arvoa tuotetaan poistamalla toiminnoista kaikki havaitut hukat. Ohjelmistoprosesseja voidaan tehostaa hyödyntämällä ketterien kehitysmallien menetelmiä ja käytäntöjä. Esimerkiksi pienet julkaisut lisäävät arvoa tarjoamalla kehittäjille arvokasta palautetta usein. Tutkielmassa suoritettiin tapaustutkimus Software Factory -kurssilla talvella 2011. Tapaustutkimuksen projekti oli hajautettu kahteen pisteeseen. Toisessa pisteessä työskenteli suomenkielisiä ja toisessa sekä suomenkielisiä että ulkomaalaisia yliopisto-opiskelijoita. Tutkimuksen aineisto kerättiin havainnoimalla työskentelyä paikan päällä ja haastattelemalla kehittäjiä. Tehoton kommunikaatio on hukka, joka aiheuttaa merkittäviä ongelmia hajautetuissa projekteissa. Kommunikaatiota voi olla liian vähän tai se voi olla laadullisesti heikkoa. Tehoton kommunikaatio aiheuttaa myös muita hukkia ja on sen vuoksi erityisen merkittävä hukka. Kirjoittaja valitsi tutkielman tarkemman analyysin kohteeksi yhteistoimintaongelmat ja siihen vahvasti liittyvän tehottoman kommunikaation. Tapaustutkimuksen projektissa havaittiin tehottoman kommunikaation lisäksi myös muita hukkia ja työnkulku olisi voinut olla tehokkaampaa. Osa hukista olisi ollut ehkäistävissä järjestelmällisyydellä ja sovittuja asioita noudattamalla. Käytet- 88 tyä Kanban-mentelmää yksinkertaistamalla oltaisiin voitu tehostaa työnkulkua ja poistaa joitakin hukkia kuten tehtävien vaihtelu. Tapaustutkimuksella ei pyritty tuottamaan yleistettäviä vastauksia tutkimuskysymyksiin, vaan tavoitteena oli analysoida tulosten merkittävyyttä. Tuloksista voitiin johtaa jatkotutkimuksen aiheita. 6.1 Jatkotutkimuksen aiheita Tutkielmassa ei otettu kantaa projektin tuottamaan ohjelmiston arkkitehtuuriin, vaikka siitä on olemassa seikkaperäinen dokumentaatio. Conwayn lain [Con68] mukaan ohjelmiston arkkitehtuuri heijastaa sitä rakentavan organisaation rakennetta. Lakia tulee tutkia vielä hajautetussa ympäristössä, jotta saadaan selville, heijastaako hajautetun projektin toteuttama ohjelmiston arkkitehtuuri tiimien rakennetta. Tuloksista voidaan analysoida tiimien välistä kommunikaatiota. Kanban visualisoi työnkulkua ja siten se on hyödyllinen työkalu hajautetuissa projekteissa. Jatkotutkimusta tarvitaan selvittämään, kuinka Kanban-menetelmää olisi tehokkainta hyödyntää hajautetuissa projekteissa, kun tiimejä on useampi kuin kaksi. Käyttöliittymää suunnitellut UCD-kurssi oli liian eristetty muusta projektista. Yhteistoiminta tiimien ja UCD-kurssin välillä olisi voinut olla tehokkaampaa. Käyttöliittymäsuunnittelun ja Scrum-kehitysmallin menestyksellinen yhdistäminen hajautetuissa projekteissa tarvitsee lisätutkimusta. Jatkotutkimuksessa työnkulkua tulee kartoittaa mahdollisen vuokaavion lisäksi myös arvovirtakartoilla, joilla havainnollistetaan odottelun aiheuttamaa hukkaa. Luvussa 5.2.1 ehdotettua hajautetuille projekteille tarkoitettua tarkistuslistaa yhteistoiminnan ja kommunikaation tehostamiseksi täytyy tutkia vielä lisää ja tarkentaa. 89 Poppendieckien [PoP06] mukaan tuotteella pitää olla konsepti ennen sen toteuttamista. Projektissa täydellistä konseptia ei ollut ja moni tiimiläinen koki sen ongelmaksi. Koettiin, että tekemisestä puuttui tavoitteellisuus. Tutkimusta aiheesta tulee jatkaa tarkastelemalla, missä määrin hajautettu ohjelmistokehitys voi olla Lean-periaatteiden ja -päämäärien mukaista, kun konseptia ei olla määritelty täydellisesti. Tutkielman aihe oli laaja, eikä tulosten odotettu kattavan kaikkia hajautetussa projektissa ilmeneviä ongelmia. Oleellista oli analysoida, mistä kartoitetut hukat johtuivat ja olisiko joitakin niistä voitu ehkäistä. Suoritetusta tapaustutkimuksesta ei voida tehdä yleistettäviä johtopäätöksiä kysymykseen, voiko kehitystyö hajautetussa ympäristössä olla Lean-periaatteiden ja päämäärien mukaista. Vastausta varten tarvitaan lisää tutkimusta. Lähteet Abr10 Abrahamsson, P., Unique Infrastructure Investment: Introducing the Software Factory. URL Agi01 Software Factory Magazine, http://www.softwarefactory.cc/. Principles Behind the Agile ASR02 [30.8.2011]. Manifesto., agilemanifesto.org/principles.html. 1,1(2010), sivut 23. 2001. http:// [12.4.2011]. Abrahamsson, P., Salo, O., Ronkainen, J. ja Warsta, J., Agile Software Development Methods: Review and Analysis. portti, VTT Publications, 2002. URL publications/2002/P478.pdf. Bas93 URL Tekninen ra- http://www.vtt.fi/inf/pdf/ [23.5.2011]. Basili, V. R., Applying the Goal/Question/Metric Paradigm in the Experience Factory. Proceedings of the Tenth Annual CSR (Centre for 90 Software Reliability) Workshop, Application of Software Metrics and Quality Assurance in Industry, Bec99 Beck, K., 1993, sivut 123. Extreme Programming Explained: Embrace Change. Addison- Wesley Professional, 1999. BXV10 Barta, D., Xia, W., VanderMeer, D. ja Dutta, K., Balancing Agile and Structured Development Approaches to Successfully Manage Large Distributed Software Projects: A Case Study from the Cruise Line Indus- Communications of the Association for Information, try. 27,1(2010), sivut 379394. Cal08 Caldwell, K., Managing Outcomes in a Lean Enterprise. azine. Quality Mag- http://www.qualitymag.com/CDA/Articles/Feature_ URL Article/BNP_GUID_9-5-2006_A_10000000000000452187. CoC05 [12.4.2011]. Cook, C. ja Churcher, N., Modelling and Measuring Collaborative Software Engineering. Proceedings of ACSC2005: Twenty-Eighth Aus- tralasian Computer Science Conference, volume 38 of Conferences in Research and Practice in Information Technology, Con68 Conway, M. E., How Do 14,5(1968), sivut 2831. URL committees.html. CuS96 Cusumano, an M. Approach ware Product Institute 1996. of URL Datamation, Invent? http://www.melconway.com/research/ [8.8.2011]. A. for Committees 2005, sivut 267277. ja Selby, Balancing Development. Technology R. W., Flexibility Synchronize-and-stabilize: and Tekninen (MIT), Sloan Structure raportti, School of in Soft- Massachusetts Management, http://dspace.mit.edu/bitstream/handle/1721.1/ 2636/SWP-3930-36131765.pdf?sequence=1. [18.7.2011]. 91 Eis89 Eisenhardt, search. 550. K. M., Building Theories The Academy of Management Review, URL Case Study Re- 14,4(1989), sivut 532 http://pages.cpsc.ucalgary.ca/~sillito/cpsc-601. 23/readings/eisenhardt-1989.pdf. Åge06 from [13.9.2011]. Ågerfalk, Pär, J., Towards Better Understanding of Agile Values in Global Software Development 1. Proceedings of the Workshop on Ex- ploring Modeling Methods for Systems Analysis and Design (EMMSAD'06), held in conjunctiun with the 18th Conference on Advanced Information Systems (CAiSE'06), Luxembourg, Luxembourg, EU, 2006, sivut 375382. ÅgF06 Ågerfalk, Pär, J. ja Fitzgerald, B., Flexible and Distributed Software Processes: Old Petunias in New Bowls. Communications of the ACM, 49,10(2006), sivut 2734. GMS10 Green, R. Mazzuchi, T. ja Sarkani, S., Communication and Quality in Distributed Agile Development: An Empirical Case Study. Academy of Science, Engineering and Technology, World 61,49(2010), sivut 322328. GSL07 Graebsch, M., Seering, W. P. ja Lindemann, U., Assessing Information Waste in Lean Product Development. Proceedings of the 16th Interna- tional Conference on Engineering Design (ICED07), Gum07 Gumm, D.-C., Mutual Dependency of Distribution, Benets and Causes: An Empirical Study. Proceedings of the International Conference on Global Software Engineering (ICGSE '07), HeG99 2007, sivut 112. 2007, sivut 113124. Herbsleb, J. D. ja Grinter, R. E., Splitting the Organization and In- 92 HMF01 tegrating the Code: Conway's Law Revisited. in 21st International Conference on Software Engineering (ICSE 99), 1999, sivut 8595. Herbsleb, J. D., Mockus, A., Finholt, T. A. ja Grinter, R. E., An Empirical Study of Global Software Development: Distance and Speed. In 23nd International Conference on Software Engineering, 2001, sivut 8190. HVZ04 Huo, M., Verner, J., Zhu, L. ja Babar, M. A., Software Quality and Agile Methods. Computer Software and Applications Conference, 2004. COMPSAC 2004. Proceedings of the 28th Annual International, 2004, sivut 520525. Koa07 Korkala, M. ja Abrahamsson, P., Communication in Distributed Agile Development: A Case Study. EUROMICRO-SEAA, 2007, sivut 203 210. Kol11 Kolehmainen, A., Alm:stä tulee arkipäivää. Tietoviikko. URL http://www.tietoviikko.fi/kaikki_uutiset/almsta+tulee+ arkipaivaa/a583887. Kon08 [13.9.2011]. Kontio, M., Architectural manifesto: Adopting agile development, Part 1, 2008. URL http://www.ibm.com/developerworks/architecture/ library/ar-archman1/index.html. KnS09 Kniberg, H. ja Skarin, M., Kanban and Scrum making the most of both. Information Queue. kanban-scrum-minibook. Lar08 [26.7.2011]. Larman, C., URL http://www.infoq.com/minibooks/ [8.8.2011]. Scaling Lean and Agile Thinking and Orga- nizational Tools. Addison-Wesley Professional, 2008. URL http://www.craiglarman.com/wiki/index.php?title=Book_-_ 93 Scaling_Lean_and_Agile_-_Thinking_and_Organizational_Tools. [23.5.2011]. Lar10 Larman, C., Practices for Scaling Lean & Agile Develop- ment: Large, Multisite, and Oshore Product Development with Large-Scale Scrum. Addison-Wesley Professional, 2010. URL http://www.craiglarman.com/wiki/index.php?title=Book_-_ Practices_for_Scaling_Lean_and_Agile. Lar11 Larman, C., Scaling Lean & Agile: Large, Multisite or Oshore Delivery. Information Queue. URL http://www.infoq.com/presentations/ Large-Multisite-or-Offshore-Delivery. LeY10 [23.5.2011]. [8.8.2011]. Lee, Seiyoung ja Yong, H.-S., Distributed Agile: Project Management in a Global Environment. Empirical Software Engineering, 15,2(2010), sivut 204217. Les11 Leskinen, S., Ken on maassa ketterin? Tietokone, 12,5(2011), sivut 5458. Mac05 MacManus, H. L., (PDVSM) Manual. Product Development Value Stream Mapping Väitöskirja, MIT Lean Advancement Initiative, 2005. Mäe11b Mäenpää, P., Haastattelut ja jälkiarvioinnit: Software Factory - projekti., 2011. Mäe11a Mäenpää, P., Havainnointipäiväkirja: Software Factory -projekti., 2011. MoH01 Mockus, A. ja Herbsleb, J., Challenges of Global Software Development. Proceedings of the 7th International Symposium on Software Metrics, 2001, sivut 182184. 94 Mid01 Middleton, P., Lean Software Development: Two Case Studies. Quality Control, MiJ11 Software 9,4(2001), sivut 241252. Middleton, P. ja Joyce, D., Lean Software Management: BBC Worldwide Case Study. Engineering Management, IEEE Transactions on, 99, sivut 113. OHÅ06 Ó Conchúir, Eoin and Holmstrom, Helena and Ågerfalk, Pär and Fitzgerald, Brian, Global Software Development: Never Mind the Problems Are There Really Any Benets? search Seminar in Scandinavia, Ohn88 Ohno, T., 29th Information Systems Re- 2006, sivut 114. Toyota Production System: Beyond Large-Scale Production. Productivity Press, 1988. PAD07 Prikladnicki, R., Audy, J., Damian, D. ja de Oliveira, T., Distributed software development: Practices and challenges in dierent business strategies of oshoring and onshoring. Global Software Engineering, 2007. ICGSE 2007. Second IEEE International Conference on, 2007, sivut 262274. Paa10 Paasivaara, M., af Ornäs, N. H., Hynninen, P., Lassenius, C., Niinimäki, T. ja Piri, A., Practical Guide to Managing Distributed Software Development Projects. Tekninen raportti, Aalto University School of Sciense and Technology, 2010. PDL08 Paasivaara, M., Durasievwicz, S. ja Lassenius, C., Distributed Agile Development: Using Scrum in a Large Project. Global Software Engi- neering, 2008. ICGSE 2008. IEEE International Conference on, sivut 8795. 2008, 95 PHS08 Pikkarainen, M., Haikara, J., Salo, O., Abrahamsson, P. ja Still, J., The Impact of Agile Practices on Communication in Software Development. Empirical Software Engineering, Pic08 13,3(2008), sivut 303337. Pichler, R., The Three M's - The Lean Triad. Information Queue. URL http://www.infoq.com/articles/lean-muda-muri-mura. [8.8.2011]. PaL06 Paasivaara, M. ja Lassenius, C., Could Global Software Development Benet from Agile Methods? Proceedings of the IEEE international conference on Global Software Engineering, PoP06 Poppendieck, M. ja Poppendieck, T., velopment: From Concept to Cash. Ram98 2006, sivut 109113. Implementing Lean Software De- Addison-Wesley Professional, 2006. Raman, S., Lean Software Development: Is it Feasible? Avionics Systems Conference. The AIAA/IEEE/SAE, 17th Digital 1,1(1998), sivut 1318. RCM06 Ramesh, B., Cao, L., Mohan, K. ja Xu, P., Can Distributed Software Development Be Agile? Communications of the ACM, 49,10(2006), sivut 4146. RuH09 Runeson, P. ja Host, M., Guidelines for Conducting and Reporting Case Study Research in Software Engineering. ing, Roy70 Empirical Software Engineer- 14,2(2009), sivut 131164. Royce, W. W., Managing the Development of Large Software Systems. Technical Papers of Western Electronic Show and Convention WesCon, 1970, sivut 19, URL http://www.cs.umd.edu/class/spring2003/ cmsc838p/Process/waterfall.pdf. SMÅ10 [2.9.2011]. Smite, D., Moe, N. B. ja Ågerfalk, P. J., Springer, 2010. Agility Across Time and Space. 96 SWL99 Sobek, D. K., Ward, A. C. ja Liker, J. ples of Set-Based Concurrent Engineering. view, 40,2(1999), sivut 6783. Toyotas.pdf. VäK08 URL K., Toyota's Princi- Sloan Management Re- http://6sigma.mty.itesm.mx/ [19.7.2011]. Välimäki, A. ja Kääriäinen, J., Patterns for distributed scrum - a case study. Proceedings of the 4th International Conference on Interoperabil- ity for Enterprise Software and Applications, IESA 2008, 2008, sivut 8597. WoJ96a Womack, J. P. ja Jones, D. T., Beyond Toyota: How to Root Out Waste and Pursue Perfection. Harvard Business Review, Lean Thinking. WoJ96b Womack, J. P. ja Jones, D. T., WJR90 Womack, J. P., Jones, D. T. ja Roos, D., the World. Wom06 Rawson Associates, 1990. URL muda.pdf. Simon & Schuster, 1996. The Machine That Changed Womack, J., Mura, Muri, Muda? ELetter. my. 74, sivut 140158. Lean Enterprise Acade- http://www.leanuk.org/downloads/jim/mura_muri_ [4.4.2011]. 1 Liite 1. Sanasto Ohessa on listattu CoT-projektiin liittyvien termien selitykset. Asiakas Tieto Oyj Tuoteomistaja Tiimiläinen Asiakkaan edustaja Pisteessä A tai B työskentelevä kehittäjä Projektilainen Tuoteomistaja tai tiimiläinen 1 Liite 2. Haastattelukysymykset Tapaustutkimuksen haastatteluissa esitetyt kysymykset on listattu oheen. Jokainen haastattelu eteni eri lailla, joten kaikkia kysymyksiä ei esitetty kaikille haastateltaville. Prosessi ja työkalut Minkälainen prosessimalli teillä oli? Minkälainen työkaluketju (toolchain) tiimeillä on? Onko testausta paljon vielä edessä? Mitä erityistä työkaluketjussa on hajautuksen kannalta? Jouduttiinko tekemään enemmän koodin refaktorointia, koska projektissa on kaksi tiimiä? Suunnitellaanko pyrähdykset tiimien kesken? Saatiinko tuotettua tuote, jonka asiakas oli halunnut? Oliko asiakas tyytyväinen? Aiheuttivatko tekniset ongelmat vaikeuksia projektin etenemiseen? Onko siis Hudson-palvelimen toimimattomuus tiimiläisistä riippumaton asia? Kanban Miten Kanban-menetelmää hyödynnettiin? Oliko Kanban-taululla realistinen määrä tehtäviä? Määriteltiinkö tehtävät hyvin eli pilkottiinko tehtävät tarpeeksi pieniksi? Kuinka tehtävä hyväksyttiin suoritetuksi? Oliko odottelua? Jouduttiinko joskus keskeyttämään jokin tehtävä siksi, että huomattiin, että jokin muu asia on hoidettava loppuun ennen kyseistä tehtävää? Suunniteltiinko joitain tehtäviä liian aikaisin? liian tarkkaan? turhaan? Demo Käsiteltiinkö demossa vain demoon kuuluvia asioita? Miten tehtävät jaetaan tiimien kesken? Määriteltiinkö toiminnallisuudet demossa asiakkaan kanssa? Saatiinko demossa seuraavaan pyrähdykeen valitut tehtävät aina tehtyä ajallaan? Pystyttiinkö tehtäviä muokkaamaan niin, että ne ehdittäisiin tekemään seuraavaan demoon sovitusti? Kommunikaatio/Informaation kulku 2 Käytettiinkö tiimien väliseen kommunikaatioon sähköpostia? Oliko tehtävissä päällekkäisyyksiä tiimien välillä? Oliko sellaisia kehittäjäryhmä, joissa on henkilöitä kummastakin tiimistä? Oliko kommunikaatiota tiimien välillä tarpeeksi? Miten sitä voisi parantaa? Oliko kommunikaatiota tiimien ja asiakkaan välillä tarpeeksi? Miten Wikiä hyödynnettiin? Oliko tilanteita, ettei tiedetty mitä jonkin ohjelman toiminnallisuuden on tarkoitus tehdä? Miten tilanne on ratkaistu? Onko asiakas saatu aina tarvittaessa kiinni? Onko tarvittava tieto ollut aina saatavissa? Tiesivätkö kehittäjät aina, mitä heidän tulee tehdä? Oletteko joutuneet pyytämään toiselta tiimiltä apua? Jos tarvittiin apua, jouduttiinko odottelemaan toisen tiimin/henkilön vastausta? Oletko kokenut tätä ongelmaksi? Sosiaaliset näkökohdat Oliko kulttuuri- tai persoonallisuuseroilla merkitystä kommunikaatioon liittyen? Tulivatko tiimit hyvin toimeen keskenään? Vaikuttiko se työnkulkuun? Jouduttiinko asioita puskemaan läpi? Hajautus Miten hajautus näkyy projektissa? Onko asiakkaaseen oltu tarpeeksi yhteydessä? Miten hajautus toimi projektissa? Tarvittaisiinko hajautettuun projektiin henkilö, jolla on vahva näkemys siitä, mitä hajautus on?
© Copyright 2024