Ar Tu moki programuoti? - IT-darbas.lt


IT darbo skelbimai

Ar Tu moki programuoti?

Tikrai, ar tu moki programuoti? Jei nemoki, tai pernelyg nenusimink - abu turėsime progą šiek tiek pamokyti programuojančius. Tačiau jei iš tikrųjų manai, kad esi programuotojas, tai gerai pagalvok - ar tikrai mokti programuoti? Tai yra be galo subjektyvus dalykas, bet programavimas šiais laikais yra gana lengvai prieinamas mokslas dėl to yra daugybė programuotojų, kurie tiesiog nemoka elementarių programavimo tiesų. Žinoma, bepigu man teigti, kai pats nesu baigęs jokio universiteto ir turiu dar visai nedaug gilių teorinių žinių, tačiau esu skaitęs gana nemažai įvairios medžiagos ir pasižiūrėjus į kai kurių žmonių programavimo stilių galiu gana drąsiai teigti, kad neretas programuoja neteisingai. Netiki? Panagrinėkime keletą faktų ir galbūt man pavyks tave įtikinti, kad programavimas yra visai ne lengvas dalykas.

Nežinau kiek iš jūsų yra dalyvavę informatikos olimpiadose, tačiau kiekvienam programuotojui tiesiog privalu žinoti tai, ką žino ten dalyvaujantys mokiniai. Šiais laikas kompiuteriai atlieka milijonus operacijų per sekundę todėl vis dažniau pasirodo programos visiškai netvarkingai dirbančios su duomenimis. Vykdomos olimpiados yra šaunios tuo, kad jose pateiktas užduotis galima išspręsti labai įvairiais būdais, tačiau elementarūs metodai tiesiog yra tokie neoptimalūs, kad programa veikia per ilgai - visoms programoms yra nustatytas atminties ir vykdymo laiko (< 1 sec.) limitas. Programuoti pradėjus nuo tokių kalbų kaip PHP tikrai sunku mokėti gerai programuoti, nes šioje kalboje iš vis niekuo nereikia rūpintis - daugybė jau paruoštų funkcijų ir viskas tiesiog veikia. Olimpiadose leidžiama naudoti Pascal, C++ arba C kalbas, taigi didžiąją dalį funkcionalumo reikia kiekvieną kartą perkurti pritaikant savaip. Įsivaizduokite elementarų uždavinį, kuriame pavyzdžiui reikia apdoroti nekryptinį svorinį 100′000 viršūnių grafą ir surasti trumpiausią atstumą tarp M ir N viršūnių. Turbūt neretas žmogus pasinaudotų foreach ir pan. ciklais ir prasuktų šį viršūnių masyvą keletą kartų, tačiau juk tai užtruktų visą amžinybę - čia negalima nenaudoti Dijkstros ar Primos algoritmų. Ko tokių? Žinoma juos reikia pirma žinoti, tačiau parašyti optimalesnį kodą turbūt sunkiai pavyktų, o jų nežinant kartais gali net nepavykti įveikti užduoties. Jei visgi tikitės, kad jūsų būdai yra pakankamai optimalūs, galiu nurodyti vietą su standartiniais uždaviniai, kad patys galėtumėte įsitikinti klydę!

O ką jau kalbėti apie tokius dalykus kaip dinaminis programavimas, heapas, greitasis rikiavimas ar pan. Problema tame, kad daugybė programuotojų naudojasi tik standartinėmis funkcijomis ar rašo programas, kurios veikia su konkrečiais duomenimis. Tai iš esmės yra prastas pavyzdys, nes turbūt visi besiruošiantys olimpiadoms parašytų puikias programas, o tikrieji programuotojai tikriausiai raudonuotų palyginę su savo kodu. Ir vėl negaliu nepaminėti PHP kalbos, nes su ja daugiausiai dirbu. Jau nekalbant apie tai, kad joje kintamieji atsiranda iš niekur, tai dar ir nereikia beveik nieko mokytis - imi funkcijas ir naudojiesi. Bjauriausia yra tai, kad dirbant su PHP beveik nereikia jokių algoritmavimo žinių - internete yra tiek pavyzdžių ir jau parašytų programų, kad realiai viską galima susirinkti iš dalių be jokio supratimo kaip viskas veikia. Po vieno iš mano pirmųjų įrašų atsirado keletas žmonių, kurie siūlėsi perimti keletą mano projektų ir labai aktyviai įrodinėjo, kad turi „geras“ PHP žinias. Tačiau kaip paaiškėjo vėliau - žmonių programavimo patirtis apsiriboja PHP-Nuke. Nežinau kokiu reikia būti žmogumi, kad su tokiu žinių bagažu išdrįsti siūlytis į darbą, juk jie tikriausiai net nelietę programavimo. Kažkodėl net neabejoju, kad kažkiek panašūs programuotojai dirba ir rimtuose darbuose - kokiu būdu jie ten patenka nežinau, bet spėju, kad programuotojų darbo kokybė, ypač Lietuvoje, yra gana žema. Sprendžiu iš to, kad dar nei viename programuotojų ar IT forume netekto sutikti nagrinėjant gilių ir įdomių teorinių temų, o tokius dalykus įvaldyti be problemų tikriausiai yra beveik neįmanoma. Tikiuos, kad klystu.

Turbūt jums kilo klausimas, ką aš noriu įrodyti. Aš noriu įrodyti tai, kad kažkuri dalis programuotojų yra lyg beždžionėlės, kurios programuoja tokiame žemame lygyje (ne gerumo prasme), kad juos vadinti programuotojais būtų tiesiog neapdairu. Labai norėčiau sužinoti kiek tokių yra Lietuvoje - tikiuosi mažiau nei 50%. Tačiau jei jų yra tiek, tai liūdžiu pasirinkęs programuotojo profesiją, nes bus nelengva surasti gerą komandą produktyviam darbui. Nors pats dar nesu gerai įvaldęs programavimo, bet kuo toliau, tuo labiau manau, kad galbūt man verta užsiimti „aukštesne“ profesija - kaip paprastas programuotojas aš pernelyg daug siekiu ir „matau“. Galbūt taip nėra, tačiau man akivaizdu, kad pernelyg programuotojų renkasi lengvą kelią ir tiesiog teršia pasaulį prastomis programomis. Tikiuosi viską daryi kitaip.

 

Autorius: Juozas Kaziukėnas