…meie igapäevast IT’d anna meile igapäev…

2007-03-02

Mälestusi ühest programmeerijast

Filed under: Infotehnoloogia,Isiklikud — Sander @ 09:34:19

Oma elu jooksul puutume me kokku igasuguste inimestega – on neid, kes avaldavad muljet oma professionaalsuse ja asjatundlikkusega, neid, kes on lihtsalt head suhtlejad ja hoiavad tiimivaimu üleval, neid, kes tulevad ja soovivad õppida ja paremaks saada.

Ja siis on need… teised. Ühest sellisest ka siinkohas juttu tuleb – tahan selle ära kirjutada, enne kui ajahammas mälestusi hakkab moonutama.

Nimetame seda programmeerijat lihtsalt C’ks – kes teab tema nime, see teab, ja teistele pole see vajalik.

***

Hoiatuskellad oleks võinud lüüa helisema juba tema CV peale. Nimelt oli talle meie firma viimase nelja aasta jooksul juba kuues töökoht – aga oma sertidega pimestas ta kõik ära. Nimelt oli C’l rohkem sertifikaate, kui kellelgi teisel firmas – mõned madala-kesktaseme Oracle serdid ja terve pinu Microsofti omi, alates VB 6.0’st, jätkates mitmete C#/.NET’i ja ASP.NET’i sertifikaatidega, suhkrukoogi lõpetamiseks ka .NET’i arhitektuuri sertifikaat.

Palka küsis ta ka müstilise summa – õnneks ei olnud osakonna juht nõus seda koheselt maksma – enne kui ta ennast tõestanud on. Siiski sai ta programmeerijatest kõige suuremat palka, nii kolmandiku jagu rohkem kui teised.

***

C oli väga hea suhtleja. Sotsiaalselt aktiivne, nagu öeldakse – kui selleks pidada kõrtsides ning piljardit ja bowlingut mängimas käimist. Ta sai kõikidega väga hästi läbi – siiamaani tulevad inimesed ja küsivad „Kas ta tõesti nii tegi? Aga ta oli ju niiii tark ja huvitav”.

C oli ilmselt väga paljudes kohtades saanud läbi lihtsalt hea jutuga. Samuti kasutas ta huvitavat „kordamise” strateegiat. Seda on lihtsam seletada näite põhjal – see näide oli esimesest korrast, kui ma seda teadlikult märkasin.

*

Käimas oli suurem koosolek, suhteliselt keerukal frameworkide kasutamise teemal. Kuivõrd haldan ühte framedest, siis olin nii sinna kutsutud kui ka suhteliselt aktiivne.

Olin just alustanud ühte pikemat selgitust, kui koosolekule saabus C, keda sinna polnud kutsutud. Ta tuli ning istus minu kõrvale maha – ja kui ma oma jutu lõpetasin, siis alustas ta „Mida Sander öelda tahtis, oli…” – ehk ta rääkis minu jutu ladusamalt ja ilusamalt üle, ise midagi lisamata. Mõned inimesed said aru, mida ta tegi – ja vaatasid teda nagu tal oleks kaks pead. Mõned aga noogutasid rõõmsalt tema jutule kaasa…

*

Sama üritas C ka edaspidi teha – kuid siis olin ma juba rohkem selleks valmis ja ütlesin lihtsalt vahele „Jah, seda ma just ju rääkisingi”. Mõne aja pärast lõpetas ta selle metoodika minu puhul ära – kuid kuulsin teda seda kasutamas hiljem veel korduvalt, nii klientide kui ka kaastöötajatega. Mõlemal juhul harrastas ta veel lisaks inimese jutu ülerääkimist sellele inimesele endale. Mõni ime siis, et teda niiiiii targaks peeti.

***

Alguses sai C pisemaid ülesandeid – nagu uus töötaja ikka. SQL-päringute optimeerimine, mitmesugustesse projektidesse „nupukeste” tegemine. Aega läks tal nendega palju, aga noh, vaja süveneda projektidesse, suve aeg ka, kõik ei liigu nii kiirelt alati. Juhtub. Üldiselt oldi C’ga rahul.

Siis aga tuli suurem projekt – ühe tervishoiu-alase infosüsteemi tegemine. Ei midagi kriitilist, lihtsalt andmekogu. ASP.NET ja MS-SQL server, ei midagi eriti keerukat.

C oli selle peal nii arhitekt kui ka peaprogrammeerija. Mina, kui .NET platformil uustulnuk, pidin tema juhendamise all tegema lihtsamaid asju – kasutajaliidest, JavaScripti ja muud säärast.

Ei hakka siinkohal pikemalt rääkima, kui aeglane just C töö oli – ja mis oli tema koodi kvaliteet. Suurem osa asju tuli välja alles siis, kui C oli firmast juba lahkunud, ühte teise Eesti IT-firmasse – seekord testijaks, mitte programmeerijaks. Arvestades, et testija töö on oluliselt täpsem kui programmeerijal ja tegelikult ka vastutus suurem… nojah, võib vist vaid sellele firmale kaasa tunda.

***

Tahaks siinkohal tuua mõned näited C poolt tehtud asjadest – arusaadavad on need ehk vaid IT-ga lähemalt tuttavatele inimestele. Pärast seda, kui C lahkus, tegelesid 3..4 inimest mitu nädalat sellega, et projekt „c-ismidest” puhtaks saada.

*

Nagu ilmnes nädal enne C lahkumist, olid andmebaasi põhitabelis kõik väljad (peale automaatselt genereeritud tulpade) ühte ja sama andmetüüpi: nvarchar(50). Kõik. Sealhulgas sellised väljad nagu „Sugu”, kõik kuupäevad, kõik numbriväljad. Kõik.

Kui ma küsisin, et miks nii, siis vastas C „Aga ma ei viitsinud muuta. Töötab ju nii ka”. Töötas küll… kuidagimoodi. Hiljem tegelesin kolm päeva sellega, et muuta ära andmetüübid, seda nii andmebaasis kui ka storedproc‘ides, triggerites, funktsioonides ja ASP.NET’is. Nagu siis avastasin, anti ASP.NET’is edasi kõik väärtused nvarchar(100) andmetüübina. Mis küll mõlgub sellise mehe peas, kes selliseid relvu taob asju kirjutab?

Samuti olid andmebaasi põhitabelis tulpade nimed erinevad projekti analüüsis olevatest. Ilmselt C’le lihtsalt ei meeldinud, et asjad on lihtsalt tuvastatavad…

Kolm tulpa olid duplikaadid, mida ei kasutatud üldse…

*

Testija kurtis, et logisse ei tule kasutaja korralikult sisse. C tegi paranduse, selleks kulus kolm tundi. Siis töötas.

Pärast C lahkumist leidis testija, et logisse tuleb vale kasutaja. Peale otsimist leidsin logivast triggerist järgmise koodi:

–c’i häkk.
if @iKasutaja is null
begin
set @iKasutaja = 1
end

Vähemalt oli C oma häki ilusti allkirjastanud. Nagu pikemal uurimisel selgus, ei tulnud sellese tabelisse, mille peal trigger töötas, kasutaja ID kunagi sisse. Ehk, iKasutaja oli alati null ja seejärel sai tema väärtuseks alati 1.

*

//sekundaarne_uimasti

lblRiikTekst.Text = Klassifikaator.GetClassificatorName(“elukoht_riik”, elukoht_riik.Value);

*

Andmebaasi muudatuste tegemisel tuli muuta ka parajalt palju C#/ASP.NET koodi. Ühes kohas oli C’l if… millele järgnes 400 rida koodi, seejärel else… ja veelkord 400 rida koodi. Nagu ilmnes, oli kahe bloki erinevuseks andmebaasi storedproc‘i nimi. Nüüd on selle if.. else.. konstruktsiooni pikkuseks kaks rida.

***

Omaette teema oli C ja SVN (SubVersion). Kuidas ta oli olnud neli aastat programmeerija, ilma et versioonihalduse algteadmisi omandada… seda minu pea ei võta. C pani kõik asjad SVN’i, sh kompileeritud failid ja Visual Studio backup-failid. Ühel korral avastasin kogu VS projekti duplikaadi SVN’ist – C ütles, et see oli asja backup ja oli väga nördinud, kui ma selle sealt ära kustutasin.

Umbes korra päevas kurtis C, et „SVN on katki”. Alguses ma ei saanud aru, mida C silmas pidas, kuid nagu selgus oli lihtsalt tegemist edit conflict‘idega. Enamusel juhtudel sellistega, mida sai lihtsalt TortioiseSVN’i diffiga lahendada…

9 kommentaari »

  1. Issand, sa näed ja sa ei mürista.
    Lugesin esimese poole läbi “äratundmisrõõmuga” ühest “C”-st kellega koos olen tööd teinud. Teine pool aga oli täpselt ühe teise “C” käekiri. Ja kumbki neist pole ilmselt algne “C”. Seega on neil vist siin kuskil pesa?

    kommentaar kirjutas Fog — 2007-03-02 @ 11:52:07 | Vasta

  2. Haha!

    Tegelikult lähevad need versioonikontrollid vahel katki küll. CVSi puhul oli päris mitu juhtu, kus see enam mingi labase koodifailiga hakkama ei saanud (a la kustutad omalt konfliktse ja muutusteta faili ja tõmbad selle uuesti serverist, aga probleem ei kao).

    kommentaar kirjutas Janek — 2007-03-02 @ 16:21:13 | Vasta

  3. Fog, vähemalt selles firmas kus sina oled, C ei ole varem töötanud.

    kommentaar kirjutas dukelupus — 2007-03-02 @ 19:01:16 | Vasta

  4. Wow. C’del peab tõepoolest kusagil pesa olema – ise olen suisa kahtes sellist isendit kohanud, teine oli veel eriti osav – tema tedmised asjadest olid tõepoolest tasemel ja ta oli võimeline väga head koodi kirjutama. Kui tahtis muidugi. Enamasti ei tahtnud – selle asemel kirjutas häkke.

    kommentaar kirjutas Moon — 2007-03-02 @ 20:19:52 | Vasta

  5. … töötanud …

    kommentaar kirjutas toivo — 2007-03-02 @ 20:32:48 | Vasta

  6. … mhrmmm, aga hr.C. tõenäoliselt töödas teie firmas, nii et korrektne.

    kommentaar kirjutas toivo — 2007-03-02 @ 20:33:53 | Vasta

  7. Heh, parandasin ära – ty

    kommentaar kirjutas dukelupus — 2007-03-02 @ 21:39:50 | Vasta

  8. as of now…

    $comments[3] != true;

    kommentaar kirjutas Fog — 2007-03-19 @ 19:19:01 | Vasta

  9. Ega ta reedest peale jah seal enam ei ole. :P

    kommentaar kirjutas dukelupus — 2007-03-19 @ 20:42:10 | Vasta


RSS feed for comments on this post. TrackBack URI

Lisa kommentaar

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Muuda )

Twitter picture

You are commenting using your Twitter account. Log Out / Muuda )

Facebook photo

You are commenting using your Facebook account. Log Out / Muuda )

Google+ photo

You are commenting using your Google+ account. Log Out / Muuda )

Connecting to %s

Blog at WordPress.com.