m2 blogas

2009 m. birželio 1 d. | Andrius V.

Tinginys, tinginys ir dar kartą tinginys! Tiesa, dar pridėkime lankstumą ir perfekcionizmą, bet apie viską – iš eilės.

Taigi, kodėl tingėjimas yra programuotojo draugas? Nagi, pagalvokime. Ko programuotojas labiausiai nemėgsta? O gi daryti „tą patį per tą patį“, kadangi tai visiškai nepadeda jo tobulėjimui. Ką jis tada daro? Stengiasi kodus parašyti taip, kad grįžti prie to paties ar  pakartotinai rašyti reiktų kuo mažiau. Kitaip sakant, tingėdamas ateityje iš naujo daryti tą patį, jis stengiasi rašyti kodą, kuris būtų itin lankstus ir esant reikalui reikėtų minimalių pastangų jo funkcionalumo praplėtimui. Tik svarbu nepersistengti – juk pamenate DRY principą praeitame mano straipsnyje?

Tačiau yra ir kitokių tingumo formų ir jos, deja, jos nėra tokios geros, kaip aprašyta aukščiau. Pati akivaizdžiausia – tiesioginis tingėjimas išvis kažką daryti (turbūt tai yra neigiamas dalykas bet kokioje gyvenimo situacijoje).

 

Kita tingumo forma – nelankstumas. „Tingėjimas“ lanksčiai žiūrėti į problemą ir rinktis įprastą (ne visada geriausią) sprendimą irgi nėra gerai. Dabartiniame pasaulyje gebėjimas prisitaikyti kiekvienoje situacijoje – svarbus kaip niekada. Ir jei programuotojas gyvena su tuo pačiu, kaip ir prieš 5-10 metų, požiūriu į programavimą ir įgūdžius, iš jo tikėtis efektyvių ir teisingų sprendimų tikėtis neverta. Turi būti žingeidus naujovėms, tačiau jausti ribas – naujausios mados ir tendencijų vaikimasis gali neduoti jokios naudos, ypač jei ilgainiui pasirodo, kad tos tendencijos „neprilipo“ ir buvo „nurašytos“. 

Beje, apie perfekcionizmą (tinkamai naudojamas jis yra mano geriausias draugas). Programuotojų pasaulyje perfekcionizmas – tai nuolatinis siekis parašyti kodą geriau, nei jis buvo parašytas paskutinį kartą. Jei programuotojas nėra visiškai patenkintas tuo, ką parašė ir jaučia, kad gali geriau – vadinasi su jo perfekcionizmu yra viskas gerai. Žinoma, su sąlyga, kad susiduręs su ta pačia problema ateityje jis jos sprendimui ieškos geresnio būdo, o ne naudos senąjį. Juk „galėti“ – ne visada reiškia „daryti“.

Kas dar svarbu? Reiklumas ir konkretumas taip pat yra gero programuotojo „draugai“. Kodėl? Todėl, kad gerai realizuoti sprendimą galima tik tiksliai žinant užduotį – ji turi būti konkreti ir aprašyta taip tiksliai, kad neliktų vietos jokiems „arba arba“. Šiose situacijose atsiskleidžia ir programuotojo reiklumas. Jei programuotojas nedaro užduoties, kol ji nėra tinkamai aprašyta, jam galima dėti didelį pliusą. Žinoma, dėl tokio elgesio gali pykti valdžia ir projektų vadovai. Bet kaip kažkur teko skaityti – „programuotojas yra Dievas“ ir visi turi šokti pagal jo dūdelę, kitaip galutinis realizacijos variantas tikrai nespindės kokybe. Turbūt tokios mintys nesvetimos ne vienam programuotojui?

Pabaigai – dilema. Kas yra geresnis programuotojas: konceptualistas ar „darytojas“? Konceptualistas šiuo atveju atspindi asmenį, kuris daugiau laiko galvoja negu programuoja. O „darytojas“ – tas kuris daugiau laiko programuoja negu galvoja. Aš linkstu prie konceptualisto (nes save tokiu laikau). Prieš ką nors darydamas aš sugaištu nemažai laiko mąstydamas, kaip tai turės būti realizuojama, kokie gali išlįsti kabliukai, kokią architektūrą naudoti ir t.t. „Darytojas“ šioje vietoje daug nesigilins – jis ims ir pradės daryti, o esant reikalui, keis kodą, jei nenumatė kažko iš anksto. Jo pranašumas – mažesni laiko kaštai, o minusas – kodas gali būti „a bit messy“...

 

Išvardinau tas gero programuotojo savybes, kurios atėjo iš patirties ir savęs stebėjimo, ieškojimo to, kas verčia mane tobulėti. Turbūt yra ir daugiau gerą programuotoją apibūdinančių savybių. Kas verčia jus tobulėti?


Rašyti komentarą

Pawka | 2009 m. birželio 1 d. 10:23
Konkurencija. Kad ir koks gabus būtų žmogus, jam vistiek įtakos turi jį supanti aplinka. Reikia, kad būtų su kuo varžytis (kad ir netiesiogiai) arba iš ko mokintis, pasisemti patirties.
Andrius | 2009 m. birželio 1 d. 14:59
Su šituo teiginiu nenoriu sutikti. Konkurencija motyvuoja tik iki tam tikro lygio. Po to ji pati nužudo motyvaciją. Pvz aš siekdamas tobulėti, labai retai kada pagaunu save galvojant apie tai, kad tapti geresniu už kitus. Mane labiau domina pats tobulėjimo procesas, nei noras ką nors aplenkti. Tai galima taikyti tiek programavime, tiek sporte. Abi šios sferos man nesvetimos ir puikiai matau, kad konkurencijos motyvacija nėra tokia galinga, kaip visi mes įsivaizduojame.
Laura | 2009 m. birželio 2 d. 11:14
Programuotojas yra dievas :DDDDD
AA. | 2009 m. birželio 2 d. 16:38
Turbūt kalbėjai apie šį straipsnį - http://powazek.com/posts/1655
aur1mas | 2009 m. birželio 5 d. 23:25
Dėl konceptuolisto ir "darytojo". Manau jie abu iš dalies yra evil. Vienas per daug galvoja, ko pasekoje vistiek ką nors praleidžia. Kitas per daug programina, ko pasekoja kodo daug, o naudos mažai. Aš labiau krypčiau į Agile programuotoją. Jei reikia sukurti struktūrą, tai reikia ją išskaidyti etapais (skaidyti galime viską tik nereikia persistengti). Apgalvoji vieną struktūrą kažkiek užčiuopdamas kitas (kad nebūtų po prieštaravimų tarp etapų ir netaptum "darytoju") ir programuoji. Programuojant galvoji į priekį ir matai iššūkius, kurių nebuvai įvertinęs. Taip programavimas tampa ir greitesnis ir išbaigtesnis.
Dzei | 2009 m. birželio 7 d. 14:17
Programuotojas Dievas? :))
Andrius V. | 2009 m. birželio 8 d. 12:59
Apskritai programavimas yra techninis procesas ir jį galėtų daryti AI. Iš žmogaus tereikėtų kūrybiškumo. Todėl, kad ir kaip dabar juokingai skambėtų "susiprogramuok pats". Ilgainiui tai taps realybe. Nes tikrai nematau reikalo dalyvauti žmogaus prote projektuojant DB ar rašant duomenų apdorojimą. Tai techninis procesas ! Ir tik mašina gali jį tiksliai padaryti.
Naujausi komentarai
  • 2009 m. lapkričio 20 d. 10:27
    Stepas Ačiū už info ;)
  • 2009 m. spalio 4 d. 13:18
    Audrius O kurioj vietoj laikeisi sertifikata?
  • 2009 m. rugpjūčio 25 d. 18:42
    Darius Didžiausi sveikinimai Janui!
  • 2009 m. liepos 17 d. 09:02
    Julius My personal favorite yra lambda funkcijos. :)
  • 2009 m. liepos 5 d. 23:22
    aur1mas Perskaitęs antraštę tikėjausi šiokio tokio naujovių apžvelgimo,...