Tämän päivän softakehityksessä Agile ja ketterät menetelmät keskittyvät liikaa prosessien kehittämiseen viedessään alaa eteenpäin. Vaikka Agilen hyödyt ovat kiistattomat, ei se tee kehitystä ja lopputuotetta autuaaksi. Siksi Software Craftsmanship täydentää sitä teknisellä osaamisella, keskittyen mm. tekniseen erinomaisuuteen, arkkitehtuuriin ja softadesigniin. Software Craftsmanship ei ole metafora vaan raami ja ideologia ohjelmiston laadun ja tekemisen parantamiseksi.
Agile ja Software Craftsmanship syntyivät lähes samaan aikaan vuosituhannen vaihteessa mutta Agile sai nopeasti suuren jalansijan ohjelmistotuotannossa ja jätti tällöin teknisen laadun varjoonsa. Vaikka Agile parantaakin softan tekemisen prosessia nopeuttamalla palautesilmukkaa, se ei kuitenkaan enää riitä tämän päivän tarpeisiin. Agile hypen jälkeistä aikaa kutsutaankin usein Agile krapulaksi. Siksi me keskitymme nykyään ketterien menetelmien lisäksi myös ohjelmiston kokonaisvaltaiseen laatuun ja siinä Software Craftsmanship luottaa käsityöläisideologiaan. Pähkinänkuoressa voisi sanoa, että Agile keskittyy siihen, että rakennetaan oikeaa tuotetta, kun taas Software Craftsmanship siihen, että tuotetta rakennetaan oikein.
Tähän käsityöläisideologiaan istuu teknisessä ajattelussa eräät alan merkkiteokset kuten Clean Code ja Clean Architecture sekä suoraan Software Craftsmanship:iin keskittyvät teokset. Lista näistä kirjoista löytyy kirjoituksen lopusta. Käsityöläisyys tuo tekemiseen myös vahvan ammattiylpeyden sekä vastuullisuuden tekemisessä. Päivittäinen työ perustuu taitoon toteuttaa ja täyttää laadulliset vaatimukset sekä kantaa vastuu työn saattamisesta loppuun kunnialla. Ammatillinen kehittyminen ja ylpeys omasta työstä motivoi kehittäjän toteuttamaan työ aina parhaalla mahdollisella tavalla.
Vaikka voisi kuvitella, että Software Craftsmanship on monelle liian vaikeaa ja vaatii kehittäjältä liikaa, on kyseessä kuitenkin pääasiassa jokaisesta ihmisestä löytyvien ominaisuuksien vahvistamista. Motivaatio on tärkeämpää kuin osaaminen, oppiminen on ikuista jne. Käsityöläisyys on ihmisessä sisäsyntyistä ja ammattilaiset haluavat tehdä työnsä hyvin. Software Craftsmanship vahvistaa näitä ihmiselle normaaleita motivaation, laadun ja arvontuoton peruskiviä.
Software Craftsmanship keskittyy softakehityksen peruskysymyksiin, mitä, miten ja miksi. Kyseenalaistetaan backlogille päätyvät arvottomat user storyt ja priorisoidaan ne, jotka tuottavat arvoa. Kun keskitytään kysymykseen miksi, pystytään keskittymään itse tuotteeseen, tarkoitukseen, arvontuottoon ja liiketoimintaan. Koko ajatuksessa kulminoituu ymmärrys osaamisen rajallisuudesta ja tarpeesta mukautua ja oppia uutta. Nämä Agilestakin tutut työskentelytavat yhdistetään ohjelmistokehityksen laatuun ja vahvaan osaamiseen, jotta saadaan myös tekninen toteutus parhaaksi mahdolliseksi.
Käsityöläisyydessä keskitytään tietoon ja taitoon. Nämä kertyvät tekemisen ja harjoittelun kautta sekä avoimesti virheet myöntäen. Tällä tavalla vähennetään virheitä, ymmärretään pragmaattisuuden ja täydellisyyden tasopaino, uudelleen yhdistetään pään ja käden yhteistyö, jottei taito ja tieto jakaudu sekä käytetään parasta työkalua tehtävään. Ymmärrys työkaluista ja niiden suhteista onkin yksi merkittävimpiä asioita käsityöläisyydessä mutta alan vaatimuksiin kuuluu myös merkittävässä määrin kehittäjien ymmärrys liiketoiminnasta.
Me Bytecraftilla keskitymme kehittämään ohjelmistoalaa näiden periaatteiden pohjalta.
Kirjat
The Software Craftsman: Professionalism, Pragmatism, Pride
Clean Code: A Handbook of Agile Software Craftsmanship
Clean Architecture: A Craftsman's Guide to Software Structure and Design