Näytetään tekstit, joissa on tunniste ohjelmointi. Näytä kaikki tekstit
Näytetään tekstit, joissa on tunniste ohjelmointi. Näytä kaikki tekstit

2014-11-08

Koodi on uusi vasara



Viime aikoina on puhuttu paljon koodaamisesta. Softanikkarit pelastavat maailman, tai vähintäänkin Suomen, ja niinpä siihen kelkkaan on parempi nousta ennemmin kuin myöhemmin. Helsingin Sanomissa aiheesta on kolumnoitu ja pääkirjoiteltu ahkerasti. Lokakuun alussa työikäisten piti tarttua näppäimistöön, tämän viikon torstaina puhuttiin varovasti pelien puolesta ja muistutettiin koodaamisen naisikoneista.

Eikä siinä mitään, aihetta on hyvä pitää pinnalla. Jyrki Kasvi on puhunut aiheesta paljon; viimeisimmässä Tiedosta-lehden kolumnissaan (PDF) hän listaa tylyjä faktoja siitä, miten Suomen tietoyhteiskuntakehitys on pysähtynyt.

Samaan aikaan, aiheen pulputessa joka tuutista, tulee mieleen Arthur C. Clarken kolmas laki:

Mikä tahansa tarpeeksi edistynyt teknologia näyttää taikuudelta.

Kukaan tuskin pitää koodausta tarpeeksi edistyneenä, mutta jonkinlaista yhteiskunnallis-taloudellista magiaa siinä oletetaan olevan. Kun edellisestä Nokiasta selvittiin, alettiin etsiä uutta Nokiaa, ja nyt kun siitä ei oikein kehtaa enää puhua, pyritään löytämään uusi Supercell tai Rovio. Yritetään koodata taikatemppu, jolla Suomi lähtee nousuun.

Voin kuitenkin kertoa salaisuuden: Supercelliä ei synny pelaamalla eikä Roviota koulun ATK-tunneilla. Ne vaativat rautaista osaamista, peijoonisti työtä, rutkasti tuuria – ja siitä huolimatta ne tuovat lähinnä lottovoiton muutamille ja hetkellisen työpaikan vähän laajemmalle porukalle. Se, että nämä muutamat antavat hyvän kiertää, maksavat veroja ja auttavat vuorostaan muita yrittäjiä, on kerrassaan hieno asia, mutta sillä ei ihan vielä nosteta koko kansakuntaa.

Pieniä puroja pitää löytää paljon, ja niitä pitää löytää muualtakin kuin mobiilipeleistä. Aloittaa voi vaikka Hesarin kolumnin esimerkistä: jos sisustusliikkeen verkkokauppasovellus vaatii ohjelmointiosaamista, oikea ratkaisu ei ole opettaa koko kansa koodaamaan. Sen sijaan pitäisi tehdä parempi verkkokauppasovellus.

Tämä ei tarkoita, etteikö opetusta voisi ja pitäisi uudistaa, ja etteikö sinne pitäisi saada myös koodausta. Olennaista ei kuitenkaan ole, osaako lapsi – tai aikuinen – koodata, vaan onko hän edes tietoinen tarjolla olevista mahdollisuuksista. Koodausta ei tarvita erikseen opetettavana aineena, vaan se pitää tuoda kouluun työkaluna. Sillä siitä on kyse: tietokone, ohjelmat, ohjelmointi ovat työkaluja, joilla päästään haluttuun päämäärään. Opettajan ja aikuisen tehtävä on vihjailla noista työkaluista, herättää kiinnostusta, olla tukena ja pukata vauhtia, jos kiinnostus kasvaa... ja olla tarkka siitä, ettei lannista intoa omalla asenteella.

Omalla vaatimattomalla urallani yksi asia on ollut suhteellisen selvää alusta asti: ohjelmointiosaamisella itsessään ei tee yhtään mitään. Jotta missään projektissa pääsee edes alkuun, tarvitaan ainakin auttava määrä toimialaosaamista. Sitä taas on helpompi hankkia, jos ajukopassa velloo edes jonkinasteinen yleissivistys ja halu selvittää itselleen asioita sekä kyky omaksua uutta nopeasti. Pitäisi siis opettaa perusasioita, tarjota työkaluja ja kylvää oppilaisiin uteliasta asennetta. Näistä on hyötyä huomattavasti laajemminkin kuin vain koodaamisen apuna.

Mitä se koodaaminen muuten edes on? Ohjelmointikielet tulevat ja menevät, tietokoneiden arkkitehtuurit vaihtuvat ja softa-alalla trendit seuraavat toistaan. Muistelkaapa siis, miten HS:n kolumnissa mainittu maailman ensimmäinen ohjelmoija, Ada Lovelace, vihkiytyi alalle.

Hän opiskeli matematiikkaa.

P.S. Vantaa päätti hankkia koululaisilleen tabletit. Uuden teknologian tuominen opetukseen on sinällään positiivista, mutta samalla on myös syytä huomata, että tabletit ovat edelleen ennen kaikkea sisällön kuluttamisen välineitä. Jos diginatiivin kansalaistaidoiksi katsotaan jotain syvällisempää kuin nettisivujen selaaminen, painopisteen toivoisi ehkä olevan sisällöntuotannon puolella.

P.P.S. Pari viikkoa sitten julkaistun tutkimuksen mukaan ainakin Yhdysvalloissa opettajat ovat tietotekniikassa huomattavasti oppilaitaan osaavampia. Osaaminen ei uutu pelkästään valmiita palveluita käyttämällä.

2011-02-02

Romu on henkilökohtaisia valintoja

Viznutin blogissa pohdiskeltiin laajamittaisesti nykyaikaisen digitaalikulttuurin ongelmia.

Oma kommenttini aiheeseen uhkasi paisua eeppisiin mittoihin, joten julkaisen kirjoitukseni tässä. Intron jälkeen lähdetään täyteen juoksuun, joten alkuperäinen kannattaa lukea. Tätäkin voi harkita.

Digitaalitekniikan kehitys on jo yli puolen vuosisadan ajan noudattanut ns. Mooren lakia, joka ennustaa, että mikropiirille mahtuvien transistorien määrä tuplaantuu noin kahden vuoden välein.

Sivuhuomautuksena todettakoon, että Moore puhui alunperin vuodesta. Vaan kyllähän hyvääkin lakia pitää välillä korjata.

Bloatista olen sinällään samaa mieltä, samoin kuin sen tuottamista, tarpeettomista ohjelmistovirheistä.

Ennen vanhaan pesukoneet ja televisiot ostettiin kahdeksikymmeneksi vuodeksi eteenpäin, mutta nykyään samassa ajassa "pääsee" hankkimaan ainakin neljä kappaletta kumpiakin.

Kaiken uhallakin kysyisin kuitenkin tähän tueksi tilastoja. On toki mukava fiilistellä vanhojen hyvien aikojen ikuisuuksia kestäneillä laitteilla, mutta väittäisin, että siinä aika pitkälti aika kultaa muistot.

Kuinkakohan moni 50-luvun televisio oli oikeasti käytössä 70-luvulla? 60-luvun pyykkikone 80-luvulla?

Kannattaa muistaa, että laitteiden määrä nykyään on aika paljon menneitä aikoja suurempi. Televisioita oli 50-luvulla noin yksi kylässä, 80-luvulla ehkä yksi taloudessa, nykyään alkaa olla yksi huoneessa.

Samaan aikaan myös ihmisten välinen tiedonvälitys on mullistunut. 1950-luvulla puhelin oli ehkä joka kolmannessa tuvassa ja virallinen totuus löytyi sanomalehdestä ja Ylen uutisista. 2000-luvulla suurehko osa kansasta kohisee verkossa. Niin kuin tuttua on, ihmiset puhuvat kärkkäämmin negatiivisista asioista - ja myös muistavat ne paremmin.

Laitetiheyden takia siis todennäköisyys sille, että viallinen yksilö osuu omalle kohdalle tai tuttavapiiriin on suurempi kuin aiemmin. Toisaalta viestinnän takia on huomattavasti aiempaa todennäköisempää, että niistä hajonneista toosista kuulee myös vähän kauempaa.

On toki mahdollista, että laitteet ihan oikeasti hajoavat useammin, mutta toisaalta monella alalla valmistusmateriaalit, -tekniikka ja myös laadunvalvonta ovat ottaneet harppauksen tai pari menneinä vuosikymmeninä.

Todettakoon, että sekä laitteiden yleistymistä että kommunikaation lisääntymistä voi kritisoida, molempia jopa varsin hyvillä perusteilla.

Ohjelmaan voidaan piilottaa esimerkiksi ajastin, joka hieman takuuajan umpeutumisen jälkeen estää laitteen toimimisen kokonaan tai saa sen oikuttelemaan.

Alkuperäisen kirjoituksen kommenteissa kyseltiin näistä esimerkkejä. Mistään kovin merkittävästä en ole kuullut, mutta tulostuskaseteissahan tuosta on käyty oikeuttakin: mikropiireillä on estetty tarvikekasettien käyttöä, mutta sen lisäksi niillä on myös rajoitettu ikää esim. tiettyyn arkkimäärään, riippumatta siitä, kuinka paljon mustetta oikeasti on kulunut.

Vasteaikaongelmat ovat vain yksi esimerkki siitä, kuinka teollisuus haluaa keskittyä mieluummin uusien toimintojen tehtailuun kuin peruskäyttöä häiritsevien ongelmien ratkaisemiseen.

Olen samaa mieltä siitä, että vasteen antaminen käyttäjälle on tarpeellista. Sen sijaan olen eri mieltä siitä, että kyse olisi teollisuuden nimenomaisesta halusta tehdä jotain vastoin käyttäjän etua.

Itse luulen, että monet kehittäjät yksinkertaisesti ovat siinä määrin funktionaalisuuteen keskittyviä ihmisiä, että välittömän vasteen antamisen sijaan mieluummin keskitytään tekemään sitä ohjelman varsinaista käyttötarkoitusta. Prioriteetteja voisi ehkä jossain määrin rukata, siitä lisää hiukan jäljempänä.

Esimerkiksi kaikki suosituimmat uudet nettipalvelut Facebookista Youtubeen ja Spotifyyn olisi täysin mahdollista toteuttaa siten, että ne toimisivat 1990-luvun lopun koneilla ja vieläpä paremmin ja nopeammin kuin nykyisillä.

Sinällään vitsikkäästi muuten Facebookin ja monen muunkin nettisivuston tapauksessa aika iso osa siitä käyttäjän koneeseen kohdistuvasta tehovaatimuksesta tulee juuri tuosta syystä, jonka puutteesta edellisessä kohdassa valitettiin: nykysivustoja monesti rakennetaan hyvinkin dynaamisiksi ja pyritään antamaan käyttäjälle vasteita, ja käytännössä se nykyteknologioilla tarkoittaa esimerkiksi javascriptin tai Flashin/Silverlightin/jonkunmuunminkä käyttöä.

Flashin suorituskyky toki on aika lailla surkuhupaisa, ja selaimien javascript-tulkkeihinkin on kiinnitetty oikeasti huomiota vasta parin viime vuoden ajan. Lopputulos kuitenkin on, että yhtä ongelmaa oiottaessa on törmätty toiseen.

On vaikea edes keksiä mitään yksittäiselle ihmiselle mielekästä tietojenkäsittelytehtävää, joka vaatisi 2000-luvun suorituskykyä pelkän luonteensa vuoksi ilman minkäänlaisia määrällisiä paisutteluja. Tätä voisi hyvin pitää merkkinä siitä, että meillä on jo aivan riittävästi tehoja vähäksi aikaa.

Voi toki pitää, mutta eri asia on, onko sillä mitään totuusarvoa. Jos tyytyy pelaamaan Pongia ja Space Invadersia, 70-luvun tehot riittävät mainiosti. Se ei kuitenkaan tarkoita, etteikö lisäteholle olisi ihan validia käyttöä.

Kuinka moni käyttää nykyään digikameraa 1990-luvun lopulta? Kuinka moni haluaisi käyttää sellaista?

Edistystä on tapahtunut niin käyttöliittymässä (mm. siinä käyttäjälle annettavassa vasteessa) kuin kuvanlaadussakin. Itse veikkaan, että jos digikamerat olisivat kymmenen vuoden takaista tasoa, moni kuskaisi edelleen mukana filmiä. Se voisi toki olla hyväkin asia, mutta valokuvauksen ja digikuvauksen yleistymiseen sillä määrällisellä kehityksellä on ollut kyllä aika ratkaiseva vaikutus.

Jos siirrytään liikkuvaan kuvaan, digitaalinen video ylipäätään on mahdollistanut edes jollakin tasolla järkevän editoinnin myös kotioloissa. Puuhana noin ylipäätään se on aika lailla ehtymätön resurssisyöppö - sekä koneiden että ihmisten. Niinpä niitä kotivideoita ei sitten käytännössä edelleenkään editoida ollenkaan riittävästi.

Esimerkiksi kuvankäsittelyohjelma voisi normaalitilassa muistuttaa yksinkertaista piirto-ohjelmaa, jonka toimintatavan pystyisi sisäistämään täydellisesti pelkän lyhyen koekäytön perusteella. Kaikenlaiset aputoiminnot, automatiikat ja muut erikoisuudet löytyisivät tarvittaessa helposti, ja käyttäjä voisi lisäillä niitä kokonaisuuden jatkeeksi tarpeen mukaan, mutta ne eivät koskaan häiritsisi olemassaolollaan sellaisia käyttäjiä, jotka eivät niitä tarvitsisi,

Käytännössähän tuota yksinkertaistusta on tullut siinä mielessä, että nykyään on tarjolla noita yksinkertaisia ohjelmia, eikä samaa softaa yritetäkään tarjota kaikille käyttäjille.

Tosiasia nimittäin on, että tuo ylläoleva kaunis kuvaus on äärettömän helppo kirjoittaa mutta pirullisen vaikea toteuttaa.

Käyttöliittymä- ja käyttökokemussuunnittelu on peijoonin vaikeaa. Sen suunnitelman toteuttaminen on vielä jonkin verran vaikeampaa. Microsoft on ainakin menneinä vuosina pistänyt pelkästään käyttöliittymien tutkimiseen pienen valtion budjetin verran rahaa vuosittain, ja lopputulokset näkyvät itse kunkin pöydällä.

Tosiasia vaan on, että yleispätevää käyttöliittymää on vaikea tehdä. Kun ominaisuuksien määrä kasvaa, tuo vaikeus lähestyy nopeasti mahdottomuutta.

Muutoin olen kyllä Avuttomuus-otsikon alustasta pitkälti samaa mieltä. Ohjelmien pitäisi olla helpompia. Tämä on jossain määrin tunnistettu myös koulutuksessa, nykyään korkeakouluissakin taitaa tietotekniikan opiskelijoilla olla ainakin jonkin verran pakollisia käyttöliittymopintoja.

Avoimet ohjelmat kuitenkin kärsivät niistä aivan samalla tavoin, ja lisäksi niillä on vielä aivan omat ongelmansa päälle. Syyt tähän löytyvät liikkeen historiasta, jossa on alusta asti mieluummin keskitytty jäljentämään olemassaolevia ohjelmia kuin rakentavasti kyseenalaistamaan vallitsevia suunnitteluperiaatteita.

Itse taas palaisin tässä kyllä tuohon edellä esittämääni teesiin "käyttöliittymäsuunnittelu on peijoonin vaikeaa", ja väittäisin, että avoimen lähdekoodin ohjelmistot ovat siitä lähes poikkeuksetta hyviä esimerkkejä. On sama, yritetäänkö niillä matkia kaupallisia ohjelmia vai tehdä jotain ihan omaa, käyttöliittymät ovat yleisesti ottaen jotain välttävän ja hirvittävän välimaastossa.

Syyt tosiaan löytyvät monesti historiasta - moni softa on rakennettu ratkaisuksi kehittäjiensä ongelmaan, eikä niissä ole välttämättä juuri mietitty yleiskäyttöisyyttä tai käyttöliittymää. Kehitys on ollut hyvin tavoitehakuista: kohdekäyttäjän tarpeet on täytetty, eikä muuta.

Sen jälkeenhän kysymys muuttuukin sitten ideologiseksi: jos softassa on jotain vikaa, ei muuta kuin Emacs käteen ja korjaamaan. Harva korjaa, koska se edellyttää perehtymistä ja oman ajan käyttämistä. Ja jos nyt ihan totta puhutaan, harvalla olisi todellista kompetenssia tehdä vaikkapa siitä käyttöliittymästä kovin paljon parempi; lopputulos olisi todennäköisesti vain vähän erityyppisen käyttäjän henkilökohtaisiin tarpeisiin sorvattu variaatio.

Noin yleisesti ottaen kirjoituksessa on useita oikeinkin hyviä huomioita, mutta se muotoutuu tarpeettomaksi vastakkainasetteluksi pahansuovan teollisuuden ja jonkunlaisen ideologisen utopian välillä.

Markkinavoimat eivät päätä mitään. Niitä päätöksiä tekevät käyttäjät, kehittäjät, jos jonkinlaiset isot ja pienet pomot. Ihan tavalliset ihmiset, joka ikinen päivä.

Ja toisaalta, minkään sortin manifesti ei tee ihmisistä yhtään sen ahkerampia, koodareista taitavampia tai perusjanttereista viisaampia. Korjattavaa riittää kyllä, mutta vikojen ulkoistaminen kasvottomien markkinavoimien syyksi on vain epärehellisyyttä.