mai 09, 2015

Bravo, Keberlinsky, bravo




Vahest juba pool aastat pean ennast väikest viisi jälle programmeerijaks. Mingi aeg tagasi, kusagil ajavahemikus 1994-2004 olin ka väikest viisi programmeerija andmebaaside vallas ja enne seda, füüsikuna töötades ka tuli oma aparaatide andmete töötluseks programme kirjutada.
Aastal 2014 tuli pähe mõtte hakata jälle koodi nikerdama ning elu tegi ka korrektiivi vajalikus suunas. Minu armas Alma Mater arvas heaks mind kasutajatoe osutajate seast maha arvata ning vetteviskamine andis vähemalt tõuke uueks sisenemiseks.
Ma ei liigitu klassikaliste uustulnukate kategooriasse, aga mitmes mõttes jälle olen. Nii on mul hea esitada lihtsaid, klassikalisi küsimusi, kuigi ka hiljem tuleks võtta julgus ja küsida lihtsaid asju.
Kes ei tea - pealkiri tuleneb ühest vanast, vanast legendaarsest telelavastusest, vist lavastas selle nüüdseks manalamees Eino Baskin ja legendaarseks mängis selle Jüri Järvet. Jüri Järvet mängis seal väga andetut näitlejat. Sellist "tõld on ees" tüüpi...
Mina ei teadnud muuseas ka Keberlinskist midagi, aga selle teadmise tõi mulle üks ninakas kolleeg praeguseks ammu ammu hingusel logistilisest keskusest, kui ma oma kohvitassi tema klaviatuuri peale tühjendasin....
Pealkirja ma dubleerin, teemat mitte - teema on esitatud VÄGA ANDEKA esitleja Jacob Kaplan-Mossi sellekevadises Pyconi ettekandes. Te näete, kui hästi suudab ta auditooriumi oma pihku haarata - see on omadus, mida igaüks ei evi. Hm, ja ma ei usu ka tema teesi, et Jacob on keskpärane programmeerija. Ikkagi Django autor. Ma muuseas ei tea rohkem Djangost midagi. Aga sõnamaagia meie vallas loeb ...
Ja sellest hoolimata kaldun ma tema juttu võtma tõsiselt:
Õigusest olla keskpärane.
Niisiis on valdkondi, kus andekust loetakse väga tähtsaks - näiteks näitlemine.
On aga valdkondi, kus ei loeta andekust vajalikuks, Näiteks ehitamine. Kuigi siin ma olen ja jään käpardiks, keda ei tohi mingil tingimusel ehistöödele ligigi lasta. ...
Programmeerimine liigitub praegu valdkonnaks, kus pidevalt oleks nagu vaja geeniusi. Sa oled kas väga, väga võimekas programmeerija ... või täielik xxxxpea. U kujuline jaotus, mis on absurd.
Tegelik jaotus käib kellakõvera järgi ja Jacob siin julgeb välja öelda, vähemalt tal on õigus hakata keskpärasuseks (mis on umbes samaväärne väga targa ja kavala kilpla  "tavaliseks" saamisega, millest tuli välja teate küll mis. Ega keskpärane ei olegi lihtne olla, veel raskem on selleks saada - kukud lihtsalt U ühest harust teise ...).
Lisandub veel noortekultus, mis minusuguse vanatoi ilmselt midagi küsimata ukse taha jätab, kuigi on erandeid. Ühes sellises erandlikus firmas ma praegu leiba teeningi...

Kellakõver kõveraks, aga praegu siiski tundub, et on veel aeg, kus latt on valdkonda sisenejale liiga kõrgel.
On harusid, kus see ei stereotüübi järgi  nii ei ole, s.t. ei loeta asju nii kriitiliseks - näiteks võivat igaüks veebi treida (kuigi asjad on seal täpselt sama segased või segasemadki, kui süsteemprogrammeerimises), või andmebaasi nikerdada. Tegelikult ju ei ole ja ka seal on latt professionaalidele küllaltki kõrgel, mis selgub küll mõne aja pärast.
Miks on nii, seda küsitakse programmeerimises juba pikemat aega?
Miks ehitamine, isegi inseneriteadaus on selline, kus ei pea olema raketiteadlase võimetega (aga raketiteadus muuseas kannatabki tõenäoliselt sama stereotüübi käes, aga see kujund on juba nii juurdunud, et ei ole kõrvaldatav)?
Ja mida peaks selleks tegema, et nii ei oleks?
Vanal ajal oli ehk ka ehitamine midagi sarnast, sest jooniseid siis väga ehk ei tunnistatud. Ja ometi ehitati katedraale.
Tänapäeval saab ehitamisega hakkama isegi minusugne sündinud käeline käpard...muidugi üsna pika harjutamise järel, ma sellesse valda sisenemist siiski selles elus ei üritagi...
Vahest on asi siiski joonistes, standardites, lihtsustamistes, mis sellega kaasneb.
Täpselt samamoodi peab kunst nimega programmeerimine muutuma käsitööks. Suuresti ta on selleks muutunud, aga suures osas veel ei ole. Ja see "kunst" või "ilu" ei ole meie vallas mitte ilu, vaid tavaliselt lihtsalt kommenteerimata / dokumenteerimata programm.
Dokumenteerimine aga on väga lihtne siis, kui on olemas piiramatu ajaressurs ja peaaegu võimatu siis, kui seda ei ole. Ja seda kunagi ei ole. Järelikult ma ei üllatu, kui ma kuulen oma healt koolivennalt, kes selles vallas on ometi juba 8-ndast klassist olnud, nüüd siis vast nii 35 aastat: Ma EI OLE VEEL NÄINUD korralikult dokumenteeritud programmi.
Küsisin üle ka tõsiasja, kas ta joonistab plokkskeeme. Ei joonista.
Mina ka ei joonista, aga ma eriti ei oska ka. Kui aga oskaks, siis mida valida, kas projekti lõpetamine enam-vähem tähtaegselt või ... hilinemine paar kuud, koos ilusate joonistega, mida kasutajale kindlasti vaja ei ole? Kuidas teeksite Teie?
Ehk on see mujal natukene parem - peaksin küsitlema programmeerijaid ka mujalt maailmast.
Sellest hoolimata on valdkonda sisenemise latt hakanud nihkuma allapoole. Lihtsalt kodeerijaid on vaja järjest enam ja neid enam kellakõvera kõrgest otsast leida pole.
Seetõttu peavad töölevärbajad hakkama leppima täiesti tavaliste põmmpeadega. Neile aga tuleb iga asi täiesti pulkadeni lahti seletada.
Sellest võib aga sündida ka positiivseid asju: projekt on dokumenteeritud.
Seda oskab iga põmmpea üle võtta hallata, muuta. Sellest saavad isegi ülemused aru, mis seal on tahetud teha (kui on ilusad plokkskeemid). Näiteks Unixi kohta arvas Kerningham nii - et see süsteem on niikaua elus püsinud, põhineb sellel, et on olemas väga häid Unixi raamatute kirjutajaid ...

Ja mina, ehk oma vanuse tõttu küll, enam ei eelda, et ma oleksin selles ülemises U harus, pigem siis juba alumises. Näeksin meelsasti, et ka tavalised inimesed saaksid kodeerimisega tegelda, sest tegelikult midagi väga kohutavat selles ikkagi ei ole.
Tegelikult on vist, isegi väga programmeerimise algusaegadel, tegemist puhtakujulise müüdiga.
See asi, mida nimetatakse programeerimises andekuseks, on idioodi või eesli kannatlikkus, mida nõuab mingi idiootse (aga suudate te kujutleda mitteidiootset viga?) vea otsimine.
Või siis samasugune idioodi kannatlikkus mingi manuaali läbiuurimisel, kui midagi muud enam üle ei jää. Ei midagi üleloomulikku - kompileerite oma programmi vahendiga nimega "make". Raamat sellest on 300lk. Make lihtustamiseks on tehtud automake. Raamat sellest on järjekordne 300 lk.
Kogu selle krempli keskne juhtpult omab nimetust Eclipse.
(raamatut sellest õnneks ei ole, aga oleks vähemalt mulle väga vaja.)
Ja nii edasi kümnete töövahendite kohta ....kusjuures meie paganama EESTIS ei ole raamatukogus näiteks isegi Michael Kerriski raamatut. Ja ma ostan selle, sest ma olen endiselt veendunud, et ilma raamatuteta ei jõua kaugele (see kehtib ka Eesti programmeerimise kohta üldiselt).
Ma usun, et elu õpetab neist asjadest varsti üle libisema - kusagilt on meelde jäänud teine tõdemus, et programmeerijad ei loegi raamatuid. Kusagil vahepeal on tõde, kirik keset küla, sest ilma praktilise kodeerimiseta ei ole manuaalil mingit mõtet. Nii on ju ka kokaraamatutega - ma olen ka James Olivieri raamatuid uurinud ja mis veelgi uhkem - tema saateid vaadanud - nii hea on vaadata inimest, kes midagi VÄGA HÄSTI oskab. Kokanduses olen aga endiselt NULL.
Vahest mingi kuldne 50:50 protsenti uurimise ja tegemise vahel oleks mingi kesktee.
Siin ma olen nüüd resoluutne, oma kibedaist kogemusist  - ei mingeid tühje raamatulugemisi siin ei tohi tolereerida!
Võtke ette mingi eeldatavalt 1000-2000 realine  programm / projekt ja hakkake kohe pihta Hallo worldi ja foobaridega jantimise asemel ning eelistage raamatuid, mis ei kasuta termineid foo ja bar / või ainult juhtumisi, millegi tõesti väga lihtsa illustreerimisel.
Aga tagasi keskpärase Jacobi juurde, kes juhtumisi leiutas Django (millest ma juhtumisi midagi ei tea).
Jacobil on üks hämmastav omadus - ta jookseb maratone, ülipikkasid. Ta olevat ära jooksnud 50 miili! (äkki siiski kilomeetrid?)
Ja selles ettekandes / või jutus julgeb ta väita, et maratoni jooksjad on tavalised inimesed! Siin vahest ongi vahe. Programmi kirjutamine ei ole iialgi sprint. Ka minu tegevus 1994-2004 algas proosaliselt. Ülikooli rmtkg-s infotehnoloogia vägesid juhatava Marguse juurde tuli üks puiduärimees ja ütles, et talle on homme vaja saatelehtede lugemise programmi, Äkki viskad töö kõrvalt ära...
Margusel tema õnneks sellel päeval aega ei olnud ja ta delegeeris selle probleemi minule, et äkki viskad ära. ...
Ja seda saatelehtede lugemise programmi ma tegin 1994-2004. Kusagil on ta endiselt käibes, vist.
Kahjuks seda kõikide muude tegemiste kõrval, nii et ma päris suureks ja vägevaks produktiks seda ei osanud kasvatada. Üks eesti suurfirma kasutas seda ja tellis muudkui asju juurde ja siis ... müüdi firma maha ja osteti sisse MS suur ja miljoneid maksev raamatupidamine ...
Ja siis oli mul sellest kõigest põhjalikult villand, ühemehefirmas ei tiku kõik hästi välja tulema. Tööjaotus on abiks, näiteks raha küsimisel ei ole ma väga andekas, aga seda on ka elamiseks vaja ...
Kokkuvõtteks ma arvan, et programmeerimist saab muuta ja tulebki muuta täiesti tavaliseks tööks, nagu iga teistki tegevust.
Et ülivõimetega 1000 hindu asemel oleks targem siin koolitada oma kooliõpilasi ja hakatuseks õpetada UML skeeme tegema ja lugema ...

Et selleks tuleb ilmselt veel, veel ja veel dokumenteerida, hakatuseks kasvõi koodi kommenteerida.
On arvutatud välja, et heades avatud lähtekoodi projektides on kommentaare 20 % ridade üldarvust.
Nii et 1000 rea kohta 3 lk. ilukirjandust! Äkki siin on midagi, mis mulle sobib - kurtsin ju oma grafomaaniliste kalduvuste üle.
Et kirjutan hallo, hallo rea ja kommenteerin seda 5 lk. selle järel. Ja keegi ei ütle selle kohta midagi pahasti, hoopis kiita saab!
Muuseas, mitte keegi ei tea, kust on meie valdkonda siginenud mõisted foo ja bar.
Kes teab, andke märku!