Kiek kartų gūglinai kokią programavimo kalbą rinktis? Žinau, kad daug. Žinau, kad dar daugiau kartų gūglini kokį frameworką mokytis. Praėjo keletas metų nuo pirmų mano paieškų. Aš vis dar pagūglinu ir galvoju kokią kalbą ir frameworką pasirinkti..
Nesvarbu ar tik dabar pagalvoji, kad gal reiktų mokytis programuoti. O gal jau kodini, tik galvoji kur toliau judėti. Manau, kad šis įrašas bus įdomus visiems.
Dalinuosi pastebėjimais kaip nesuklystant išsirinkti programavimo kalbą.
# Kodėl taip svarbu teisingai pasirinkti?
Teisingiau ar tikrai taip svarbu?
Mano kuklia nuomone kalbos pasirinkimas nėra kritinis pasirinkimas. Paieškų laiką ir energiją geriausia atiduoti mokymuisi. Šitai žinau, nes galvodamas apie šitą pasirinkimą pats esu iššvaistęs nemažai jėgų.
Daug svarbiau yra pasirinkti pasiryžimą ir nusiteikimą mokytis. Bet pagalvokim kiek daug gali įtakoti tie pasirinkimai. Vis dėl to, šitai būna strateginiai veiksmai, kurie įtakos tavo karjerą long term (ilguoju laikotarpiu?).
# Kas bus jei pasirinksi blogai?
Blogas pasirinkimas gali pristabdyti asmeninį progresą. Mokydamasis netinkamas technologijas gali susidurti su sunkumais ieškant darbo. Galų gale, gali tekti dirbti ne pačiose geidžiamiausiose įstaigose.
Visi šitie dalykai yra pakankamai baisūs ir vengtini. Bet tarp jų nėra tokių baubų kaip - išvis negausi darbo, nieko neišmoksi arba išmoksi blogų dalykų. Nebus ir taip, kad įgaunamų žinių nepanaudosi kitur. Žodžiu blogybės nėra tokios stiprios.
# Kas bus jei pasirinksi geriau?
Jo, geriau, o ne gerai. Čia nėra vienos teisingos tiesos, yra tik nuomonės. Todėl ir neįmanoma pasirinkti gerai. Galima tik kažkiek geriau.
Geresnis kalbos pasirinkimas gali atvesti į įdomesnį darbą. Galbūt jei dirbsi su kažkuo fancy, pateksi į hipsterišką startupą. Jei dirbsi su populiaria technologija, tikriausia lengviau gausi darbą. Arba bent jau rasi daugiau darbo skelbimų.
Aš kažkiek tikiu, kad kalbos pasirinkimas atspindi asmens charakterį. Mane dideliai žavi galimybė dirbti su labiau bendraminčiais, pasirinkusiais tą patį stack'ą.
# Pagal ką rinktis programavimo kalbą?
Ir ką dažniausias skaitydavai tuose bloguose, į kur atvesdavo paieškos? Tikriausia visi klausdavo ką norėsi programuoti?
Jei jau žaidimus, tai mokykis C (sorry jei grybauju, gal C++), jei Androido appsus tai Java, jei IOS, tai Swift'ą, jei internetus tai PHP/Ruby/Python/C#, jei esi durnas tai JavaScript'ą.
Būkim realistais, tikriausia mes visi programuosim web'ą. Tiek dėl didžiulio (tebeaugančio) jo populiarumo ir prieinamumo. Tiek pat dėl paprasčiausių praktinių sumetimų - darbų pasiūlos mūsuose, išmokimo greičio ir sudėtingumo.
Tebūnie darysim internetus. Po to bus bonusas, kai suprasim, kad su internetais galima daryti ką tik nori (HTML5 bro). Na bet šitą pasiliekam vėlesniam laikui.
# Kur ir su kuo norėsi dirbti?
Kažkaip atrodo, kad visi dalykai turi savo vietą ir paskirtį. Kalbos pasirinkimas gali ir nulems kur ir su kuo dirbsi.
Iki šiol, spėjau sisdaryti tokius stereotipus:
# Microsofto stack'as
.net, C#, ASP.NET MVC ir panašūs keiksmai reiškia korporitą. Taip, randasi kažkokie Microsofto dalykai, kur veikia ir ant Linux'o, net ant Mac'o. Tačiau iš esmės, didelės organizacijos renkasi saugią MS, kur viskuo pasirūpinta ir teikiamos kažkokios garantijos.
Nori dirbti skandinaviškam banke arba įmonėj vykdančioj valstybinius ir kitų korporitų užsakymus? Šitie dalykai gali būti naudingi.
Žiūrint frontenderio akim, panašus atitikmuo būtų Angular, o ypač antras, su TypeScriptu. Taip pat Telerik'o Kendo UI. Pats nesu bandęs Kendo, bet atrodo nuostabus reikalas daryti visokioms admin panels, appsų interfeisams ir t.t. Galima išmėginti/pasimokyti nemokamai su 30 dienų trialu.
# Senas geras PHP
Mano galva, tai labai prieinamas, universalus karys. Lengva pramokti, galima pahostinti bet kur už kelis eurus. Nepaisant grakštumo stokos, gali atlikti reikalingą darbą.
Į galvą ateina dvi PHP naudotojų grupės. Pirma - nedidelės agentūros, freelanceriai ir tie, kam reikia tilpti į sąlyginai nedidelius biudžetus.
Šiai grupei aktualūs yra CMSai: WordPress, Drupal, Prestashop, Magento ir panašūs. Jei norėsi pafreelancinti, padirbėti reklamos arba digital agentūroj, šitie daiktai labai pravers. Jei reiktų rinktis vieną, jamčiau Wordpress'ą. Tikrai universalus įrankis sugebantis pasiversti į visokiausius daiktus, ne tik į blogą.
# Ne tokia graži PHP pusė
Antra grupė irgi taupieji. Tik jie taupo darbuotojams. PHP programuotojai tiesiog pigesni, jų didesnė pasiūla, jie neretai nėra tokios aukštos prabos kaip kiti.
Žinoma, tai visiškai subjektyvi, vien asmeniniais įsitikinimais pagrįsta, mano nuomonė. Ji turi tiek pat šansų būti teisinga, kiek ir klaidinga. Aš netgi labai džiaugčiausi jei kas man papasakotų tikrą situaciją.
Didesni PHP projektai rašomi su Laravel ir Symphony. Kiek girdėjau, Laravelis labiau mėgiamas startupų, Symphony korporito. Yra tikrai žinomų didelių saitų parašytų su šiais frameworkais. Kalba ir frameworkai labai populiarūs, darbą gauti pavyks tikrai, užsakymų irgi. PHP frameworkai savo darbą atlikti sugeba, bėda ne performance.
Again, niekaip nenoriu užgauti PHP minios, net esu nusistatęs prieš stumimą ant vienos ar kitos kalbos. Tiesiog turiu jausmą, kad PHP mokėjimas nėra toks naudingas kaip kitų kalbų.
Tu turi galimybę rinktis ką mokytis ir mokaisi nuo nulio. Mano patarimas - nesusiek savo karjeros su PHP.
# Ruby ir Rails
Nepaisant to, kad dar yra ir Sinatra, man Ruby asocijuojasi tik su Ruby On Rails (ROR). Jaučiu, kad šitas frameworkas yra nuostabus. Atimdamas kažkiek kontrolės iš programuotojo, leidžia nuveikti dalykus greitai. Package'ų yra daug ir viskam (or at least that's what I'm told). Užseniuose naudoja visokie fenci šmenci startupai, Lietuvoj gal tik Vinted.
Viskas super duper su šituo dalyku. Labai jaučiu, kad tai būtų buvęs mano backendo pasirinkimas. Tačiau atbaidė 0 darbo skelbimų su ROR. Panašu, kad ROR mada aplenkė mūsų kraštą. Nieko nepadarysi tenka vaikytis kitas madas.
# Swift
Kokstai frontenderiškas Apple sugalvotas daiktas daryti native iOS appsams. Nieko daug pasakyti negaliu. Manau vertas dėmesio, ypač jei nori rašyti appsus. Darbo yra, iOS programeriai atrodo geidžiami.
Prižadama, kad bus (tikriausia) jau yra ir web serverių frameworkas. Neaišku ant kiek geras, bet tikriausia workable.
Mane asmeniškai vilioja Swiftas. Jei tik turėsiu mintį appsui, manau jamsiu šitą reikalą.
# Go (Golang)
Gūglo sugalvota kalba rašyti serveriams. Kiek žinau plika basa, labai basic kalba. Mūsuose egzotika. Tokia nusimato ir likti. Vos vienas skelbimas.
Jei jums įdomios egzotinės kalbos, kurios užsieniuose populiarėja... Esu įsitikinęs, kad ir čia yra jos fanų, bet neaišku kaip būtų ieškotis Go darbo.
# Java
Android appsai? Dideli, šiek tiek senstelėję corporate projektai? Keistos, didelės sistemos parašytos su Java, nes developeriai geriausiai žinojo Java? Daug boilerplate kodo (rašymas standartinių, pasikartojančių dalykų vien tam, kad galėtum pradėti programuoti)?
Nemanau, kad turiu daugiau Java stereotipų. Su Java prirašyta daug, darbo bus. Gal tik servisinimas esančio kodo nėra toks smagus kaip kad naujų dalykų gaminimas.
# Visokios egzotikos
Ta pati Scala, funkcinės kalbos, žinau tik Haskel ir Elm ir kitokie neištariami pavadinimai. Visokios senovinės kalbos, kurių prireikia suportinant senovines sistemas. Kažin ar jos vertos energijos. Nebent jei turėti ilgą barzdą, bet neturėti gyvenimo.
# Javascript'ai
Čia kaip kalbėti apie savo vaiką. Pats būnu Javascriptų rašytojas. Dažnai pagalvoju, kad jei ne dabartinė javascriptų situaciją, galbūt net nebūčiau patapęs programuotoju. Na arba bent jau būtų reikėję daug daugiau laiko ir kantrybės.
Javascript'as tau prižada, kad galėsi atlikti viską ką tik nori. Literaliai viską, ką galima nuveikti programuotojui. Nori websaito? No worries, gali rašyti ir frontendą, ir backendą.
Nori Androido ir iOS appso? Užteks pamodifikuoti websaito kodą. Nori desktopo appso, kuris veiktų ir ant Window'sų, ir ant Mac'o? Easy. Nori užprogramuoti robotą, pridėti visokių Arduino sensorių, pajungti Raspbery PI ir turėti IOT. Irgi easy.
Tai, kad javascriptas yra labai madingas irgi padeda. Mane asmeniškai patraukė keli dalykai:
- Naudojamas abiejuose pusėse
- Vis dar būna mada, todėl daug resursų mokytis ir daug bibliotekų
- Labai lengva pradėti ir išmėginti savo kodą
# JS tamsioji pusė
Visi tie pažadai turi savo kainą. Javascriptas nėra labai patogi kalba. Tenka būti labai atsargiam, kad nepaslystum ant jo keistenybių.
Aišku, aš nepažįstu kitų kalbų ir tai, kas dedasi su JS man atrodo savaime suprantami reikalai. Kaip tik todėl turiu planą imtis kitos kalbos. Tikių, kad daug kalbų mokėjimas leis man pastebėti gerus ir blogus dalykus jose. Taip suprasiu kaip geriau naudotis kalbomis.
Javascriptas yra pilnas savamokslių, ne visiškai suprantančių ką jie daro. Iš dalies tokių kaip aš. Žmonių pramokusių CSS, tada JavaSripto, galiausia nutarusių, kad gali rašyti ir server side kodą. Tikriausia dėl to, JS bendruomenė gauna tiek daug kritikos.
Iš kitos pusės, JS atlieka darbą greitai ir ganėtiniai pigiai. Vien tai, kad juginėdamas tarp backendo API ir frontendo aš neturiu perjungti smegenų palengvina darbą kažkiekiariopai. Ta pati sintaksė ir beveik toks pat elgesys leidžia persijunginėti natūraliai ir nejučia.
# Javascript'o Frontend'o Frameworkai
React startupams, Angular corporitui, Vue visiems netelpantiems į paminėtas grupes. Labai suplokštintas požiūris, bet manau gan taikliai parodantis situaciją.
Karpydamas dizainus galvojau apie kitą žingsnį. Būnu frontenderis, kitaip tariant, labiau mėgstu daryti user interfeisą nei terliotis su serveriais. Natūralus mano pasirinkimas buvo Angularas. Tuo metu Angularas turėjo bent 3-5 darbo skelbimus, kai Reactas 0.
Šiuo metu nežinau ko geriau mokytis. Labiausia patarčiau išmėginti visus. Vietoj to, kad žiūrėtum tutorialus ir skaitytum frameworkų palyginimus, sumesk po todo appsą su kiekvienu. Užtruksi keletą savaitgalių, už tai nauda bus neįkainojama.
# Python
Šita kalba man būna įdomi, nes atrodo labai tvarkinga. Dažniausia yra tik vienas teisingas būdas kažką užrašyti ir kažką pasiekti. Dar girdėjau, kad patyrūsio programerio kodas bent iš pažiūros mažai kuo skiriasi nuo pradedančiojo.
Paprastumas ir aiškumas šioje kalboje svarbiausia. Labai gerai pradedantiesiems.
Kalba tikrai populiari užseniuose, bet mūsuose kaži ar rado savo vietą. Man vis dar atrodo, kad mūsuose eina arba PHP arba Microsofto daiktai.
# Kodėl mano kitas projektas bus su Python?
Python'as turi Django. Standartinis MVC daiktas, kaip ir ROR, Laravel, .net MVC ir visi kiti keiksmai. Juo rašysiu kitą backendą. Be aukščiau išvardintų privalumų (paprastumas ir aiškumas) turi dar kelis.
Noriu išmokti "tikrą" (arba bent jau labiau "tikrą") programavimo kalbą. Taip labiau suprasiu kaip veikia dalykai. Su Pyhton'u galima irgi nuveikti daugybes dalykų, vienas jų Raspery programavimas. Dar nežinau, ką veiksiu su tuo daikčiuku, bet jo native kalbos žinojimas tikrai pravers.
# Kalbos pasirinkimas nėra toks jau svarbus
Iš tikro, tai nėra taip svarbu nuo ko pradėti. Kalbos pasirinkimas yra grynai asmeninis. Čia kaip su ledų skoniu. Vieniem patinka mėtiniai su šokolado gabaliukais, kiti pakęsti negali.
Tavo pasirinkimai bus stipriai įtakoti darbdavio ir klientų. Jei kažko dabar nemoki, išmoksi dirbdamas. Mano galva, svarbiausia veikti.
Čia kaip su todo appso darymu. Negalvok su kuo daryti geriausia, tiesiog padaryk su kiekvienu. Aš net galvoju, kad gal šitaip reiktų išmėginti backendo frameworkus prieš susiženijant su kažkuriuo.
# Visa tai yra nuomonės
Kodėl nėra vienos pačios geriausios programavimo kalbos? Gi tikrai galėtų protingi žmonės sugalvoti, taip būtų paprasčiau gyventi...
Taip, kartais pradedant projektą kalbos pasirinkimas yra stipriai svarstomas. Kartais net pasitaiko, kad parenkama techniniu atžvilgiu tinkamiausia kalba ir frameworkas.
Dažniausia būna kitaip. Zukeris mokėjo PHP, rašė su PHP. Angularas naudojamas ne dėl to, kad geras, bet dėl to, kad galima rasti Angularistų. Taip pat ir su PHP populiarumu mūsuose.
Mano kolegos net mažiausius saitus rašydavo su Microsofto MVC. Nes tiesiog jį mokėjo ir jiems taip patogiausia.
Nieko čia nepakeisi.
# Koks tais mano patarimas
Tikiuosi pavyko perduoti savo nuomonę apie kalbas ir frameworkus. Taip pat jau skaitei kitų nuomones. Kažkur užgimė ir tavoji.
Sukergi tas dvi nuomones su rinkos situacija ir turi labai aiškias gaires.
Svarbiausia imti ir daryti dalykus. Man patrauklesnis developeris pramokęs 3 kalbas ir bent po vieną jų frameworką, negu kitas pramokęs vieną kalbą ir vieną frameworką. Net jei vieną moka šiek tiek geriau nei tas kur moka tris.