Scrum
Scrum on ketterän ohjelmistokehityksen menetelmä, joka voi parhaimmillaan merkittävästi tehostaa ohjelmistokehityksen nopeutta ja laatua.

Scrumissa työtä tehdään sprinteissä, jotka ovat perinteisesti 7-30 päivän mittaisia työrupeamia, jonka aikana tiimi suorittaa sprinttiin suunnitellut tehtävät. Jokainen sprintti alkaa huolellisella sprinttisuunnittelulla, jonka aikana valitaan kaikki projektin tiedetyt tulevat ominaisuudet sisältävästä product backlogista kyseisen sprintin aikana toteutettavat ominaisuudet ja ne jaotellaan pienempii osioihin, joita kutsutaan yleisesti tehtäviksi. Tehtävät kootaan ominaisuuksittain tai muuten järkeviksi kokonaisuuksiksi, joita puolestaan kutsutaan user storyiksi. User storyillä on prioriteetti.
Mikä on oikea sprintin pituus?
Oikea sprintin pituus on projektikohtainen asia ja riippuu useammasta tekijästä. Jos projektia toteutetaan esimerkiksi tiiviissä monitoimittajaympäristössä, sprintin suunnittelusta aiheutuva overhead voi olla niin korkea, että sprintin on syytä olla pitkänpuoleinen. Pitkää sprinttiä vastaan sotii se, että esimerkiksi viiden hengen tiimin kolmen viikon tehtävien suunnittelu Scrumin vaatimalla tarkkuudella on epärealistinen tehtävä. Näiden kriteerien olennaisuuteen edelleen vaikuttaa muun muassa tehtävälistan (backlog) vaihtuvuus ja haastavuus.
Backlogin ominaisuuksilla on työmääräarviot. Nämä työmääräarviot toimivat viitteellisinä ohjeina sprintin suunnittelussa kun ominaisuudet jaotellaan user storyiksi ja edelleen tehtäviksi. Arviot tarkentuvat suunnittelun yhtedessä. Suunnittelu on samalla neuvotteluprosessi, jonka tuloksena tiimi yhteisesti lupautuu toimittamaan ominaisuudet kokonaan testattuina ja valmiina. Näin tiimi pääsee samalla itse vaikuttamaan suunnitteluun ja työmäärien arviointiin ja samalla ottaa vastuun suunniteltujen osioiden toimituksesta.
Työmäärän arvioinnin malli
Ohjelmistoalalla työmäärää arvioidaan perinteisesti tunneissa ja miestyöpäivissä. Tällaisten aikamääreiden ongelma on, että ne estimoivat samaan aikaan sekä tehtävän tekemiseen tarvittavaa panosta, että työn tekevien tiiminjäsenten tuottavuutta. Nodetan toteuttamassa Scrumissa työpanosta arvioidaan irrallaan käyttämällä suhteellista mittayksikköä, ja tiimin tuottavuutta mitataan empiirisesti, jolloin sitä voidaan tarvittaessa korjata. Näin tuottavuuden tehostamisesta tulee tiimin sisäinen mekanismi ja tuottavuuden ennustettavuus muodostuu merkittävästi helpommaksi.
Scrum on erityisesti korjaamaan seuraavien "lakien" aiheuttamia ongelmia:
- Ohjelmiston määrittelyjä ei voida koskaan täysin ymmärtää. (Zivin laki)
- Interaktiivinen järjestelmä ei koskaan voi olla täysin määritelty tai täysin testattu (Wegnerin lemma)
- Käyttäjät eivät koskaan tiedä mitä he haluavat, ennen kuin järjestelmä on tuotannossa jos silloinkaan (Humphreyn laki)