Omien tietotekniikan opintojeni aikana yhden ainoan kerran on harjoitustehtävänä ollut valmiin ohjelman (joka on edes näennäisen järkevä, toimiva ja "oikein" tehty) edelleenkehitys.  Silloin kun tehtävä tuli vastaan syytin sen vaikeudesta ohjelmointikieltä, joka ei ollut ennalta tuttu.  Nyt tiedän, että kyse oli virheellisestä strategiasta. Kun on opinnoissa vuosikaudet toistanut "kirjoita pieni juttu puhtaalta pöydältä" ei tullut mieleen, että ensiksi pitäisi hahmottaa visio, jonka mukaisesti alkuperäinen ohjelma on tehty ja jatkaa sitä (alkuperäistä visiota) eteenpäin.

Miksi pitäisi kehittää edelleen olemassa olevia softia? Eikö olisi parempi aina hylätä vanhat sotkut ja tehdä uusi, parempi?

Joissain tapauksissa epäilemättä on syytä hylätä aiemmat toteutukset tai osia niistä. Joissain tapauksissa uudelleenkirjoittaminen on hyvää harjoitusta. Nämä tilanteet on syytä tietenkin oppia tunnistamaan. Rohkenen kuitenkin väittää, että lähtökohta ohjelmistokehityksessä pitäisi aina olla tukevasti kiinni siinä, mitä meillä jo on. Tähän kohtaan voisin suoltaa hiukan latteuksia pyörien keksimisestä ja jättiläisen hartioista. Jätetään ne väliin. On intuitiivisten lisäksi vahvoja empiirisiä näyttöjä siitä, että muokkaamalla ja mukauttamalla pääsee pidemmälle (mm. Pizka ym.).

No joo, voihan se tietysti olla noin, mutta eikö kuitenkin "oikeassa elämässä" kuitenkin sitten tehdä niitä uudiskehitysprojekteja?

On varsin vahvaa empiiristä näyttöä siitä, ettei näin ole (mm. Lientz&Swanson).  Itseasiassa valtaosa tietotyöstä on ylläpitoa (kun jaetaan elinkaariajattelun mukaisesti kehitykseen ja ylläpitoon), eli käytössä olevan järjestelmän muokkaamista.

No höh. En minä ainakaan halua mitään ylläpitohommia tehdä. Se on kamalan tylsää, mielenkiinnotonta ja epämotivoivaakin.

Osaat sen, mitä aikanaan olet oppinut. Sellaisten asioiden tekeminen, mistä jossain takaraivossasi tiedät, että et ole kovin hyvä, ei tietystikään tunnu mukavalta ja motivoivalta. Ne ovat "vääriä haasteita". Olemassa olevan toteutuksen muokkaaminen on lukuintensiivistä työtä. Jos et osaa lukea, ei tietysti lukeminen kovin kivaa ole.

Siitä viis. Pidä lukemisesi. Minä ainakin aijon pelkästään kirjoittaa. Se on kivaa ja saanpahan tehdä asiat juuri niinkuin haluan.

Mikäs se sellainen taitaja on, joka ei tunne (eli ole lukenut) oman alansa klassikoita?

Analogioiden kanssa pitää olla hyvin, hyvin varovainen. Otan kuitenkin riskin ja esitän nyt asiani vertauksen avulla.

Kun opiskellaan musiikkia, kieliä tai kirjallisuutta, käydään aina läpi runsain mitoin "klassikoita" – malliesimerkkejä hienosta sävelten tai sanojen käytöstä. Näistä opitaan, ammennetaan aineksia. Huolellisen analyysin ja ymmärtämisen kautta niistä syntyvät ne oman luovuuden kukoistukselle välttämättömät (nyt tulee se latteus) jättiläisen hartiat, joille nousta. Kun opetellaan ohjelmointia, käydään aina läpi runsain mitoin varoittavia esimerkkejä ja virheitä.