Jussi Judin: “Lisää voi lukea mistä tahansa perustason ohjelmointiopuksesta. Missä myöskin saatetaan mainita, että ohjelmien vertaaminen mihin tahansa fyysisen maailman kappaleeseen (missä virheillä on toleranssit) on täysin typerää, sillä ohjelmat nyt sattuvat olemaan abstrakteja matemaattisia koneita (missä virhe on tai ei ole), joilla on yksi tai useampia esitysmuotoja.”
Tuliko mieleen että ohjelmointikirjat ym on kirjoitettu sillä mentaliteetilla joka on johtanut nykyiseen ongelmalliseen tilanteeseen?
Ja vaikka ohjelmistolla ei ole fyysistä muotoa, niin ei se silti oikeuta sen virheellisyyttä. Eikös tänäkin päivänä digitaalisuus ja tietotekniikka ylipäätänsä ole yhtä tärkeässä asemassa kuin fyysiset asiat? Esimerkiksi henkilöautossa ohjelmisto on melkein yhtä tärkeässä asemassa kuin auton moottori. Kaupungissa liikennevaloja ohjaavat ohjelmistot ovat tärkeämmässä asemassa kuin liikennevalot.
Matkapuhelimessa ohjelmisto on merkittävämpi kuin itse näppäimistö.
Yhä enemmän olemme siirtyneet tilanteeseen missä fyysisen laitteen toimintaa ohjaa ohjelmisto. Oli kyse mikroaaltouunista, jääkaapista, televisiosta, autosta, matkapuhelimesta, sydän-keuhkokoneesta jne. Niin ohjelmisto yhä enemmissä määrin määrää jo laadusta.
Esim sydän-keuhkokoneen ohjelmisto vastaa ihmishengestä. Hyvin monimutkainen laite ja sellaisen koodissa ei saa olla yhtä ainuttakaan virhettä. Testaaminen on äärettömän vaikeaa kun jokaista arvoa pitää testata muiden vaihtuvien arvojen kanssa että laite ei vedä itseään sekaisin kun arvot muuttuvatkin yllättäen tietyllä poikkeavalla tavalla.
Koko länsimainen eläminen jo toimii ohjelmistoilla. Sähkövoimaloista aina työkoneisiin ja kommunikointivälineistä aina liikennevälineisiin.
Vaikka facebook appletin merkitys on paljon pienempi ja yksinkertaisempi kuin kuin sydänkeuhkokoneen. Niin miksi sellaistakaan ei onnistuta tekemään kunnolla aina?
Tekniikassa ei sinällään kyllä ole vikaa vaan niissä tekijöissä. Ohjelmoijia jotka eivät osaa työtään, jotka eivät osaa oikeasti ajatella. Mutta ohjelmointi on matematiikkaa jossa pätee juuri yksinkertaisesti tietyt tarkat säännöt. Vaikka ohjelmointi on myös taidetta, niin siitä huolimatta jollakin tavalla ohjelmiston laadulla ei ole aina merkitystä.
Sitä voi pohtia esim että kumpi saa parempaa ohjelmakoodia valmiiksi. Sellainen joka haluaa kirjoittaa mahdollisimman toimivan ohjelmakoodin ennalta määräämättömällä aikataululla. Vai sellainen joka katsoo kalenteria ja kelloa ja pähkäilee miten saa sen ohjelmakoodin määräaikaan tehtyä?
Että juuri kuten mainittu, ohjelmointivirheet johtuvat monesta muustakin asiasta. Ja tämähän on sellainen johon pitäisi alkaa puuttumaan jo suoraan heti. Ohjelmoijat ovat ne jotka sitä ohjelmakoodia kirjoittaa, jotka pystyvät paremmin omaa aikatauluaan ymmärtämään. Toinen ohjelmoija näkee toisen ohjelmakoodista virheitä ja pystyy korjaamaan ne, tekisi ehkä eri tavalla paremmin. Kolmas taas näkee edelliseltä virheitä ja korjaa niitä. Ja mihinkään tarkistamiseen ja paranteluun ei ole tarpeeksi aikaa kun kauppakorkeakoulusta valmistuvat tyypit piirtävät ruksin kalenteriin että tuona päivänä se ohjelmisto on valmis.
Ongelmana taitaa olla koko yhteiskunnan mentaliteetti että kaikki-nyt-heti-mulle. Ollaan mukamas niin mahtavia ihmisiä kun on koko ajan kiire ja hirveällä vauhdilla hakataan tulosta ja tehdään asioita. Kiireessä tehdään ja jälki on sen mukaista.
Liian moni kuvittelee että ohjelmointi on kuin legopaloilla rakentelua. Lyödään vain valmiita palasia yhteen ja saadaan jotain kivaa. (puhumattakaan että joillekkin legotkin on jo todella vaikeat).
Mitä tärkeämässä asemassa ohjelmisto on, sitä vähemmän siinä saisi olla virheitä.
On jo naurettavaa se että Microsoft joka on maailman suurin ohjelmistoyritys, rikkain yritys vieläpä. Jolla taitaa olla enemmän ohjelmoijia kuin kenelläkään muulla ohjelmistoyrityksellä. Ei saa laatua ulos. Onko ongelmana että yrityksellä on eniten maailmassa asianajajia ja enemmän talousalan asiantuntijoita ja työntekijöitä kuin ohjelmoijia? Enemmän projektipääliköitä jokaista osastoa kohden kuin olisi tarpeen? Pääjohtaja on henkilö joka ei ymmärrä edes mitä suustaan päästää?
Kuten sanotaan, “Anna minulle mikä tahansa 6 rivinen koodipätkä ja löydän siitä virheen”. Kertoo jo jotain siitä ongelmien ja tapojen määrästä miten asiat voisi tehdä aina paremmin.
Vertasit sitä että ohjelmistoa ei voi verrata fyysisen maailman asioihin.
Miksi ei saisi odottaa ohjelmistolta joka on vastuussa aina sähkövoimaloista, liikenneohjaukseen ja hätätiedotteiden välittämiseen, samanlaista laatua. Kuin odotetaan niiltä kyseisiltä laitteilta joihin se ohjelmisto asennetaan?
Miksi jokin valuvirhe tai suunnitteluvirhe laitteessa on pahempi kuin sen ohjelmistossa? Siksikö että ohjelmiston pystyy mahdollisesti päivittämään (ei edes aina) mutta valuvirhe tai suunnitteluvirhe tarkoittaa että fyysinen esine täytyy vaihtaa?
Onko sillä ohjelmiston “olemattomuudella” merkitystä että siltä ei voi odottaa yhtä suurta laatua, kun laitteen joutuu lähettämään kuitenkin tehtaalle. Onko silloin eroa onko se vika ohjelmistossa vai ihan fyysisesti?
No, jokaiselta ihmiseltä ei voi odottaa täydellisyyttä että saavat työnsä tehtyä täydellisesti. Muuten ketään ei palkattaisi työskentelemään mihinkään. Ongelmana on myös että ohjelmoijina toimii ihmiset joilla ei ole siihen kutsumusta. Aivan kuten lääkäreiksi ja hoitajiksi valmistuu ihmisiä joilla ei ole kutsumusta hoitaa ihmisiä. Poliitikoiksi pääsee ihmisiä joilla ei ole kutsumusta hoitaa maan asioita parhaimmalla tavalla. Johtajiksi ihmisiä jotka eivät välitä työntekijöistään jne jne.
Yksinkertaisesti asioiden laita pitäisi olla niin, että kun jotakin ostetaan, niin se mitä ostetaan toimii kuten ollaan sovittu. Jos laite ei toimi tai siinä on virheitä jotka johtaa sen toimintahäiriöihin, niin ei ole väliä onko se fyysinen tai onko se jossain ohjelmistossa. Se on korjattava sillä hinnalla mikä mikä alunperin maksettiin. Ohjelmistoyritys ottaa sen takkinsa ja varmistaa seuraavalla kerralla että ei tee vastaavanlaista virhettä.