Julkaistu Aamulehden alakerta-artikkelina (sivu 2) 24.10.2000. Laitoin Internetiin 26.1.2001 varmistuttuani, että Aamulehdellä ei ole mitään sitä vastaan. Aamulehden toimituksen tekemät (vähäiset) muokkaukset eivät näy tässä versiossa.

Ohjelmointi vuonna 2000

Ohjelmointi on tietotekniikan ydin. Tietotekniikan räjähdysmäinen kasvu on nostanut ohjelmoinnin yhdeksi tärkeimmistä osaamisaloista Suomessa ja samalla muuttanut sen luonnetta. Vuoden 1990 ohjelmointiopit eivät enää riitä.

[ohjelmistojen kehittämiskustannuksia havainnollistava käyrästö]

Tietotekniikan vyöry

Laskentakapasiteetti on nykyisin hyvin halpaa. Halvimmat mikrokontrollerit eli yhden mikropiirin tietokoneet maksavat suurasiakkaalle alle puoli dollaria kappale. Sillä hinnalla niitä voi panna vaikka joulukortteihin. Ja ilmeisesti on pantukin, sillä vuonna 1997 myytiin yli 11 miljardia mikrokontrolleria ja -prosessoria.

Laitteiden hintoihin verrattuna ohjelmointi on hyvin kallista. Realistinen suuruusluokka-arvio normaalille ohjelmointityölle normaaleissa olosuhteissa kaikki kustannukset huomioon ottaen on 100 mk / koodirivi. Tämä arvio on hyvin karkea, sillä ohjelmoijien tuottavuudessa on valtavia eroja.

Tietotekniikan avulla laitteisiin ja palveluihin on voitu toteuttaa aivan uusia hyödyllisiä piirteitä. 1980-luvun bussikuski tuskin osasi aavistaa, että jonain päivänä vaihto-oikeuden tarkistamisesta ja yövuorolisän perimisestä huolehtivat bussilippu ja sen lukija automaattisesti. Vaikka ihmiset näkevät elektronisen laitteen, usein 50 -- 80 % sen kehityskustannuksista on ohjelmointikuluja. Moni laitefirma onkin yhtäkkiä havainnut olevansa suuri ohjelmistotalo. Lisäksi esimerkiksi Internet- ja Wap-palveluiden rakentamisesta valtaosa on ohjelmointia.

Suomessa on erehdytty pitämään ohjelmoijapulaa Nokian rajun kasvun seurauksena. Nokian merkitys on toki suuri, mutta todellisuudessa ohjelmoijapula on maailmanlaajuinen ilmiö. Piilastuja tehdään valtavasti, eikä niistä ole hyötyä, ellei niitä ohjelmoida. Ohjelmoinnista on tulossa yhtä keskeinen ja pysyvä osa tekniikkaa ja yhteiskuntaa kuin sähköstä tuli viime vuosisadan alkupuoliskolla. Jo nyt Tampereen teknillisessä korkeakoulussa suoritetaan enemmän ohjelmointiin liittyviä opintoviikkoja kuin esimerkiksi rakennusalaan ja arkkitehtuuriin liittyviä yhteensä.

Ohjelmoinnin muutos

Ohjelmointi on muuttunut olennaisesti viimeksi kuluneiden kymmenen vuoden aikana. Uudet sovellusalueet, kuten langaton tietoliikenne ja Internet ovat ilmeisiä muutoksia, mutta itse asiassa samalla helpoimpia. Paljon tärkeämpää on ohjelmien mittakaavan kasvu.

Nykyisiin laitteisiin mahtuu valtavan paljon isompia ohjelmia kuin kymmenen vuoden takaisiin. Ikävä kyllä on osoittautunut, että iso ohjelma on vaikeampi tehdä kuin monta pientä. Erään selvityksen mukaan miljoonan rivin ohjelman tekeminen maksaa yli seitsemän kertaa niin paljon kuin mitä maksaa tehdä sata kappaletta kymmenentuhannen rivin ohjelmia.

Ohjelmien koon kasvu on pakottanut kiinnittämään paljon huomiota työtapoihin. Hyvä ja yhtenäinen ohjelmointityyli, kunnolliset suunnitelmat ja dokumentit, järjestelmällinen testaus ja niin edelleen ovat elintärkeitä isoille ohjelmille. Siksi niihin kiinnitetään nykyisin suurta huomiota ohjelmoinnin opetuksen alusta asti. Pelkkä ohjelmointikielen osaaminen ei enää riitä juuri mihinkään.

Myös uudet kielet ja menetelmät ovat mullistaneet ohjelmoinnin ja asettaneet aivan uusia pätevyysvaatimuksia. Algol-kielen kattava määritelmä vuodelta 1960 oli vain 15 sivua pitkä, mutta silti se oli selkeä ja helppolukuinen. Vuoden 1978 noin 230-sivuinen "The C Programming Language" oli melko lukukelpoinen, ja kelpasi käsikirjaksikin. Sen sijaan 1997 ilmestynyt "The C++ Programming Language" on hyvin tiivis ja sekava, vaikea lukea, kelvoton käsikirjaksi ja melkein tuhat sivua pitkä.

Yllä mainitut muutokset koskevat kaikkien ohjelmistoammattilaisten tarvitsemia perustaitoja. Ohjelmistotyössä tarvitaan myös syvällisiä erikoisosaajia, aivan kuten sairaaloissa tarvitaan hoitajien ja hallintoihmisten lisäksi lääkäreitä. Erikoisosaajienkin tarve on kasvanut rajusti.

Ohjelmoinnin määrällinen kasvu on otettu suomalaisessa päätöksenteossa aika hyvin huomioon. Ikävä kyllä ohjelmoinnin laadulliset muutokset ovat jääneet enimmäkseen huomaamatta. Sen sijaan, että valmistauduttaisiin tekemään 2000-luvun ohjelmia, monin paikoin valmistaudutaankin tekemään suuri määrä 1970-luvun ohjelmia.

Mitä osaamista ohjelmoija tarvitsee?

Akateemisena oppiaineena ohjelmointi on joutunut taistelemaan asemastaan. Ohjelmoinnin hyöty apuaineena on kyllä nähty kauan. Ohjelmoinnin omintakeista, sekä sovelletusta matematiikasta että perinteisistä insinööritieteistä poikkeavaa luonnetta ei kuitenkaan ole tunnustettu ennen kuin aivan viime vuosina. Niinpä ohjelmoinnin oman syvällisen teorian ja sen opettamisen tarvetta ei ole ymmärretty ajoissa.

Ohjelmoinnin opetuksen vinoutumat näkyvät hyvin uudehkossa amerikkalaisessa kyselytutkimuksessa. Käytännön työssä olevilta ohjelmistoammattilaisilta selvitettiin kaikkiaan 75 aiheesta, kuinka tärkeä kyseinen aihe on, kuinka hyvin se opittiin koulussa tai yliopistossa, ja miten osaamistaso on muuttunut työuran aikana.

Monet iät ja ajat laajalti opetetut aiheet kuten tietorakenteet, algoritmit ja käyttöjärjestelmät osoittautuivat sekä erittäin tärkeiksi että erittäin hyvin opetetuiksi. Ohjelmistotuotantoon ja projektitoimintaan liittyvät asiat kuten versionhallinta ja neuvottelutaito koettiin tärkeiksi mutta huonosti opetetuiksi. Yliopistot ovat kyllä kiinnittäneet niihin kasvavaa huomiota noin kymmenen viime vuoden ajan, mutta moni kyselyyn vastannut oli suorittanut tutkintonsa sitä ennen.

Myös ammattietiikka, ihmisen ja koneen vuorovaikutukseen liittyvät asiat ja muutamat muut aiheet koettiin tärkeiksi mutta huonosti opetetuiksi. Niihinkin yliopistot ovat viime aikoina kiinnittäneet huomiota. Herää toivo, että ehkä vielä jonain päivänä saamme ohjelmia ja laitteita, joita tavallisenkin ihmisen on miellyttävä käyttää!

Tutkimuksen kaikkein selvin havainto liittyi matematiikkaan ja luonnontieteisiin. Tärkeysjärjestyslistan häntäpää pullisteli fysiikkaa, kemiaa ja perinteistä insinöörimatematiikkaa. Ne oli opittu tutkinnossa hyvin, mutta unohdettu työuran aikana. Tämä on merkittävä havainto, sillä melkein kaikkia aiheita opittiin työuran aikana lisää.

Lähitulevaisuuden suunta

Yllä kuvatut muutokset eivät ole jääneet huomaamatta. Tuorein ohjelmistoalan kansainvälinen suositus korostaa muun ohessa uusien ohjelmointitekniikoiden, ohjelmistotuotannon, käyttöliittymien ja ammattietiikan merkitystä. Suositus toteaa, että perinteisen insinöörimatematiikan tai puhtaan matematiikan opettaminen tuleville ohjelmoijille ei vastaa tarkoitustaan, ja määrittelee niiden tilalle ohjelmoinnin omasta matematiikasta muodostuvan kurssipaketin.

Suomalaiset yliopistot ovat hyvin kehityksen tasalla. Ohjelmistotuotantoon on kiinnitetty huomiota jo pitkään, ja käyttöliittymien tutkimus ja opetus ovat vahvassa nousussa. Suurin ero yllä mainittuun suositukseen on, että ohjelmistoteoriaa opetetaan Suomessa vähän, ja matematiikan opetus on useimmiten järjestetty vanhalla, huonoksi havaitulla mallilla. Mutta ehkä siihenkin tulee muutos, kun tieto alan kehityssuunnista leviää.

Antti Valmari
Kirjoittaja on ohjelmistotekniikan professori Tampereen teknillisessä korkeakoulussa ja Suomen tietojenkäsittelytieteen seuran varapuheenjohtaja.