Hõbekuuli püüdlemas
Kes
teab, hõbekuul on koodinikerdajate maailmas vihje Fred Brooksile.
Enne
sellesse maailma sukeldumist, töötupõlves lugesin seda ja peaksin
uuesti üle vaatama, nüüd on sellel kõigel rohkem mõtet.
Tõsi, tollal ma arvasin enesekindlalt, et noh, ühe suure andmebaasiprogrammi (ega see nii väga suur ei olnudki tagasi vaadates) olen valmis teinud (dbf formaadis), et oskan küll.
Tõsi, tollal ma arvasin enesekindlalt, et noh, ühe suure andmebaasiprogrammi (ega see nii väga suur ei olnudki tagasi vaadates) olen valmis teinud (dbf formaadis), et oskan küll.
Ega
ikka nii väga ei osanud küll ja ei oska praegu ka.
Millegipärast
olin (ja vahel olen ikka veel) arvamisel, et kusagil on olemas mingit
sorti eliksiir või siis hõbekuul, mille omandamisel hakkab
koodinikerdamine palju, palju kiiremini kulgema.
Millegipärast oma andmebaasiprogrammiga see ei õnnestunud, aga noh, teise töö kõrvalt (arvutiadministraatorina) nii veerandkoha koormusega aretades ehk ei pidanudki oskama.
Üllatusega avastan, et kolleegid ei paista ka hõbekuuli olevat leidnud, kuigi nende tegemised kulgevad siiski palju, palju efektiivsemalt. Aga mitte vahest järk efektiivsemalt, vaid lihtsalt noh, ütleme 2 korda kiiremini. Võib-olla ka kolm, kui mingi asi väga käpas on. Spetsialiseerumine ei ole küll hõbekuul, aga kui teed mingit asja, mida oled juba hästi teinud, saab lõpuks päris osavaks.
Kui probleem on uus, siis võib olla vähem, aga siiski kogemus siin ka loeb - ka uue probleemiga tegelemise kogemus on kogemus.
Millegipärast oma andmebaasiprogrammiga see ei õnnestunud, aga noh, teise töö kõrvalt (arvutiadministraatorina) nii veerandkoha koormusega aretades ehk ei pidanudki oskama.
Üllatusega avastan, et kolleegid ei paista ka hõbekuuli olevat leidnud, kuigi nende tegemised kulgevad siiski palju, palju efektiivsemalt. Aga mitte vahest järk efektiivsemalt, vaid lihtsalt noh, ütleme 2 korda kiiremini. Võib-olla ka kolm, kui mingi asi väga käpas on. Spetsialiseerumine ei ole küll hõbekuul, aga kui teed mingit asja, mida oled juba hästi teinud, saab lõpuks päris osavaks.
Kui probleem on uus, siis võib olla vähem, aga siiski kogemus siin ka loeb - ka uue probleemiga tegelemise kogemus on kogemus.
Brooksi
jutt täpselt sellele osundaski. Kooditegemise käigus on olemuslikke
asju, mida ei saa väga palju kiiremini teha, kuigi saab muutuda
päris osavaks.
Võrdleksin oma hobi - ujumisega. Saan uhkelt harrastusujujatest mööda põrutada, aga ka minu võimetel on piirid. Mina ujun100 meetrit, juhuharrastaja 50. Ja treeningupoiss ujub selle aja sees 150 meetrit.
Ujun tavalist konnastiili ja olen päris uhke, et saan maha 50 meetriga tempos 1 minut ja 10 sekundit, nüüd hetkel koguni 8 sekundit. Aga millist pingutamist see 2 sekundit tähendab, ja mitu korda rohkem pean nädalas ujumas käima, et saada kätte näiteks 1 minut ja 5 sekundit?
Võrdleksin oma hobi - ujumisega. Saan uhkelt harrastusujujatest mööda põrutada, aga ka minu võimetel on piirid. Mina ujun100 meetrit, juhuharrastaja 50. Ja treeningupoiss ujub selle aja sees 150 meetrit.
Ujun tavalist konnastiili ja olen päris uhke, et saan maha 50 meetriga tempos 1 minut ja 10 sekundit, nüüd hetkel koguni 8 sekundit. Aga millist pingutamist see 2 sekundit tähendab, ja mitu korda rohkem pean nädalas ujumas käima, et saada kätte näiteks 1 minut ja 5 sekundit?
Kuigi
jah, Phelps muigaks selle peale ja meie Tartu poiss Zirk ka muigaks.
Ma ei tea tema treeningutempot, vahest 45 sekundit 50 meetri peale,
või koguni 40 (konna stiili harrastades?).
Aga
ikkagi üle 2 korra kiiremini ta minust ei uju.
Ka inimese vaimsetel võimetel on omad piirid, vähemalt kiiruslikus mõttes.
Ja kuhu meil siis ikkagi nii kiire on?
Suurema projekti puhul on vaja lihtsalt rohkem inimesi tööle panna ja nende tööd paremini organiseerida.
Siit aga selle valdkonna võlu ja valu algabki.
Ka inimese vaimsetel võimetel on omad piirid, vähemalt kiiruslikus mõttes.
Ja kuhu meil siis ikkagi nii kiire on?
Suurema projekti puhul on vaja lihtsalt rohkem inimesi tööle panna ja nende tööd paremini organiseerida.
Siit aga selle valdkonna võlu ja valu algabki.
Projektid
on tavaliselt suured, mitte väikesed. Mitte 100 rida, vaid 10000 ja
100000.
Üksiküritaja võib pika aja sees saada oma 100000 realise monstrumi kätte üksinda tehes, firmas peab sellega tegelema meeskond.
Üksiküritaja võib pika aja sees saada oma 100000 realise monstrumi kätte üksinda tehes, firmas peab sellega tegelema meeskond.
Teise
inimese koodi peab oskama lahti võtta. See ei ole alati ainult
programmeerimiskeele küsimus, igaühel kujunevad välja mingid
harjumused. Mõned võivad olla ka halvad, mõni aga on maitse asi ja
selliste asjade üle käib alati halastamatu andmine.
Kuhu ikkagi panna see loogeline sulg { ?
Kõike ei jõua parimagi tahtmise korral dokumenteerida. Kui palju ikkagi kommenteerida?
Kuidas koodi nii kirja panna, et teine inimene ka sellest aru saab?
Kuidas koodi nii kirja panna, et seda annaks modifitseerida.
Kuhu ikkagi panna see loogeline sulg { ?
Kõike ei jõua parimagi tahtmise korral dokumenteerida. Kui palju ikkagi kommenteerida?
Kuidas koodi nii kirja panna, et teine inimene ka sellest aru saab?
Kuidas koodi nii kirja panna, et seda annaks modifitseerida.
Millal
hakata vorpima UML-e ja kõikvõimalikke muid skeeme.
Pidage meeles, et igal projektil on alati mingi ajaline piir, eks?
Kõikide nende asjade üle käib netis alati mingi “flame war” (milline võiks olla eestikeelne oskussõna?), mis annab tunnistust vaid sellest, et siin hõbekuule ei ole leitud.
Pidage meeles, et igal projektil on alati mingi ajaline piir, eks?
Kõikide nende asjade üle käib netis alati mingi “flame war” (milline võiks olla eestikeelne oskussõna?), mis annab tunnistust vaid sellest, et siin hõbekuule ei ole leitud.
Pakun
siin välja oma esialgsed mõtted, mis võivad muutuda.
1. Kui mul on valida 2 programmi vahel, millest üks on hästi kirjutatud, aga milles pole ridagi kommentaare, ja programmi vahel, mis ehk ei ole nii hästi kirjutatud, aga milles on jutt juures, mida miski asi teeb, ma valin edasiarendamiseks teise programmi.
Isedokumenteeruv programm on üks suur müüt ja mida kiiremini sellest müüdist vabaneda, seda parem.
1. Kui mul on valida 2 programmi vahel, millest üks on hästi kirjutatud, aga milles pole ridagi kommentaare, ja programmi vahel, mis ehk ei ole nii hästi kirjutatud, aga milles on jutt juures, mida miski asi teeb, ma valin edasiarendamiseks teise programmi.
Isedokumenteeruv programm on üks suur müüt ja mida kiiremini sellest müüdist vabaneda, seda parem.
Uurisin
netist - avatud koodi projektides peetakse heaks tooniks 10% -20%
kommentaare.
Enamasti võib muu dokumentatsiooni tegemiseks siiski aega mitte jätkuda, kommenteerimiseks võiks aega kulutada küll.
2. Jeffrey Snower (PowerShelli looja) ütles kunagi XP programmerimise kohta, et see on nagu püksi pissimine - algul on soe, aga pärast ...
XP kohta mul puudub praegu sügav kogemus, kuigi vist kaldun selle poole, et vanad ja vastikud koskmeetodi harjumused kaevatakse tasapisi igal pool välja, sest ollakse jõudnud püksi pissimise teise faasi - iga firma arhiivides leidub meetrite viisi koodi, mida oleks vaja edasi aretada ja nüüd on küll vaja juttu selle koodi juurde ka teada saada.
Enamasti võib muu dokumentatsiooni tegemiseks siiski aega mitte jätkuda, kommenteerimiseks võiks aega kulutada küll.
2. Jeffrey Snower (PowerShelli looja) ütles kunagi XP programmerimise kohta, et see on nagu püksi pissimine - algul on soe, aga pärast ...
XP kohta mul puudub praegu sügav kogemus, kuigi vist kaldun selle poole, et vanad ja vastikud koskmeetodi harjumused kaevatakse tasapisi igal pool välja, sest ollakse jõudnud püksi pissimise teise faasi - iga firma arhiivides leidub meetrite viisi koodi, mida oleks vaja edasi aretada ja nüüd on küll vaja juttu selle koodi juurde ka teada saada.
On
vaid teada, et kood tekkis nii, et 2 programmeerijat tegelesid
sellega XP-d harrastades, aga praguseks on nad firmast läinud ja
ühesõnaga, ei teata sellest midagi peale legendide.
...
3.
Ja samas see asi, mida ma ei oska ja peaksin hakkama oskama -
tundmatu koodi desifreerimine.
Sest tegelikult ei ole võimalik kõike dokumenteerida, iga projekti puhul ollakse tavaliselt ajahädas, surve asi ära teha on tohutu ja isegi selle surve puudumisel on oma koodi efekt väga tugev - väga lihtsaid asju ju ei viitsi kirja panna. Kuna inimesed liiguvad, siis koodi autor on juba ehk kusagil mujal, ja kui ka siinsamas oma kontoris tegutseb, on tal hetkel tavaliselt mingi muu pingeline asi käsil ja tal ei ole aega (ja ka meeles ei ole äkki) tundide kaupa vestelda. Ühesõnaga, see tasakaalu küsimus, palju koodist pidada iseenesestmõistetavaks ja mida siiski ära märkida, see on probleem.
Sest tegelikult ei ole võimalik kõike dokumenteerida, iga projekti puhul ollakse tavaliselt ajahädas, surve asi ära teha on tohutu ja isegi selle surve puudumisel on oma koodi efekt väga tugev - väga lihtsaid asju ju ei viitsi kirja panna. Kuna inimesed liiguvad, siis koodi autor on juba ehk kusagil mujal, ja kui ka siinsamas oma kontoris tegutseb, on tal hetkel tavaliselt mingi muu pingeline asi käsil ja tal ei ole aega (ja ka meeles ei ole äkki) tundide kaupa vestelda. Ühesõnaga, see tasakaalu küsimus, palju koodist pidada iseenesestmõistetavaks ja mida siiski ära märkida, see on probleem.
4.
Aga iga firma peaks arvestama, et inimesed liiguvad ja see sama püksi
pissimise probleem avaldub alles näiteks 5 aasta möödudes. Et oli
kodeerija K, kes kirjutas (väga head) koodi.
Aga
juttu väga palju ei ole juurde kirjutatud. Ja nüüd on äkki
probleem.
Ja tööle maabub mitte alati see kõige, kõige oskajam, vaid näiteks allest ülikoolist tulnud, kes väga hästi teab kiirsortimise algoritmi, aga paljusid muid asju ei tea.
Ja selle kõige juures on keskkonnad ikka väga erinevad. Mingi Foxpro taustaga tegelane näeb algul üsna kurja vaeva C keelega (mida ta ammu ammu kusagil füüsika insituudi laboris oli ka näppinud).
Ja tööle maabub mitte alati see kõige, kõige oskajam, vaid näiteks allest ülikoolist tulnud, kes väga hästi teab kiirsortimise algoritmi, aga paljusid muid asju ei tea.
Ja selle kõige juures on keskkonnad ikka väga erinevad. Mingi Foxpro taustaga tegelane näeb algul üsna kurja vaeva C keelega (mida ta ammu ammu kusagil füüsika insituudi laboris oli ka näppinud).
5.
Ja puhtalt kodeerijate kõrval on palju teisi tegelasi firmas, kes ei
peagi teadma kõiki nüansse.
Nii et kuigi kodeerimise maailmas käis läbi kunagi Prantsuse revolutsooniga võrreldav XP programmeerimise vool, loksub kõik jälle vanasse sängi tagasi.
Bürokraatia ja dokumenteerimine omandab jälle mõtte.
Nii et kuigi kodeerimise maailmas käis läbi kunagi Prantsuse revolutsooniga võrreldav XP programmeerimise vool, loksub kõik jälle vanasse sängi tagasi.
Bürokraatia ja dokumenteerimine omandab jälle mõtte.
6.
Kahjuks tuleb igal kodeerijal oma elus tegelda paljude keskkondadega.
Ometi ei ole väga hea mõtte neid spetsiaalselt juurde
koguda.
Tegelikult võidaks aega kõvasti, kui C, C++, C#, Java ökosüsteemi, Delphi, PHP, Javascripti paabeli asemel oleks näiteks see vana (ja kohutav) C. Või C++. Või Java ökosüsteem, mis jälle ise on üks paabel.
Eriti õppimisel kuluks see ära. Hiljem, mingite vilumuste ja reflekside tekkimisel ehk ei ole see sein nii järsk, mingi uus keskkond hakkab palju kiiremini külge.
Tegelikult võidaks aega kõvasti, kui C, C++, C#, Java ökosüsteemi, Delphi, PHP, Javascripti paabeli asemel oleks näiteks see vana (ja kohutav) C. Või C++. Või Java ökosüsteem, mis jälle ise on üks paabel.
Eriti õppimisel kuluks see ära. Hiljem, mingite vilumuste ja reflekside tekkimisel ehk ei ole see sein nii järsk, mingi uus keskkond hakkab palju kiiremini külge.
See
jälle sõltub, aga sain teada ... et TEGELIKULT ma ei ole kiire
õppija.
Minu näide on vahest hästi õpetlik:
Firmas tegelen C-ga ja oleks päris tore olnud, kui nüüd õpitavad Algoritmide ja andmestruktuuride kursusel ka kirjutaksin C harjutusi ja ei peaks vaevlema mulle täiesti tundmatu Javaga.
Füüsiku ülbusega aga arvasin, et see on selline “köki möki” asi. Ei olnud midagi.
Seetõttu valisin AA kõrvale midagi veel vingemat (et oleks ülimalt huvitav). Valisin
Minu näide on vahest hästi õpetlik:
Firmas tegelen C-ga ja oleks päris tore olnud, kui nüüd õpitavad Algoritmide ja andmestruktuuride kursusel ka kirjutaksin C harjutusi ja ei peaks vaevlema mulle täiesti tundmatu Javaga.
Füüsiku ülbusega aga arvasin, et see on selline “köki möki” asi. Ei olnud midagi.
Seetõttu valisin AA kõrvale midagi veel vingemat (et oleks ülimalt huvitav). Valisin
funktsionaalse
programmeerimise (vinge!!).
See kursus ei ole KINDLASTI mitte algajatele mõeldud.
Ma kaldun arvama, et kursuse tegijad ei ole ka päris hästi läbi mõelnud, mida nad peaksid seal õpetama. Kas tegelda grupi fanaatikutega, kes juba palju teavad ja tahavad lihtsalt täiustuda Haskelli ja Scala maailmas? Või eeldada proosaliselt, et kursusele maabuvad üsna erineva tasemega inimesed, kellest enamik siiski FP-st midagi ei tea.
Idee õpetada ÜHEL semestril nii Haskelli kui Scalat kindlasti ei ole hea.
See kursus ei ole KINDLASTI mitte algajatele mõeldud.
Ma kaldun arvama, et kursuse tegijad ei ole ka päris hästi läbi mõelnud, mida nad peaksid seal õpetama. Kas tegelda grupi fanaatikutega, kes juba palju teavad ja tahavad lihtsalt täiustuda Haskelli ja Scala maailmas? Või eeldada proosaliselt, et kursusele maabuvad üsna erineva tasemega inimesed, kellest enamik siiski FP-st midagi ei tea.
Idee õpetada ÜHEL semestril nii Haskelli kui Scalat kindlasti ei ole hea.
8
loengut ja hops - Haskell selge. Minevik, üks kontrolltöö
ümbertegemine veel,
sain
50st võimalikust kätte 28, 3 tegin ära ja kahe ülesandeni puht
füüsiliselt ei jõudnud (vanus ka loeb). Ma ei usu, et rohkem üldse
saan. Aega ei ole. 50 -se aju tiksub hoopis aeglasemalt, kui noore IT
tudengi oma. See kahjuks selgus selle kontrolltöö käigus näiteks.
Ja
nüüd vaevlen Scala rüpes. Ja mitte lihtsalt Scala, vaid Odersky
enda põhiteksti, Scala by example abiga üritan seda selgeks saada.
Kõige selle käigus sai AA õppimine kõvasti kannatada ja siin ma nüüd kaeblen.
Kõige selle käigus sai AA õppimine kõvasti kannatada ja siin ma nüüd kaeblen.
AA
on nagu üldfüüsika kursus, see võiks ka ulatuda üle 2 semestri
kindlasti, aga ok, Tartus tehakse kõiki suuri asju ühe semestri
sees.
Kardan, et FP tuleb mul lihtsalt ohverdada, eksternina siis mahavisatud raha.
Ei saa õppida korraga Javat, AA-d, Haskelli, nüüd siis Scalat ja teha täiskohaga põhitööd ka.
Kardan, et FP tuleb mul lihtsalt ohverdada, eksternina siis mahavisatud raha.
Ei saa õppida korraga Javat, AA-d, Haskelli, nüüd siis Scalat ja teha täiskohaga põhitööd ka.
Selle
kõige eest saab 12 punkti, kui nüüd sedagi saab (kui 6-gi AA eest
kätte saab, on ka hea).
Võimalik,
et ma vingerdan öötööde ja puuduvate puhkepäevade arvelt välja,
võimalik, et ei vingerda ja FP-st jäävad edaspidiseks vaid halvad
mälestused. Vähemalt kindel teadmine, et sellist asja ei omanda ÜHE
SEMESTRIGA ja eriti stiilis 8 loengut Haskelli ja 8 loengut Scalat.
Noorus
saab sellega ehk hakkama ja TÜ raamistikus see kõik on OK.
IMHO siiski ei ole.
Õppimise aluskeskkond võiks ülikoolis olla Java. Java ja ainult javapõhine võiks olla kogu bakalaureuseõpe. (FP siiski vist ei olnudki bakaõppe osa, aga ka siin alustusena sobiks see idee).
IMHO siiski ei ole.
Õppimise aluskeskkond võiks ülikoolis olla Java. Java ja ainult javapõhine võiks olla kogu bakalaureuseõpe. (FP siiski vist ei olnudki bakaõppe osa, aga ka siin alustusena sobiks see idee).
FP-d
saaks õpetada AINULT Scala baasil. Ei mingit Haskelli, kui küsimuse
all on 1 semestri lühikursus 16 loenguga.
Scala
seetõttu, et üliõpilased Javat juba tunnevad.
Minu
huvidega see kokku ei käinud, ma ei tea Javast mõhkugi.
Variant
B oleks AINULT Haskell.
Formaalselt saab mahutada 16 loengu raamidesse ükskõik mida, reaalselt seda teha ei saa.
Saab ainult nii, et reaalselt üliõpilane tõesti planeerib ettenähtud 150 tunni asemel FP-le semestris tunduvalt rohkem aega kulutada. Näiteks 200-300 tundi või on seda juba varem teinud. Mina seda lõbustust endale lubada ei saa ja järelikult FP jääb mingil hetkel VIST ära.
Formaalselt saab mahutada 16 loengu raamidesse ükskõik mida, reaalselt seda teha ei saa.
Saab ainult nii, et reaalselt üliõpilane tõesti planeerib ettenähtud 150 tunni asemel FP-le semestris tunduvalt rohkem aega kulutada. Näiteks 200-300 tundi või on seda juba varem teinud. Mina seda lõbustust endale lubada ei saa ja järelikult FP jääb mingil hetkel VIST ära.
Sellist
asja nimetatakse fokuseerumiseks ja fokuseerida arvutiõppes on vaja.
Peamine ei ole mingisugune multikulturaalne paljusus, mida üliõpilane
IT-st peaks saama, vaid mingi ühe ökosüsteemi (näiteks JAVA)
pulkadeni omandamine koos lisanditega. Näiteks SCALA.
Võimalik,
et magistriõppesse võiks tulla juurde paljusus, aga alustuseks ei
saa ei ann see midagi. Paabel on programeerimise keskkondadesse küll
sisse kirjutatud, aga mina pean seda meie valdkonna nuhtluseks, mitte
eeliseks.
MA EI NÄE SIIN MINGIT HÕBEKUULI.
MA EI NÄE SIIN MINGIT HÕBEKUULI.
IT-s
tuleks teha ühte asja, ja teha seda hästi.
See printsiip on Unix-st, mille kohta olen hakanud ka kriitilisemaks muutuma.
See printsiip on Unix-st, mille kohta olen hakanud ka kriitilisemaks muutuma.
See
kriitilisuse faas muuseas kuulub asja juurde, nagu ilmselt ka mingi
ühe või teise stiili entusiastiks saamine lõppude lõpuks.
Praeguses seisus on FP vaimustus minus kõvasti, väga kõvasti
lahjenenud.
Aga
mine sa isahane tea, see võib veel üle minna.
Nii
palju siis mulle kingitud tunni raames (täna öösel keerati kellale
jälle taha. hm. voorimehe, s.t. it mehe kombed on siginenud...)
hõbekuuli leidmisest, kust paistan olevat veel kaugemal, kui
töötupõlves, s.t. 2 aastat tagasi...
0 Comments:
Postita kommentaar
<< Home