Lean MITEN POISTAA TURHA, OPPIA JA KESKITTYÄ OLENNAISEEN
Esityksen sisältö Mitä on Lean? Lean työskentelynä Lean Startup Lean Canvas Customer Development Minimun Viable Product
Mitä on Lean? Ajattelutapa, jonka päämääränä on poistaa toiminnasta ja prosesseista kaikki turha, jotta tuote voidaan toimittaa asiakkaalle nopeammin ja laadukkaampana. Seitsemän pääperiaatetta, joita noudattamalla ylempi pyritään saavuttamaan 1. Hankkiudu eroon turhasta 2. Tuota laatua 3. Kasvata tietoa 4. Lykkää sitoutumista 5. Tuota nopeasti 6. Kunnioita ihmistä 7. Optimoi kokonaisuus
1. Hankkiudu eroon turhasta Bugit Automatisoidut testit Ylimääräiset ominaisuudet Keskity vain siihen mitä asiakas todella tarvitsee Tiedonkulun pituudesta johtuva ymmärryksen hämärtyminen Vältä turhia tiedonkulun askeleita Odottaminen Asiakas/asiakkaan edustaja aina saatavilla Työjonot Työn keskeytykset ja siirtymiset Keskity yhteen asiaan kerrallaan Ylimääräiset prosessit Poista menettelytavat, jotka eivät tuota lisäarvoa
2. Laatua sisältäpäin Laatua ei voi tarkastaa vasta tuotannon loppuvaiheessa. Koodin testaaminen sitä mukaa kun sitä kehitetään (yksikkötestit) ehkäisee tulevien muutosten aiheuttamien virheiden läpipääsyn huomaamatta
3. Kasvata tietoa Älä toista virheitä Tiedon omistajuus Tiimin muiden jäsenten ei pitäisi joutua painimaan ongelmien kanssa, jotka olet jo ratkaissut Kaiken tiedon tulee olla kaikkien saatavilla Keksi keinoja, joiden avulla tiimi voi kasvattaa yhteistä tietoaan Kommentoi koodia kattavasti Perustele valintasi ja päätöksesi
4. Lykkää sitoutumista Tee päätökset vasta, kun tarpeeksi tietoa on saatavilla Älä kuitenkaan odota liian pitkään Odota viime hetkeen ennen kuin sitoudut peruuttamattomaan päätökseen Kasvata tänä aikana tietoa mahdollisimman paljon (tutki vaihtoehtoja, ominaisuuksia yms.) Mahdollisuuksien mukaan kokeile eri vaihtoehtoja ennen sitoutumista
5. Julkaise usein Kehitä ominaisuuksia tarpeeksi pienissä osissa Asiakkaalla on mahdollisuus nähdä ja antaa palautetta ominaisuuksista Näin myös tarvittavat muutokset ovat pieniä Lopputulos vastaa paremmin asiakkaiden tarpeita samalla, kun turhia ominaisuuksia on karsiutunut pois
6. Anna arvoa ihmisille Sitoutuneet, ajattelevat ihmiset tuottavat parhaan tuloksen Kaikilla on mahdollisuus löytää ja korjata puutteita omassa työssään ja sitä ympäröivissä prosesseissa (poistaa turhaa) Kuuntele niitä, jotka tuntevat asiansa
7. Optimoi kokonaisuus Älä keskity vain yksittäisten toimintojen optimointiin, vaan tarkastele aina kokonaisuutta
Lean työskentelynä 1. Lähdekoodin hallinta 2. Automatisoitu testaus 3. CI continuous integration 4. Vähemmän koodia 5. Nopeat iteraatiot 6. Asiakaskontakti
Lähdekoodin hallinta Lähdekoodin hallinta (Source Code Management, SCM) tarkoittaa kaiken lähdekoodin säilyttämistä yhdessä keskusrepositoryssa, joka ylläpitää jokaisen tiedoston versiohistoriaa Mahdollistaa paluun aikaisempaan toimivaan versioon, jos jotain menee rikki Mahdollistaa tehokkaan yhteistyön tiimin jäsenten välillä Keskitetyssä SCM:ssä (esim. Subversion) on yksi jaettu repository, josta kehittäjät hakevat uusimman version ohjelmistosta ja muokkaavat koodia lokaalisti omalla koneellaan ennen työntämistä takaisin repositoryyn Keskitetyssä SCM:ssä kaikki muutokset jota kehittäjä tekee paikallisesti, jäävät versioimatta. Vain SCM:ään pushatut muutokset versioidaan Hajautetussa SCM:ssä (Esim. GIT, Mercurial) kehittäjä kloonaa tai lataa kopion koko repositorysta versiohistorioineen. Hajautetussa SCM:ssä kaikki kehittäjän paikallisesti tekemät muutokset versioidaan, koska koko SCM on paikallisessa ympäristössä Jossain määrin turvallisempi kuin keskitetty SCM
Automatisoitu testaus Automatisoitu testaus on paras tapa suojata tuote virheiltä Olennainen osa laadukkaan tuotteen tuottamisessa Vähentää turhaa työtä Automatisoituun testaukseen kuuluu mm. yksikkötestaus, integrointitestaus, hyväksymistestaus, suorituskykytestaus Kaikilla testausmuodoilla on yhteistä Testit tekee kehittäjä/koodari Ne voidaan ajaa automatisoidusti Testien epäonnistuminen havaitaan automaattisesti Kehittäjä saa tiedon testien epäonnistumisesta Mitä aikaisemmin virheet huomataan koodissa, sitä vähemmän niiden korjaaminen vie aikaa. Tämä kasvattaa luottamusta tuotteen laatuun.
CI-continuous integration eli jatkuva integraatio 1. Kehittäjä hakee repositorysta uusimman version ohjelmiston koodista 2. Kehittäjä toteuttaa muutokset koodiin ja luo muutoksille automatisoidut testit 3. Kehittäjä integroi koodin muun koodin yhteyteen 4. Repositorysta haetaan muutokset ja ajetaan testit 5. Kun kaikki testit on menneet läpi kehittäjän paikallisessa ympäristössä, pushaa kehittäjä oman koodinsa repositoryyn 6. CI-palvelin huomaa tehdyt muutokset, hakee koodit ja suorittaa testit omassa ympäristössään
CI-continuous integration eli jatkuva integraatio Osana CI:tä on myös ohjelmiston buildaus tyhjältä pöydältä palvelimelle, josta tuote on esim. asiakkaan tarkasteltavissa ja arvioitavissa CI:n tarkoituksena on integroida pieniä muutoksia usein (päivittäin) Tämä poistaa tarpeen ns. integraatiovaiheelle Kehittäjät saavat välittömästi tietoa muutosten mahdollisesti aiheuttamista ongelmista Kasvattaa ohjelmiston tilan näkyvyyttä asiakkaalle
Vähemmän koodia Mitä suurempi on codebase (kooditietokanta), sen enemmän sen ylläpito ja virheenetsintä vie aikaa. Tarkastele aina kriittisesti toimenpiteitä, jotka lisäävät codebasen kokoa Poista tarpeeton ja ylimääräinen koodi Keskity olennaisiin ominaisuuksiin Kehittäjältä menee aikaa oppia kirjoittamaan vähemmän koodia Noudata sovittuja käytäntöjä (Best Practises)
Nopeat iteraatiot Nopeat iteraatiot vähentävät turhaa työtä antamalla asiakkaalle usein tilaisuuden tarkastella ja antaa palautetta Iteraatioiden lyhyys mahdollistaa nopeat muutokset ja korjaukset
Asiakaskontakti Tarkoituksena on luoda ohjelmisto, jota asiakas käyttää, joten asiakkaan osuutta tuotteen kehittämisessä ei voi liioitella Asiakas/käyttäjä on paras tiedonlähde Pidä asiakas ajan tasalla Kannusta asiakasta palautteeseen ja keskusteluun Reagoi asiakaspalautteeseen Pidä huoli seuraavista: Asiakasyhteyshenkilö on yhteistyökykyinen ja tulee toimeen tiimin kanssa AY ymmärtää loppukäyttäjän tarpeet AY on sitoutunut ja motivoitunut AY tietää tarpeeksi ollakseen hyödyksi AY:llä on valtuudet tehdä päätöksiä!
Kanban
Lean startup Lean Startup on filosofia ja kokoelma toimivia, käytännöllisiä menetelmiä. Sen avulla opit rakentamaan sellaista, joka toimii ja josta asiakkaat ovat valmiita maksamaan, olitpa sitten kehittämässä uutta tuotetta, palvelua tai prosessia. Se kasvattaa mahdollisuuksiasi menestyvään startupiin Lean Startup perustuu siihen, että kaikki oletukset testataan systemaattisesti mahdollisimman aikaisessa vaiheessa oikeiden asiakkaiden ja käyttäjien kanssa. Kurssia muutetaan sen mukaan, mitä asiakkailta opitaan.
Miten olla startupin kanssa lean? Testaa visiosi mittaamalla asiakkaittesi käyttäytymistä Keskustele asiakkaittesi kanssa koko tuotekehityksen ajan Validoi sekä tuotteesi, että asiakaskuntasi (älä arvaile) Noudata lean-prosessia alusta lähtien Keskity oikeisiin asioihin
Miten lean auttaa minua? Löydät ensin ongelman, jota lähteä ratkaisemaan Löydät ensimmäiset käyttäjät early adopters Millainen on tuotteesi versio 1.0
Kolme tärkeintä asiaa 1. Keskustele ideastasi ainakin yhden ihmisen kanssa 2. Dokumentoi ideasi 3. Testaa ideasi
Lean canvas 1 3 2 7 1 6 4 5 5
1. Ongelmat ja asiakassegmentit Listaa 3 tärkeintä ongelmaa jota pyrit ratkaisemaan Listaa nykyiset ratkaisut Tunnista käyttäjäroolit Pilko suuret asiakassegmentit pienempiin Luo jokaiselle asiakassegmentille oma lean canvas Tarkenna keitä ovat varhaisen vaiheen käyttäjät
1. Ymmärrä ongelma, jota yrität ratkaista Pyri selvittämään onko ongelma ratkaisemisen arvoinen Miten asiakkaasi pyrkivät tällä hetkellä ratkaisemaan tätä ongelmaa 2. Validoi idea ratkaisustasi Ennen itse tuotteen rakentamista, demoa asiakkaillesi visiosi tuotteesta (video, rautalankamalli, html/css-pohjainen demo) 3. Kvalitatiivinen validointi Kuuntele asiakkaittesi palautetta, määritä MVP (minimal viable product) 4. Kvantitatiivinen validointi Jos asiakkaasi validoivat visiotasi, etene tuotekehitykseen
Kysy itseltäsi: 1. Onko ratkaisuni jotain sellaista mitä asiakkaani haluavat? 2. Onko ongelma, jota yritän ratkaista, ratkaistavissa? 3. Maksaako kukaan ratkaisustani?
3. Ratkaisu 3 tärkeintä tuoteominaisuutta ratkaisemaan kolmea tärkeintä ongelmaa
7. Epäreilu kilpailuetu Vaikein kohta täyttää Oikea epäreilu kilpailuetu on sellainen, jota ei voi helposti kopioida tai ostaa Tiimi, ihmiset, kontaktit, kokemus
Mitä sitten? Perusteet lean canvasin valintaan: 1. Asiakkaan korkein kipuaste 2. Mahdollisuudet saada asiakkaisiin yhteys 3. Hinta eli mikä asiakassegmentti on valmis maksamaan tuotteesta korkeimman hinnan
Tiimi Tiimissä on syytä olla seuraavat taidot: Tuotekehitys (koodarit jne) Design Markkinointi Älä ulkoista ylläolevia!
Landing page Tuotenimi Arvolupaus Kerää sähköposteja Muista metriikka (Google Analytics, Mixpanel)
Customer Development eli asiakkaiden haastattelu Älä tee kyselyitä, koska Oletat osaavasi kysyä oikeita kysymyksiä Oletat tietäväsi oikeat vastaukset Et näe asiakastasi Haastattele kasvotusten Haastattele neutraalissa paikassa Anna haastattelulle aikaa Käytä haastattelukäsikirjoitusta Ota kaveri mukaan haastatteluun, jotta et missaa mitään Älä nauhoita
Ongelmahaastattelun rakenne 1. Valmistele haastateltavasi (2min) 2. Selvitä haastateltavasi tausta (testaa asiakassegmenttiäsi) (2min) 3. Esittele oletuksesi kolmesta ongelmasta, jota tuotteesi pyrkii ratkaisemaan (esim. tarinamuodossa) (2min) 4. Tiivistä vielä 3 ongelmaasi (4min) 5. Anna haastateltavasi puhua (15min) 6. Lopettele (2min) 7. Dokumentoi tulokset
Ongelmahaastattelun tulosten analyysi Käy läpi haastattelun tuloksia viikoittain Löydä aikaiset käyttäjäsi Tarkista ongelmaoletuksesi Ymmärrä miten asiakkaasi ratkaisevat ongelmansa tällä hetkellä Löydä toistettavat termit Tunnista väylät aikaisiin käyttäjiisi
Rakenna tuotteestasi demo Visuaalinen keino kommunikoida käyttäjälle miten ajattelit ratkaista ongelman Testaa uniikki arvolupaus Testaa hinnoittelu
Ratkaisuhaastattelun rakenne 1. Valmistele haastateltavasi (2min) 2. Selvitä haastateltavasi tausta (testaa asiakassegmenttiäsi, voi hypätä yli, jos olet haastatellut jo aiemmin) (2min) 3. Esittele oletuksesi kolmesta ongelmasta, jota tuotteesi pyrkii ratkaisemaan (esim. tarinamuodossa) (2min) 4. Demo (15min) 5. Testaa hinnoittelu (3min) 6. Lopettelu 7. Dokumentoi tulokset
Tuote 1.0 eli Minimun Viable Product (MVP) Perustele jokainen ominaisuus Aloita tärkeimmästä ongelmasta (suurin kipuaste haastateltavilta) Poista kaikki olisi kiva olla -ominaisuudet Arvioi ominaisuuksia, joita kohderyhmäsi on korostanut Veloita tuotteestasi Keskity oppimiseen, älä optimointiin
Kiitos Hibbs, Jewett, Sullivan:The Art of Lean Software Development Ash Mayrua: Running Lean A systematic process for iterating your web application from Plan A to a plan that works