Ko reikia, kad taptum geru programuotoju?
photo credit: Laughing Squid
Šis įrašas savotiškas komentaras į paskelbtas mintis nežinau.lt.
Perskaitytas straipsnis tikrai puikus ir vertas dėmesio, nors jis skirtas pradedantiesiems, norėčiau apie tai pakalbėti kiek daugiau. Kadangi pats esu ne vieną kartą aktyviai mąstęs apie programavimą, kokią kalbą rinktis ir kaip viską pradėti, turiu savo minčių šiuo klausimu.
Visų pirma, norėdamas tapti programuotoju vis dėl to turi suprasti matematiką, fiziką ar kitus loginius mokslus, nes jeigu tau iš matematikos išeina kiauras dvejetas, tu programuotoju net ir labai norėdamas netapsi. Kodėl? Tai tas pats atsakymas, kaip ir klausiančių, kodėl mokantis informatikos, reikia tiek daug dirbti ties matematika. Atsakymas paprastas, matematika tikriausiai vienintelis mokslas, kuris reikalauja visų žmogaus loginių mąstymo subtilybių, mokslas tiesiog verčia mąstyti, ko programavimui ir labiausiai reikia. Aš mėgstu sakyti, jog programavimas yra šiek daugiau už matematiką, nes reikia dar ir tas matematines ar kitokias logines žinias pritaikyti rašant programas. Todėl kaip tu parašysi programą, nemokėdamas mąstyti, nemokėdamas kurti algoritmų, nedirbdamas su savo galva.
Iš kitos pusės šie įgūdžiai yra nuolat tobulinami, todėl jeigu matematika sekasi neitin gerai, tačiau suvoki pagrindinius dalykus ir sugebi spręsti sudėtingesnius uždavinius, sunkiai dirbdamas gali pasiekti labai daug. Šiuo atveju tik reikės įdėti daugiau darbo mokantis nei tam, kuriam Dievas į galvelę įdėjo daugiau košytės – gabumų. Aišku viena – niekas negimė mokėdamas nei programavimo, nei matematikos – viskas yra dažniausiai išmokstama.
Antras aspektas siekiant tapti programuotoju tai charakterio savybės. Esu įsitikinęs, jog norint mokytis programavimo reikia daug kantrybės, nes kartais padarai klaidų tokiose smulkiose vietose, kad gali visą programą perdaryti iš naujo, o klaidos vis tiek nerasi. Kantrybės reikia ir ieškant informacijos, mokantis naujų dalykų ar tiesiog dirbant su klientais, kurių norams ne visada įtiksi iš pirmo ar net ketvirto karto.
Smalsumas, noras mokytis taip pat svarbūs elementai, tačiau juos nesunku sužadinti – pradėkit įgyvendinti savo svajones, tikėkite, kad kuriate naują Skype ar pradėkite dirbti už nors ir mažą, bet atlygį.
Trečia, Povilas, straipsnio nežinau.lt autorius, tinkamai suskirstė programavimo kalbas ir jų paskirtį pradedančiajam. Čia jau pačiam reikia atidžiai išsinagrinėti esamą rinką, pasirinkti širdžiai mieliausią programavimo kalbą ir pradėti su ja dirbti. Tačiau reikia atsiminti, kad programavimo kalba yra tik įrankis, tik galimybė perteikti viską kompiuteriui. Visi įgūdžiai įgaunami su bet kuria programavimo kalba, o pradžiai labiausiai vis dėlto tinka Pascal. Pascal puikiai išugdys jūsų algoritmavimo įgūdžius, nes čia nėra jokių funkcijų, tik kertiniai elementai – viską reikės daryti pačiam. Sintakse nėra sunki, nors kartais atrodo griozdiška.
Viską susidėliojus jau prasideda pats procesas ir nesvarbu, kad nesiseks, nes tikrai nesiseks, tačiau su laiku darysite vis mažiau klaidų, jeigu aktyviai mokysitės. Ir nereikia aiškinti, kaip komentaruose po straipsniu, kad savarankiškai mokydamasis nieko neišmoksi. Tie patys komentatoriai prieš kelis metus ar net dar dabar tebėra tokie patys – cituoju „šūdarankiai“, kaip dabar kitus vadina. Jie nebuvo nė kruopelyte geresni už šiuos, jų labiau mėgstamus epitetus, tik dabar savimeilė leidžia save vadinti šiek tiek geresniu, nors tikroji patirtis dar neaiški. Visi pradeda nuo mažų dalykų ir taip kaip vaikas išmokęs dėti pirmus žingsnius griūva iki kol išmoksta sklandžiai vaikščioti, taip ir visi besimokantieji iš pradžių daro daugybę klaidų.
Iš kitos pusės yra ir tokių, kurie savo kodą rašo bet kaip – svarbu veikia, tokio dalyko reiktų atsisakyti ir taikyti visus būdus savo kodo tvarkai ir aiškumui palaikyti. O mokslus reikia vis tiek baigti, nors galbūt jie nepasiūlys kažko labai daug programavimo srityje, tačiau ta pati matematika duos daugiau naudos. Apskritai, kartojuosi, mosklai niekam nepakenkė.
Kuo daugiau dirbsit ir programuosit, tuo geriau tai mokėsit, ir tai tikrai neatsiras per mėnesį ar du. Programavimo galima mokytis visą gyvenimą, nes vietų kur tobulėti yra begalės.
Komentarai
Visiškai sutinku su tavo nuomone. Visos perskaitytos mintys visai atitinka mano apmąstymus apie programavimą.
P.S. Ar nezinau.lt staripsnio autorius ne Povilas?
Paulius, Povilas – nedaug juk teapsirikau :D :) Juokauju. Pataisiau. Dėkui.
Geras, į mano parašytus straipsnius jau žmonės rašo atskirus straipsnius kaip atsakymus :) Malonu, kolega Ričardai, respektas už teisingas mintis straipsnyje ir šiaip už gerą tinklaraštį. Iš esmės pasakei tą patį ką ir aš, tik kiek kitokiu kampu ir kitais žodžiais.
Beje, pirma nuoroda straipsnyje neveikia (httphttp gaunasi)
Rašydamas pastebėjau, kad kai kur kartojuosi, bet kai kur yra ir nepasakytų minčių arba perteiktų kitaip. :) Pataisiau nuoroda.
[…] Kaip? Gal Microsoft žmonėms verta grįžti prie ištakų ir pradėti mokytis rašyti tvarkingą kodą? […]
Norint programuoti pastudijuoti reikia. As pats programavau be jokiu mokslu- bet viena diena pajutau, kad norint augti reikia pastudijuoti ir del savo sprendimo nesigailiu ne kiek.
galiu dar pridurti kad nestudijaves gal ir sugebesi ivaldyti viena kalba. Gal dvi. Bet kad darysi ir suprasi kur koki progrmavimo modeli taikyti, kur kas veikia, kas kaip turi veikti iki galo tai ne.
Studijuodamas priverstas isnagrineti viska kryptingai- pradedant paveldejimo aspektaism baigiant kokia masinu teorija.
Realiam gyvenime patingetai – o universitet tenka. ir pavyzdiui koks duomenu strukturu modulis man oi kaip lengvina gyvenima.
O tada jau nera didelio skirtumo kokia kalba programuoti- skiriasi aspektai, subtilybes- bet principai visose juose tas pats.
Taip pat angliskoj literaturoj yra terminai skripting ir programing. Tai yra nebaiges mokslu skriptinsi- gal kokiai joomlai ar worpresso templatui to ir uzteks. Gal net kita karta ir greiciau tai darysi negu zmogus baiges mokslus.
Bet tikram programinimui reikia programavimo teorijos butinai paragauti. Neisivaizduoju pvz zmogaus kuris nestudijaves suprogramuotu veidu atpazinimo algoritma. O ktu bakalauro darbuose pasitaiko.
Norint būti daugiau nei TVS diegėju mokslų tikrai reikia. Tik bent puse etato mokantis, o dar geriau metus prieš mokslus visai neblogai būtų padirbėti(programuotoju). Atsirastų motyvacija giliau studijuoti. Aš daugelį dalykų labai paviršutiniškai praleidau, nors baigiau ir labai gerai. Su dabartine patirtimi daug labiau gilinčiausi, nors bakalaurą tik pernai baigiau :)
Aš paprieštarausiu, kad reikia matematikos būtinai programavimui. Mano patirtis sako, kad bent 80% visų Lietuvoje programavimų iš kurių galima užsidirbti neprašo jokios matematikos… na gerai prašo daugybos, dalybos, sudėties, atimties, suskaičiavimo… – bet tai kone ir viskas. Išesmės tai tėra paprastoji matematika. Kone visas programavimas būna: iš kur ir kaip paiimti kokią info, ką su ja padaryti ir kur bei kaip rezultatus išsaugoti ar atvaizduoti. Kitaip sakant daug labiau reikia loginio mąstymo nei matematikos. O loginis mąstymas paprastai yra išvystomas be galo bandant vieną ar kitą veiksmą pakartoti. Taip, visai kaip ir dauguma kitų dalykų šiame gyvenime… panašiai kaip ir tu minėjai… :) O sakau taip, kad matieka!=logikai, tik ne tik todėl, kad tas pats, bet ir todėl, kad nemaža dalis bijančių matematiką nebijo logikos… Vadinasi, jie gali tapti programuotojais… na nors bent dėl mažmožių nekankinti normalių programuotojų, kurie ir taip turi idėjų bei minčių, ką programuot… :)
Teigti, kad „Kone visas programavimas būna: iš kur ir kaip paiimti kokią info, ką su ja padaryti ir kur bei kaip rezultatus išsaugoti ar atvaizduoti.” Tai tas pats, kaip vienam bloge mačiau – autorius parašė, kad yra nustebęs, jog php nėra plačiausiai naudojama kalba. Netgi jei tai būtų tiesa, kad duomenis reikia tik paimti ir padėti, viskas paprasta, kai vartotojų 100, o kai jų milijonas? Tada ir prireikia matematikos, ne tik tam, kad rastum efektyvesni algoritma, bet kad ir palygintum dviejų ar daugiau efektyvumą ;)
Nenorėčiau sutikti, kad pascal yra geriausia kalba pradžiai (juolab kad autorius taip ir neargumentavo, kodėl pascal yra geriausia kalba pradžiai). Mano supratimu, tai yra rudimentas, nes bent prieš 10 metų, tai lietuviški vadovėliai buvo parašyti remiantis ja, ja programuodavo olimpiadose, netgi universitetuose pradėdavo nuo jos. Bet taip buvo prieš 10 metų ir lietuvoje, kur retas turėjo kompiuterį namuose, mokyklose stovėjo max 386 su dos, visi naudojo vogtą borland kompiliatorių ir niekas bėdos nematė. Realiai šiandienai siūlyčiau pradėti mokintis iškart šiuolaikinę objektinę kalbą (paskalis kiek prisimenu irgi kažkiek objektiškumo turėjo).
Pythoon, Java ar C# yra geriausi variantai (Pythoon dėl savo švarumo, Java dėl paplitimo, o C# sintakse labai panaši į Java, bet lengviau konfigūruotis programavimo priemones pradedančiajam).
Mantas, mano patirtis sako, kad kai tenka dirbti jau su 10000 ar daugiau vartotojų tuomet dažniausiai pakanka sugalvoti kaip ir kada panaudoti įvairius cachinimo algoritmus. O tai dažniausiai yra tam tikras duomenų saugojimas ir rašymas į pasirinktą vietą. Vėlgi, matematikos nelabai daug. Kitavertus tu teisus, pvz. dirbant su verslo sistemomis tokiomis kaip Navision ir pan. greičiausiai matematikos jau prireiktų… bet vėlgi Lietuvoje dirbti programuotoju, kur to reikėtų mažai kam „pasiseka“. Deja, Lietuviškas programavimas gana vienpusiškas – remiasi iš esmės vien tinklalapiais ir visokiomis Oracle paremtomis duombazių sistemomis (bet ten irgi matematikos poreikis nesakyčiau, kad labai didelis)… Kitose srityse, kur išties jos reikėtų, darbo rasti bent kol kas netaip lengva. Man, atrodo tokias kompanijas, kur dirba tokie programuotojai, galima būtų net ant savo rankų pirštų suskaičiuoti čia Lietuvoje… Va todėl ir kyla klausimas: ar svarbiau remtis matematika norint programuoti ar ugdyti, kitus įgūdžius, kurie padeda greičiau surasti reikiamą informaciją ir ją pritaikyti sprendžiant įvairius programavimo uždavinius. Aš esu už antrąjį variantą.
Teigdami, kad PHP yra populiariausia kalba pasaulyje žmonės galvoja apie tinklalapių kalbą, bet neapskritai apie populiariausią programavimo kalbą. Populiariausia kiek pamenu šiuo metu yra JAVA.
Beje, aš visiškai sutinku su Giedriaus nuomone dėl programavimo kalbų pradedančiajam.
Matematika reikalinga nei kaip žinių šaltinis, tai vienintelis mokslas, kuriame tikrai daug reikia mąstyti. Matematika tam apskritai ir reikalinga, kad tu išmoktum logiškai mąstyti, o ne pritaikyti diskriminantą. Būtent dėl šios priežasties ir visokiems psichologams jos reikia. Programavimui reikia loginio mąstymo – reikia matematikos. Na, čia bent jau dalis, ko iš tikrųjų reikia.
Toliau seka įgūdžiai, o čia jau kaip MekDrop sako, reikia sėsti ir daryti.
Pascal gera tuo, kaip ir matematika, kad išmoksti algoritmuoti. Programavimui tai bene antras dalykas, na gal trečias. Reikia mokėti kurti algoritmus, juos pritaikyti. Tai praverčia kuriant ir lengvas ir sudėtingas programas. Iš esmės dėl to ir yra Pascal vis dar mokomas mokyklose.
Iš kitos pusės sutinku, daug bereikalingo laiko iššvaistoma mokantis tą Pascal, bet ką darysi tokia mūsų švietimo struktūra.
Aš tai asmeniškai vidurinėje net ir nesimokinau paskalio, domėjausi PHP programavimo kalba, per du metus, įgudau prie jos, visko negaliu pasakyt, kad išmokau, nes bibliotekų joje vis daugėja, funkcijų taip pat. Aš manau geriausia mokintis tokia programavimo kalba, kaip sakant užčiupti už vadžių naują kokia programavimo kalbą, kas moką pagrindus manau greit ir išmoktų ją, kodėl verta, jei ji pagrindžiama tuo labiau kokiame tope, tai tuo greičiau reikia griebti tai, kuo ilgiau tempsi laiką, tuo daugiau funkcijų didėja, pažiurėkite, kiek yra php funkcijų, bei bibliotekų, išmokti visko neįmanoma. Tik jei prireikia, tuomet tenka pasižiurėti. Bet asmeniškai aš tai ne paskali mokinčiausi, o c# kalbą.
Pascal vis vien yra gera tuo, kad padeda išmokti tinkamos kodo rašymo praktikos bei struktūros. Čia visus kintamuosius reikia aprašyti, pačiam kurti algoritmus, o ne naudotis jau iš anksto sukurtomis bibliotekomis, kad pradedančiajam ypač svarbu:
Dėl matematikos mokėjimo.. Na taip, programavimas ir matematika yra glaudūs dalykai. Tačiau mačiau puikių matematikų kurie, kad ir kaip dirbdavo ir vargdavo nesugebėdavo informatikos pamokose parašyti gana juokingai paprastų programėlių, ir atvirkščiai – atrodo beviltiškų ir su matematika susipykusių žmonių, kurie puikiai programuoja (aišku ne matematinius užd.). Pastarieji turėjo tokį kūrybingumą, kurio neturėjo pirmieji ir kuris juos ištraukdavo ir aplenkdavo pirmuosius. Žinoma geriau turėti abu sugebėjimus – kūrybingumą ir matematiškumą (:D), bet yra kaip yra. Visu tuo norėjau pasakyti, kad geras matematinis išsilavinimas visiškai negarantuoja lengvesnio programavimo (ir vėl, neturiu omeny konkrečių matematinių užd.)
Nu kažinau draugas savarankiškai išmoko ne vieną programavimo dalyką.Dabar įstojo y KTU informatiką,tai toliau tobulės.Ir čia priklauso nuo pačio žmogaus kiek norės tiek ir mokės.Aišku kaip sakė be matematikos programavime kaip be rankų.
Jei pradėsim diktuot ko programuotojui gali prireikt, tai turėtumėm išvardint ne tik matematiką, fiziką, bet ir lietuvių, anglų ir kitas kalbas, geografiją, biologiją, dailę ir dar daugybę visokių mokslų. Aišku visose rimtose firmose yra žmonių be programuotojo, kurie tai moka, tačiau bendras suvokimas padeda sukurt tinkamą algoritmą. Programuotojas yra iš esmės žmogus, sugebantis veiksmus išreikšti žingsneliais, kurie į mažesnius neskaldomi (tai reiškia sudaryti algoritmą). Taip pat jo pareiga stengtis išvengti klaidų realizuojant optimaliausią kodą tam tikroje programavimo terpėje. Taigi norint gerai programuot tereik išmokt sukurt algoritmą, jį optimizuot, užrašyt tam tikra programavimo kalba ir sukompiliuot :D Žodžiu skaitykit dokumentacijas, o ne tutorials, galvokit užduotis ir jas spręskit. Skaldykit ir valdykit :p Kūribingumo ir Dėmisingumo, Naujokai!
Ir kas nori ismeginti savo jegas kuriant svetaine kuri butu panasi i: http://www.manodrabuziai.lt ( tik butu kitoks dizainas, isdestimas, kai kurios funkcijos) bet mintis ta pati.
Lauksiu pasiulymu :)
Konkrečioms užklausoms ar užsakymams yra pateiktos kontaktų formos kiekviename Informacijos ir kt. puslapiuose.
Visiškai nesutinku su tais, kurie sako, kad programuojant su PHP reikia matematikos. Reikia logikos ir tų visų teorinių, techninių žinių. Kad parašytum algoritmą, tai vėlgi reikia ne matematikos, o logikos. Ir kalbu iš patirties, nes pažįstu žmonių, kuriems nesiseka matematikoje, bet jie pasižymi labai geru/lanksčiu programuotojo mąstymu. Pažįstu ir labai gerų matematikų, tik jiems sunkiau būtent su programavimu. Taip kad… Filosofuoti galima į valias, bet realiam gyvenime praktika nuo teorijos kartais skiriasi. ;) Kažkur internete buvau matęs labai gerą anglišką posakį, pasakysiu jį lietuviškai: programuok, kad taptum programuotoju. Čia ir yra visa esmė. Viskas, ką reikia daryti, tai tik nuolat programuoti, programuoti, programuoti… Ir laikui einant būsi geras programuotojas. Tą pačią užduotį galima išspręsti daugybe įvairių algoritmų. Kol mokaisi, bet koks algoritmas yra teisingas. Kai pakankamai į tuos dalykus įsigilini, natūraliai pradedi mąstyti lanksčiau ir kurti optimalesnius sprendimus. Tad gero programuotojo paslaptis yra PRAKTIKA.
Ačiū už padrąsinima. Aš galvoju tapti kompiuyeroste . Ir man tai tikiuosi šis padrasinimas išeis į nauda, dar kartą ačiū.