26 aprill 2010

Kas ma olen hea programmeerija?

Tegelikult ei pea ma end üldse programmeerijaks vaid pigem midagi sinna süsteemiarendaja, süsteemiarhitekti kanti. Aga sellest ei soovinud ma rääkida. Samamoodi pole ka kunagi mõelnud, kas ma ka hea süsteemiarendaja olen.
Sattusin huvitava artikli peale "How to recognise a good programmer", kus tuuakse välja punktid, mille järgi võiks hea programmeerija ära tunda. Võtsin siis kätte ja panin ka enda oskused ritta, et teada saada, kes ma üldse olen. Kuidas see ütlus oligi, kes see ikka koera saba kergitab kui koer ise:)

1. Passion
"They do “programming” as a day job"

Selle lühida lausega võiks selle punkti kokku võtta. Kui enda peale mõelda, kas ma selle punkti all kvalifitseerun, siis suur osa mu vabast ajast lähebki kõikvõimalike arendusprojektide ja ideedega tegelemiseks. Entusiasmi asemel tuleks võibolla rääkida hoopis fanatismist. Peale day job'i ehk kohustuslikku osa algab loomingulisem tegevus.

2. Self-teaching and love of learning
If you’re thinking of hiring someone as a programmer, and he ever utters the words “I can work with that, just send me on a training course for a week and I’ll be good at it”, don’t hire that guy. A good programmer doesn’t need a training course to learn a new technology.

Väga hästi iseloomustab tõsist entusiasti. Siiani veel meeeles, kuidas 10-11 aastaselt sai Lembit Abo kõik raamatud ribadeks lugesin saamaks teada kuidas elektroonikadetailid töötavad ning kuidas neid kokku panna. Sellele järgnes arvuti 13-14 aastasena kus inglise-eesti sõnastik kõrval käis meeletu tõlkimine kuidas Linuxis mingit shelli-skriptimist teha või kernelit kompileerida. Võiks julgelt öelda, et 18 aastaseks saamise hetkeks olin Linuxi kernelit oma 100 korda kompileerinud (kui küsida miks ma seda tegin, siis mulle meeldib kompaktsus ja endakompileeritud kernel on just see mis mulle meeldis). Sellele järgnenud Pascali, Perli, PHP, C, Visual Basicu jne keelte iseseisev õppimine ei nõudnud mingeid koolitusi vaid ainult meeletut pühendumist. Aastaid tagasi kui ma mõtlesin, et ma olen sellise posu keeli läbi proovinud aga mis neist kasu kui ühtegi perfektselt ei valda. Võibolla ongi see just see, mis näitab ehtsat fanatismi. Tähtis on hoopis taustateadmine, mida iga keel võimaldab, kuidas vajaduse korral midagi valmis kirjutada selles keeles ning seda oma ideedes rakendada.

3. Intelligence
Good programmers aren’t dumb. Ever. In fact, good programmers are usually amongst the smartest people you know. Many of them will actually have pretty good social skills too. /.../ Don’t ever hire a dumb person thinking they’re a good developer.

Ma pole end kunagi pidanud väga heaks jutumeistriks. Kui ma ikka teemast midagi ei tea, hoian suu kinni ja kuulan targemaid, aga "minu" teemasse minnes võib vahel väga peensusteni asju ära seletada. Just hiljuti sain ka oma juhendajalt võtta selle eest, et olen oma magistritöös asjad nii detailideni ära seletanud, et selle võiks hoopis manualina kasutusele võtta. Minu jaoks tähendabki intelligentsus rohkem mölapidamatust talitseda ning õigel ajal õigeid asju öelda.

4. Hidden experience
A good question to ask a potential “good programmer” in an interview would be “can you tell me about a personal project - even or especially one that’s completely irrelevant - that you did in your spare time, and that’s not on your CV?” If they can’t (unless their CV is 20 pages long), they’re probably not a good programmer.

CV kohapealt on küll nii, et hädaga suudab selle 3 lehele ära mahutada. Ilmselt poleks probleem see 5-7 leheliseks teha aga kes seda siis loeb? Mis kõige kurvem, kui üle oma poole elust oled ikka päevast päeva kõikvõimalike isiklike projektidega tegelnud siis kogemustepagas on ikka üsna auväärseks paisunud aga on vääääga vähe tööandjaid kes selleni oma küsimustega jõuda suudavad. Üks selline jutuajamine oli ühe teadusinstituudiga, kes soovisid mind tööle palgata. Nad olid vaimustunud mu kerneli kompileerimise oskustest, raudvara teadmiste tasemest ja veel sajast pisiasjast. Sel hetkel ei saanud ma päris täpselt aru, miks nad olid valmis mu iga kell tööle võtma. Võibolla see pühendumus oligi see, mida nad inimeses otsisid.

5. Variety of technologies
Learning a new technology is one of the most fun things a programmer with any passion can do. So they’ll do it all the time, and accumulate a portfolio of things they’ve “played around with”. They may not be experts at all of them, but all decent programmers will be fluent in a large inventory of unrelated technologies.

Jah, ega PHP või kasvõi HTML ning assembler ei oma ju mingit seost omavahel. Aga kui osata programmeerida mikrokontrollereid ning siduda sellega veebiliides ning see krempel kasuliku ideega siduda, võib saada vägagi huvitavaid lahendusi tehnoloogiatest, mis pole omavahel seotud. Omades mingeidki kogemusi laiast valdkonnast tehnoloogiatest oled võimeline neid omavahel siduma. See ei tööta, kui tead näiteks kuidas Javas klient-server lahendust progeda aga vot tahaks seda oma koduse gaasianduriga siduda kuid pole aimugi kuidas sensorid ja kogu elektroonika töötab.

6. Formal qualifications
Many good programmers will have a degree in Computer Science. Many won’t. Certifications, like MCSE or SCJP or the like, don’t mean anything either. These are designed to be accessible and desirable to all. The only thing they indicate is a certain level of knowledge of a technology.

Mul omal pole ühtegi sertifikaati. Sellest hoolimata tean väga täpselt mida ma oskan ja mida mitte. Andku ainult võimalus enda tõestamiseks. Computer Science paber küll tuleb üsna pea koolist aga seda võiks võtta pigem kui täiendusena olemasolevates teadmistes kuna magister aitab korrastatult omandada omale huvitavaid oskusi. Kui enne magistrit tegelesin kümne erineva asjaga vaheldumisi siis nüüd on tekkinud oskus oma olemasolevaid teadmisi sihipärasemalt ära kasutada ning vajadusel puuduolevaid juurde õppida.
Järgmiseks loogiliseks jätkuks ongi vist sertifikaadi omandamine kuna on hetki, kus see paber loeb kellegi jaoks kes sind ei tunne. Sel hetkel ei aita enam ütlemisest, et anna mulle võimalus end tõestada vaid ta ootab juba eelnevalt seda kindlustust, et tal on tegemist õige inimesega.

Kes peab end programmeerijaks, siis siin üks soovituslik lugemine, kuidas olla hea programmeerija.


Kommentaare ei ole:


WebCounter.com
blog.tr.ee