Mma Ramotswe-dekkarissa Mma:n kihlattu, automekaanikko ja ehkä Botswanan paras mies J.L.B Matekoni toteaa ”Vain ihminen joka todella ymmärsi koneita, pystyi ajattelemaan moottorin onnellisuutta; sellaista näkemystä mekaanisesti lahjattomilla ei yksinkertaisesti ollut.”
Ymmärrän idean moottorin onnellisuudesta, mutta entä mikä tekee softan onnelliseksi? Ehkä softa on moottoria pari astetta abstraktimpana vaikeampi ymmärtää; ehkä siitä on liian kauan kun olen koodannut mitään kunnollista. Tai sitten en vaan ole ollenkaan riittävän lahjakas mekaanisesti (erinomaisen nerokas tapa määritellä teknisluonteinen lahjakkuus empatiana).
Oli miten oli, kysymys softan onnellisuudesta ei ole minulle itsestäänselvä. Niin kuin sen ehkä pitäisi olla. Olen saattanut tehdä urallani suurestakin joukosta ohjelmistoja onnettomia ihan vain ymmärtämättömyyttäni!
Vähän pinnistelemällä keksin muutaman ajatuksen:
* Bugittomuus (tai siis vähäbugisuus) tekee softan onnelliseksi. Kukapa nyt haluaisi kantaa ötököitä sisuksissaan.
* Riittävä välimuisti jossa voi rennosti lepuuttaa sivujaan kutsujen välillä. Ehkä myös nopea prosessori, ettei tarvitse hikoilla suorituksessa liian kauaa vaan pääsee takaisin idlaamaan (tästä kiitos Teemulle, joka ei ikinä kommentoi tänne).
* Kaunis ja siisti arkkitehtuuri. Jos softan arkkitehtuuri on silkkaa spagettia, juuttuu syöte johonkin suolen mutkaan, eikä etene siististi tulosteeksi. Ikävältähän semmoinen tuntuu ja aiheuttaa kaikenlaista ummetusta ja tuskaista räpiköintiä.
Löytyykö lukijoiden joukosta teknisesti lahjakkaita? Mikä tekee ohjelmiston onnelliseksi?
Ohjelmisto ei mielestäni voi olla onnellinen, jos siihen ei ole upotettu skriptikieltä.
Toisaalta kaikkein surullisimpia ovat juuri ne, joihin on toteuttu epäformaalisti spesifioitu, bugittava ja hidas adhoc-toteutus osasta Common Lispiä.
Sanoisin, että kaikki lähtee siitä, että koodi on eleganttia.
Koodi on eleganttia silloin kun joku käyttää ohjelmointikieltä sillä tavalla suvereenisti samalla tavalla kuin kirjoittamisen ammattilainen parhaimmillaan käyttää luonnollista kieltä: asioiden ilmaisemiseen selvästi ja kompaktisti.
Ammattilainen ei sorru halpaan kikkailuun tai muoti-ilmiöihin. Eikä kryptisiin ilmaisutapoihin vain saadakseen kanssakoodareilta arvostusta. Ammattilaisen koodi on aloittelijallekin selvää, ja aloittelija ymmärtää kokea sen edessä hartautta. Ellei ole täysin toivoton tapaus.
Tuo koodin ja arkkitehtuurin eleganssi on itsellänikin ollut tämän ajattelut ytimessä.
Sen sijaan esimerkiksi käytettävyys, jota yleensä tykkään evankelisoida, ei ole ohjelmiston onnellisuudelle oleellista. Se on käyttäjää varten, ei ohjelmaa itseään.
Ehkä voiis koittaa yleistää, että ohjelmiston onnellisuus perustuu (etenkin) niihin ohjelmistoon liittyviin myönteisiin attribuutteihin, joilla ei ole suoraa merkitystä käyttäjälle. Silkasta spagettihäksötyksestäkin tehty softa voi tehdä työnsä hyvin, mutta ei onnellisena.
Epäilen, että myös ajan tasalla pidetty bugilista tekee softan onnelliseksi. Tai sen puute ainakin onnettomaksi. Itsetuntemus on hyvästä.
Scriptikielen merkitystä onnellisuudelle en vielä aivan ymmärrä, mutta ad-hoc Common Lispin kyllä tajuan. Se on kuin sisuksia jäytävä syöpä. Siitä toivoo ettei se osoittautuisi pahan laatuiseksi. Mutta sitten se alkaa paisua ja viedä yhä enemmän muistia ja prosessoriaikaa. Ja ennen kaikkea aiheuttaa jatkuvan taustalla vaanivan kuolemanpelon.