Koodauksen esoteerisyys

Mitä itse ohjelmointia olen tehnyt, niin aina tulee vastaan tiettyjä ajatuksia, jotka eivät ole mitenkään uusia, vaikka itse luulee jotain ymmärtäneensä. Monet vähänkään enemmän ohjelmoineet ymmärtävät, että ohjelmointi on oikeasti jotain aika erikoista. Koodi itsessään ei ole mitenkään kummallista, vaan sen kategorisoiminen tiettyyn ryhmään on hämmentävän vaikeaa. Ohjelmakoodi itsessään on täysin loogista ja rutiininomaista suorittamista, joka ehkä onkin isoin ongelma.

Kuva 1. Oli työkaverini kanssa puhetta minun happamasta orginaalista gallialaisesta belgialaisille nuorille kehitetystä itse panemastani oluesta, jota hän epäili jonkinasteiseksi villihiivaolueksi [wiki/lambic, Zamnesia/galliaOlut]. Suoritteli tätä ”keskiaikaista” luostariolutta ostamaan.[belgianBeerFactory]
Jotenkin aina itse tehdystä oluesta tulee mieleen seuraavan videon ale eli pintahiivaolut, joka ei siis ole tätä nykyistä ruokakaupoista saatavaa kliinisen kirkasta lageria. Ehkä pitäisi tuntea huonoa omaatuntoa, kun Rome Total War peliä pelatessa pitäisi oluen ja sianlihan sijaan nauttia italialaista punaviiniä ja pizzaa [beachHouseKitchen].

Ehkä kuitenkin on oikein samaistua pohjoisiin barbaarisiin kansoihin, joihin itse vähintäänkin kuulun, jos kerran 2k vuoden takaiset belgialaiset/hollantilaiset (Gallia) ja saksalaisetkin (Germaanit). Kiva peli kuitenkin, kun pääsee hyppäämään antiikin aikaisen johtajan saappaisiin.

Nykyajan menestyneeltä johtajalta ehkä odetaan jotain muuta kuin ei-meidän-kaverihin kuuluvien mahdollisimman suurta hävitystä ja psykopatiutta? Melkoisen sairasta se isojen poikien toiminta Raamatun kirjoitusaikana oli. Ikävän usein moni tekee itsemurhan tässä maailmassa, eivät koe vahvimman vallalla hallitsevien vallanpitäjien puolustavan heitä.

TTY:n laitosjohtaja Tommi Mikkosen näkemys siitä, että onko ohjelmointi tiedettä, taidetta vai kansanperinnettä, niin on yhä hyvä kysymys. Itseäni kovasti myös mietityttää, että miten ohjelmointia tulisi opettaa. Olen tässä blogissani väittänyt tai ainakin esittänyt näkemykseni, jonka mukaan ohjelmointia tulisi opettaa ammattikoulussa. Tietysti taustalla on omat tekijänsä, mutta nykyinen opetusmalli on ilmeisen heikko ohjelmoinnin opettamiselle. Ei varmasti ole vieras tai uusi ajatus, että yliopistossa on isoja ongelmlmia sen suhteen, että miten ohjelmistoalaa tulisi opettaa. Osaamista varmasti on nykyisistä ohjelmistomenetelmistä, ongelma ei siis ole siinä, vaan sen vähäisenkin tiedon siirtämisessä opiskelijoille.

Ohjelmistoalaa usein teknillisestä taustastaan johtuen nähdään hyvin insinöörimäisenä. Tämä ajatustapa korostuu etenkin Suomessa, Yhdysvalloissa ohjelmistoala nähdään enemmänkin käsitteenä CS eli Computer Science eli omana tieteenalana.  En osaa sitten sanoa, että onko suomalainen vai yhdysvaltainen käsite enemmän pielessä, vaan taustalla on paljon syvällisempi ongelma.

Itse olen känyt Seinäjoen ammattikorkeakoulun, jossa oikeasti yritettiin olla erittäin käytännönläheisiä. Mielestäni ajatus oli erittäin hyvä, etenkin sulautetuissa järjestelmissä rento ilmapiiri auttoi paljon, oppimista tapahtui. Toisaalta valitettava fakta ohjelmoinnin opetuksen takana oli se, että minulla taustalla omaa täysin vaatimatonta harrastuneisuutta, joka antoi aivan uskomattoman etulyöntiaseman moniin lukion käyneisiin opiskelijakavereihin. Jo ennen opiskeluaikaani pidin tätä panosta naurettavan vähäisenä, nykyäänkin hämmästelen, että miten en osannut nuorempana tajuta, että miten kriittistä ja merkittävää se pienikin näpräys oli.

Ehkä vieläkään opetuksessa ei täysin ymmärretä, että ohjelmointi on erittäin latteaa vaatimustastoltaan. Ohjelmointi ei vaadi mitään syvällistä ymmärrystä yhtään mistään, vaan hirveästi ymmärrystä monesta pienestä tekijästä yhtä asiaa kohti.

Ohjelman koodaus on kuin valehtelua. Sinun pitää tuottaa jokin toimiva vale, joka kestää kaikki kriittisimmätkin tarkastelut, eikä koskaan voi olla täysin varma oman valheensa paikkansapitävyydestä. Valettasi voidaan käsitellä oikeudessa, tuhansien vuosien päästä, kenen tahansa tai minkä tahansa kulttuurin ja aikakauden aikana.

Itse vertaisin erinomaista ohjelmaa raamattuun. Erittäin hyvä ohjelma kestää kaikkien niiden sukupolvien ja erilaisten ajatusmallien mukaiset käsittelyt. Se on ympäripyöreä kokonaisuus, jossa ei voi tarrata mihinkään terävään kulmaan. Mistään sitä ei saa kräkkeröityä auki, mutta silti se aina on absoluuttisesti ei-väärässä. Se ei sorru sellaisiin kulttuurisidonnaisuuksin mielikuville, kuten että esimerkiksi punainen väri on maskuliinen tai että sukupuolia on 60 kappaletta. Silti se esittää jotain sellaista asiaa, jota sen tavoitteisiin kuuluu. Silti se ei ole tiedettä, vaan ajaa omaa asiaansa.

Hyvän koodarin piirre on se, että ymmärtää hyvin erilaisia ajatusmalleja ja osaa ajatella ”out of the box”. Konservatiivista kulttureista on harvemmin tullut hyviä ohjelmitokeskuksia. Uskon näillä kahdella tekijällä olevan korrelaatiota. Hyvä koodari on älykäs ja vähintäänkin osaa ajatella liberaalisti eli vapaasti. Kutsuisin tätä liberaaliutta tietynlaiseksi luovuuden käänteisyykseksi, jolloin ymmärtää luovuuden haasteet reaalimaailmassa, jotta osaa luoda rajat ja määritellä ohejelman toimintaa. Ohjelmoinnissa jää todella helposti kiinni omasta tyhmyydestään ja tietämättömyydestään. Koska omaa tietämättömyyttään ei tiedä, niin olisi hyvä, että ohjelman testaajana toimisi toinen ohjelmasta täysin tietämätön ohjelmoija tai vähintäänkin ennakkoluuloton lapsi.

/**********************************************/
/* first editions                             */
/*   2017-12-29 Tuomas Liikala Seinäjoki      */
/* Sen lauluja laulan, jonka leipää syön Oy   */
/**********************************************/
/* Itselläni on hyviäkin muistoja Tampereelta */
/* vuosilta 2013 - 2016,                      */
/* synnyin Tampereella vuonna 1988.           */
/* Silti minulle *se kaupunki etenkin         */
/* kaupunkina oli jotekin liian               */
/* vasemmistolainen.                          */
/* Pidin TTY:sta ja monesta                   */
/* muustakin asiasta, ei sillä                */
/**********************************************/
/* Protip: vuonna 2037 pyörähtää              */
/* 32 bittinen ajanlasku ympäri               */
/**********************************************/

Referenssejä:

Manifest for software craftsmanship (#24074)

Aikajärjestelmän määritelmä on suoraa sanottuna kivikaudelta: PHP Document: Date()

Wiki: Juliaanien kalenteri (Saturnalia)

klo 23:59:60 Wiki: Karkaussekuntti

Vastaa

Sähköpostiosoitettasi ei julkaista.

This site uses Akismet to reduce spam. Learn how your comment data is processed.