Kaikki on rikki
macOS Tahoe julkaistiin syyskuussa vuonna 2025. Koska koen velvollisuudekseni pysyä kärryillä siitä, kuinka hyvin työkäytössä Applen kulloisillakin käyttöjärjestelmillä pärjää, asensin sen varsin pian julkaisun jälkeen. Lastentauteja kyseisessä 26.0-versiossa oli epätavallisen paljon, ja Apple oli onnistunut rikkomaan runsaasti sellaisia asioita, jotka olivat lähes aina toimineet erinomaisesti – aina sieltä asti, kun käyttöjärjestelmä oli vielä nimeltään MacOS X. Kirjoitushetkellä mennään versiossa 26.4.1 ja iso osa macOS Tahoen ongelmista on edelleen korjaamatta.
Ohjelmistot ovat liian tärkeitä ja niillä on liian suuri vaikutus elämäämme, jotta niiden laatu voisi olla näin karmeaa skeidaa.
Applen ohjelmistojen laatu on laskenut erittäin rajusti viime vuosina, ja macOS on varmasti kärsinyt tästä eniten. Applen törttöily hiertää itseäni kovasti, koska olen pitkään käyttänyt Macejä ja mielestäni macOS on suurelta osin ollut erinomainen käyttöjärjestelmä – toki siinä on ollut omat ongelmansa ja Applen uppiniskaisuus on monin paikoin ärsyttänyt, mutta kokonaisuutena olen ollut tyytyväinen. macOS 26 Tahoeen en ole tyytyväinen.
Apple ei ole törttöilyineen yksin, vaan esimerkkejä vastaavista laatuongelmista löytyy vaikka millä mitalla: tasapuolisuuden nimissä pitää mainita Microsoftin ratsastus katastrofista toiseen Windows 11:n kanssa. Hyvin laajalti yleistynyt paskiintuminen (eng. enshittification), yhä monimutkaisemmat ohjelmistot himmelimäisine riippuvuusgraafeineen sekä nykyään lähes oletusarvoinen vibekoodaus (eng. vibe coding) varmistavat, että ohjelmistojen laatu on ja pysyy pohjamudissa.
Paskiintuminen
Paskiintuminen on ilmiö, joka lopulta johtaa palveluiden kuolemaan. Paskiintumisprosessin vaiheet ovat:
- Palvelu on uusi, laadukas ja se tuottaa oikeasti hyötyä käyttäjilleen. Käyttäjät ovat tyytyväisiä ja palvelu kasvaa.
- Palvelulle halutaan saada enemmän rahakkaita yrityskäyttäjiä, joten sitä kehitetään yrityskäyttäjille houkuttelevammaksi käyttämällä yksityiskäyttäjiä hyväksi. Yksityiskäyttäjien tyytyväisyys palveluun laskee, jolloin yrityskäyttäjien osuus asiakaskunnasta kasvaa.
- Palvelu on jossain määrin vakiinnuttanut asemansa yrityskäyttäjien keskuudessa, joten nyt palvelulla voidaan ryhtyä pumppaamaan entistä enemmän rahaa yrityskäyttäjiltä. Tässä vaiheessa rahakas exit kiiluu palvelun perustajien silmissä, joten asiakastyytyväisyydellä – ja siten myös laadulla – ei oikeastaan ole enää merkitystä.
- Palvelu kuolee.
Paskiintuminen ei kaikilta osin ole ollenkaan tietoinen prosessi, vaan se on pikemminkin eräänlainen luonnonilmiö, joka vaikuttaa erityisesti alustataloudessa. Paskiintumista on hankala välttää, koska se syntyy palveluiden kasvun ja menestyksen seurauksena. Toki ahneudella ja huonolla johtamisella on osansa ja niillä saa hienosti kiihdytettyä prosessia.
Ohjelmistojen monimutkaisuus ja riippuvuushimmelit
Käyttäjien asettamat tarpeet järjestelmille ja ohjelmistoille kasvavat jatkuvasti. Samaan aikaan ohjelmistotuottajat haluavat nopeasti tuoda markkinoille uusia ominaisuuksia, jotta ne erottuisivat kilpailijoistaan. Tämä johtaa siihen, että ohjelmistot kasvavat hallitsemattomasti yhä monimutkaisemmiksi ja niihin kertyy nopealla tahdilla yhä enemmän riippuuvuuksia ja teknistä velkaa.
Monimutkaisuus sekä kertyneet riippuvuudet ovat myrkkyä ohjelmistojen laadulle. Ensin laadun heikkeneminen näkyy pellin alla – kehityshommiin kuluu enemmän aikaa, bugeja ilmestyy kuin tyhjästä, suorituskyky kärsii – mutta lopulta se näkyy myös käyttäjille. Ohjelmistot alkavat kaatuilla, hidastella, käyttöliittymät muuttuvat kömpelöiksi ja käyttäjät alkavat turhautua.
On esimerkiksi käsittämätön määrä järjestelmiä, jotka toimivat kategorisesti väärin, mutta joiden käyttäjät ovat oppineet kompensoimaan järjestelmien virheitä. Homma rullaa, koska ihmiset sopeutuvat.
Monimutkaisuus ja riippuvuuksien kertyminen eroavat paskiintumisesta siinä, että ne eivät välttämättä johda palvelun kuolemaan. Ne ovat ennemminkin jatkuvasti kasvava taakka, joka ennen pitkää vaatii perustavanlaatuista uudistusta palveluun, jotta se voisi jatkaa elämäänsä. Ongelmana on se, että monimutkaisuuden ja riippuvuuksien aiheuttama taakka helposti kiihdyttää paskiintumista, koska palvelun ylläpitoon tarvitaan jatkuvasti kasvavia resursseja, eli rahaa.
Vibekoodaus ja tekoälyllä generoidut ohjelmistot
Vibekoodaamalla kuka tahansa voi tuottaa ohjelmistoja tekoälyn avulla. Vibekoodaaja kuvailee haluamansa ohjelmiston ja tekoäly tekee. Jokainen on varmasti kohdannut ystäviä ja kollegoita, jotka ovat vibekoodaamalla ratkaisseet jonkin oman tarpeensa tai tuottaneet jonkin hauskan sovelluksen, jota on kiva esitellä työkavereille kahvitauolla. Ja se on minusta hienoa! Ongelmia tulee, kun vibekoodaus ja sen mentaliteetti vuotavat yritysten tuotekehitykseen.
Tekoälyn laaja hyödyntäminen ohjelmistokehityksessä on nykyään arkipäivää, enkä usko, että se olisi katoamassa mihinkään. Suuri osa Karhunkin tuotoksista syntyy nykyään agenttitiimeiltä, joita kehittäjät ohjaavat. Agenttitiimit pystyvät tuottamaan valtavia määriä koodia pienessä ajassa, joten sen tarkistaminen ihmisvoimin on likipitäen mahdotonta – tai ainakin se varsin tehokkaasti nollaa agenttitiimeistä saatavan hyödyn.
Tekoälyllä generoitujen ohjelmistojen laadunvarmistus onkin äärimmäisen tärkeää ja se vaatii ehdottomuutta. Koska koodia ei enää oikeasti tarkista kokonaan kukaan, on täysin prosessin varassa, että katastrofeilta vältytään. Tällaisen laadunvarmistusprosessin luominen ja ylläpitäminen on haastavaa, joten eipä ole ihme, että paljon tekoälyllä generoitua koodia päätyy tuotantoon ilman kunnollista tarkistusta. Tämä on epäilemättä syy isoon osaan ohjelmistojen laatuongelmista.
Jokainen teknologian parissa työskentelevä on varmasti jo aikoja sitten huomannut, että maailma pyörii lähinnä hyvällä säkällä.
AI-generoitu koodi myös helposti kasvattaa aikaisemmin mainittua monimutkaisuutta ja riippuvuuksien määrää. Jos määrittelyssä ei ole erikseen tuotu ilmi, miten projekti halutaan toteuttaa, on varsin todennäköistä, että lopputuloksena on tarpeettoman monimutkainen härdelli, jossa on vähän milloin mitäkin riippuvuutta mukana.
Kaikki oikeasti on rikki ja on ollut jo pitkään
Tekoälyä ei oikeasti voi syyttää kuin pieneltä osin siitä, että ohjelmistojen laatu on kuraa. Jokainen teknologian parissa työskentelevä on varmasti jo aikoja sitten huomannut, että maailma pyörii lähinnä hyvällä säkällä. On esimerkiksi käsittämätön määrä järjestelmiä, jotka toimivat kategorisesti väärin, mutta joiden käyttäjät ovat oppineet kompensoimaan järjestelmien virheitä. Homma rullaa, koska ihmiset sopeutuvat.
Ohjelmistot ovat merkittävässä roolissa, kun tarkastellaan sitä kaikkea, mikä ei toimi. Ne ovat kiinteä osa modernia yhteiskuntaa, mutta silti niihin suhtaudutaan merkittävästi vähäpätöisempänä osana kokonaisuutta kuin vaikkapa rakennuksiin tai siltoihin. Ohjelmistot eivät näy, niiden olemusta on hankala hahmottaa ja ne voivat muuttua milloin tahansa miten vain. Jos silta pettää, siitä tulee iso uutinen ja kansa vaatii turvallisuusselvityksiä ja mielellään vähintään pari päätä vadille. Kun ohjelmisto pettää, se on oikeastaan täyttänyt sille asetetut odotukset, koska noh, sellaista se on – hyvä kun toimi yhtään.
Miksi ohjelmistoilta ei vaadita laatua? En aidosti tiedä. Uskon, että perimmäinen syy on juurikin ohjelmistojen abstrakti ja alati muuttuva luonne. Minusta ohjelmistojen laatuodotusten pitäisi olla paljon korkeammalla, mutta siihen vaaditaan kulttuurista muutosta sekä ohjelmistotuottajilta että -kuluttajilta. Ohjelmistot ovat liian tärkeitä ja niillä on liian suuri vaikutus elämäämme, jotta niiden laatu voisi olla näin karmeaa skeidaa. Ja kyllä, tämä koskee erityisesti macOS Tahoeta.