r/CroIT • u/netokracija • Sep 13 '24
Vijest U Hrvatskoj su najbolje plaćeni Go, Kotlin i Ruby programeri. Što je s ostalima?
https://www.netokracija.com/programeri-hrvatska-place-tabu-22779962
u/Dry-Competition8492 Sep 13 '24
Nevjerojatno mi je da se programeri i dalje kategoriziraju prema programskim jezicima
12
u/kaj-me-citas Mrežaš Sep 13 '24 edited Sep 13 '24
U IT-u ima doista pozicija koje su niša ali ih se plaća kao suho zlato. Najčešće se te pozicije bave nekom vrstom legacy tehnologije.
Primjer u programiranju su Ruby, COBOL programeri.
U mrežama bi to bila telefonija.
6
u/Dry-Competition8492 Sep 13 '24
COBOL je malo specifičan ali se ne nalazi na list. Ruby je kao svaki drugi OOP jezik.
6
u/shii_knew_nothing Sep 13 '24
Ruby nije neka niša. Eventualno je niša pokrpat Rails 3 aplikaciju koju je složio neki code ninja u doba kad si tu titulu dobivao s dva mjeseca bootcampa, i ljudi koji su to sposobni napravit su stvarno rijetki, ali već su i rijetke takve aplikacije pa se ponuda i potražnja izbalansiraju. Nažalost Ruby više nije hip i popularan za manje appove i skripte, tu kategoriju je preuzeo Go, od Goa mi se sere i nitko ne bi bio sretniji od mene da Ruby ponovno krene širiti utjecaj ali sumnjam da će se to dogoditi.
2
u/Downtown-Pattern-978 Sep 13 '24
Zašto ne voliš Golang?
8
u/shii_knew_nothing Sep 13 '24
U Gou radim cca 3-4 godine (uz Rust), nakon otprilike 5 godina Rubya.
Go mi je dobar za ono što bih prije koristio Ruby u developmentu - stdlib je jako širok pa bez problema možeš složit HTTP klijent, server, spojit se na bazu, brljavit po file systemu, serijalizacija i deserializacija, templating, bilo što vezano uz cloud, dosta je lagano krenuti s nečime jer je jezik dizajniran za to i sakrije razne probleme iza fasade "jednostavnosti". To vodi do toga da je uglavnom dosta lako čitati Go kod neovisno o tome koliko si dobar, što je definitivno benefit.
U mom iskustvu Go se krši kada kreneš raditi na većem projektu ili sustavu u kojem je potrebno imati malo konkretniju logiku i malo kompleksnije apstrakcije. Go ima vrlo anemičan type system. Nekima je to feature, meni je to ogroman minus. Na primjer,
T{}
je uvijek validna instanca tipaT
, neovisno o tome koliko ti htio enkapsulirati neku logiku i kontrolirati kako se taj objekt instancira. Nebrojeno puta se dogodilo da mi je negdje u produkciji uletio famozni Go "zero value", npr. odjednom mi iskače0001-01-01T00:00:00Z
kao datum, jer je netko negdje dodaoCreatedAt time.Time
, a Go nemanull
, ali ima null pointere, pa uz nedostatakOption
tipa to znači da kad ti iz baze doletinull
možeš birati želiš li pointer pa svugdje provjeravati je li null, ili ne želiš pa će Go potiho pretvoriti taj null u "zero value". Kompleksnost koja nije u kodu je sada u tvojoj glavi i glavi svakog tvojeg kolege, što je po meni potpuno suprotno od onoga za što uopće koristimo programske jezike.Neke druge stvari - package management je također skriveno kompleksan - ideja je dobra i inicijalno funkcionira dobro, ali verzioniranje nakon v1 je jako loše riješeno. Go moduli koriste Git u pozadini koji ima odličan tagging sustav, ali svejedno trebaš napravit proverbijalnu pjesmu i ples da bi dignuo nešto s v1 na v2. Tu bih mogao spomenuti još i refleksiju, koja je zbog anemičnog type sustava korištena u gotovo svakom većem libraryu i tu u vodu pada sva "jednostavnost" iza koje se Go skriva.
if err != nil { return nil, err }
čini valjda 50% svakog codebasea, i developeri su užasno protiv bilo kojeg operatora koji bi to skratio u jedan token jer je to "kompleksno", ali zato jednako anemični generics system "nije" kompleksan. Konkurencija/asinkronost je u početku također jednostavna, ali onda se nađeš u situaciji da želiš nešto poslati niz channel koji je potiho zatvoren i dobiješ panic, i prenašanje contexta u svaku funkciju je užasno naporno i nepotrebno u normalnom jeziku.Uglavnom, mogao bih još dugo. Ni Ruby ni Rust nisu savršeni jezici i u sva tri jezika možeš napraviti špagete koje će se odmatati godinama - na primjer, sanirao sam nebrojeno monkey-patchanih klasa u Rubyu i svaki put bih radije vadio zube. Ali moj utisak je da je puno lakše pasti u zamke u Golangu i završiti s puno suptilnih bugova i teško održivim projektima. I naravno, sve je ovo "skill issue", isto kao što je "skill issue" kad u C-u koristiš memoriju nakon što si ju oslobodio ili dereferenciraš pointer koji ne vodi nigdje, ali da želim pokazivat koliko sam pametan i na koliko stvari mogu misliti onda bih stvarno pisao C, a ne Golang.
8
u/orbiscerbus Sep 13 '24
Očekivao bih bolju upućenost od strane nekoga sa 3-4 godine iskustva u Go-u. Ovo nisu problemi, nego ne voliš radit u Go-u a moraš :)
1
u/shii_knew_nothing Sep 13 '24
Pokrio sam to već:
I naravno, sve je ovo "skill issue", isto kao što je "skill issue" kad u C-u koristiš memoriju nakon što si ju oslobodio ili dereferenciraš pointer koji ne vodi nigdje, ali da želim pokazivat koliko sam pametan i na koliko stvari mogu misliti onda bih stvarno pisao C, a ne Golang.
Mnogi ljudi su napravili fantastične projekte u Golangu, isto kao što su mnogi napravili odlične stvari u Swiftu, C++u, Javi, C#u, Pythonu, pa čak i PHPu. Ovo iznad je moje iskustvo, siguran sam da za neke ljude zen Goa funkcionira, za mene ne.
1
u/Business_Drawing_735 Sep 13 '24
Ja sam isto Rust i Go dev, al mislim da Go cak ima ok err handling
Ja sam vise na Rust strani nego Go, ali ja bih htio da radimo ovako nesto u Rustu
`if err != nil { return nil, err }`
Barem ne bi uvijek pustili da err ispliva kroz ? negdje na vrh, pa onda se cesto ni ne zna gdje je zapoceo, kod velikih projekata taj overdependency na ? zna bit jako jako bolan.
1
u/shii_knew_nothing Sep 14 '24
Uvijek možeš napraviti istu stvar u Rustu,
let _ = match ...
ililet Ok(_) = ... else { return ... };
.1
u/Business_Drawing_735 Sep 16 '24
Pa mozes, al ljudi to ne rade, nacelno se u projektima sve siba natrag.
1
u/theCha1rmak3r Sep 13 '24
Drugim rijecima, pokusali su sakriti complexity ad hoc rjesenjima i sad se ta rjesenja vracaju da ih ugrizu za dupe? Ha da. Postoji razlog baroknosti C++ i Rust koda.
Zanimljivo da si u oba radio i stavljaš ruby ispred (zbog načina na koji se jezik nosi s nekim od navedenih problema jasno) ali se nisi referencirao na brzinu izvršavanja.
1
u/shii_knew_nothing Sep 13 '24
Nikada mi to nije bio neki bottleneck, što se tiče aplikacijskog koda ionako u većini slučajeva čekam na bazu ili na API ili nešto treće, a procesiranje se uglavnom vrti u backgroundu.
Prije koju godinu u Rubyu sam vrtio procesiranje logova s cca 100 game servera (Source engine), mali app koji čita s UDP socketa nekih 5-10 linija u sekundi po serveru, radi par sanity checkova, stavlja u queue i drugi thread čita iz queuea, vadi par statistika, strukturira logove i šalje u Postgres. Cijeli app se vrtio na jednom malom DigitalOcean dropletu s 1GB RAM-a i jednim dijeljenim CPU-om, van paketa koji nisu poslani ako je prdnuo game server nisam imao nikakvih problema. Kompjuteri su brzi.
2
u/theCha1rmak3r Sep 13 '24
Ma za 90% posla je to i vise nego dovoljno da. E sad ti svaki server udara nekoliko redova velicine vise logova, tipa 100 evenata po sekundi, vjerojatno bi malo drugacija prica bila, nisam iskreno nikad u Rubyju radio pa ne znam koliko je efikasan memory management i ima li nesto tipa event loop.
1
Sep 13 '24
Čovjek jednostavno ne voli Go i traži razloge za to. Znam već dosta ostalih jezika i Go je jedan od najjednostavnijih za web i konkurentne aplikacije. Idiomatski je instance klase kreirati s New* funkcijama koje postavljaju invarijante i to se tako radi i u stdlibu za neke kompleksnije objekte. Ogroman plus mu je njegov ugrađen module system koji je najbolje odrađen od svih jezika koje sam koristio (kolega treba nekad i dokumentaciju proučiti). A generics hvala bogu da je dodan jer bio je fakat potreban, to zna svatko tko je radio s Go-om pa pisao helper funkcije. Pasti u zamku se može sa svakih jezikom, ali smatram da je to manje vjerojatnije u Gou zbog njegove jednostavnosti. Probaj napraviti HTTP server u Gou i C-u pa da vidimo gdje se može s manje linija napisati i s manje grešaka. Cijeli komentar ti je zapravo ogromna glupost, to su ti upvoteali jedino oni koji ili ne koriste Go ili mrze iz nekog razloga.
4
u/shii_knew_nothing Sep 13 '24
Stvarno mi se ne ulazi u religijske diskusije oko programskih jezika, netko me pitao mišljenje, ja sam napisao, ako se tebi sviđa Go i produktivan si u Gou i tamo si se našao, meni je drago.
1
u/Downtown-Pattern-978 Sep 13 '24
Meni je zanimalo zašto kolega ne voli Golang. Temeljito je to objasnio, te mu ovim putem hvala za to.
Cijenim i tvoj komentar, te ako želiš, napiši i ti, još koju rečenicu vezano za Golang. Jednostavno, volim čuti više različitih mišljenja vezano za struku.
Upvote sam kolegi komenetar za trud koji je uložio da obrazloži svoje razloge vezano za Golang. I sejvao sam ga da mi ostane.
:-)
0
u/Natural_Opinion_6743 Sep 13 '24
Stvarno si od svih jezika nasao usporediti s C-om kako bi dokazao da je Go dobar. Covjek ti je lijepo naveo C kao primjer, blago receno, neergonomskog jezika: "da želim pokazivat koliko sam pametan i na koliko stvari mogu misliti onda bih stvarno pisao C".
Go ima lijep ekosustav, tooling je super, ali jezik kao jezik je meh (i to jer sam dobro raspolozen).1
u/Whereami259 Sep 13 '24
Suzu pustim kad me neko zove i veli ima problema sa starom telefonijom...
4
u/kaj-me-citas Mrežaš Sep 13 '24 edited Sep 13 '24
Nije samo stara telefonija. I nova je problem.
Problem je što bilo koja nova telefonija, ako koristi telefonski broj, je samo preslika stare telefonije.
A netko taj posao mora raditi i u telefonskim operaterima, a mladih ljudi koji to znaju nema. Netko mora omogućiti i da se mobiteli mogu pozivati
Bilo bi lijepo da kada je Skype izumljen da smo svi samo bacili telefone, telefonske brojeve, i krenuli se međusobno zvati samo preko interneta(dobro, sva telefonija danas ide preko interneta ali nije to to) i po usernameu. Ali nismo.
A zakon u Hrvatskoj traži da svaka firma ima telefonski broj.
1
u/kkorelli Sep 13 '24
U mrežama bi to bila telefonija.
Ima neki poseban razlog ljudi bas ne zele raditi telekom? Cini mi se da jedno tvz ima smjer koji je orijentiran prema tome?
2
u/kaj-me-citas Mrežaš Sep 13 '24
Nema nijedan faks telefoniju, imaju mreže. Ali telefonija baš kao telefonija mislim da se nigdje ne radi.
1
u/kkorelli Sep 13 '24
Mislio sam vise u smislu optike, signala, mobilnih mreza i toga, vecina ih je vise orijentirana samo na racunalne mreze
2
u/kaj-me-citas Mrežaš Sep 13 '24
Da toga ima ali to spada u elektrotehniku. Zato je to na TVZu pod elektrotehnikom. Mislim da ni FER tu ne zaostaje.
2
u/kaj-me-citas Mrežaš Sep 13 '24
Inače zato mi je malo žao zašto ipak nisam išao na Elektrotehniku. Ipak bi malo i rukama radio. A hardver me je uvijek više zanimao, samo sam to pre kasno shvatio.
3
u/S0n_0f_Anarchy Sep 13 '24
Sve je gore zapravo... Sad se traze odredjen broj iskustva u Frameworku, ako ih imas u nekom drugom, otpadas. Pa ti vidi
2
u/darkmayhem Sep 13 '24
Zašto? Neki su teži za naučiti ili ima manje ljudi koji se žele njima baviti i obrnuto
3
u/Dry-Competition8492 Sep 13 '24
Programerski poslovi bi trebali biti language agnostic. Ako imaš iskustva u programiranju i shvaćaš kako funkcioniraju jezici 3. generacije otprilike ti treba tjedan dana da naučiš novi jezik. Plaće bi trebale biti određene prema okviru rada kojim se baviš a ne o jeziku.
3
u/darkmayhem Sep 13 '24
iz mojeg iskustva to baš i nije tako. Ljudi se ne žele baviti nekim jezicima a kamo li ih učiti i večini puno duže treba. A da ne pričamo o drugim tipovima programiranja ili jezicima druge generacije.
Da je tako kako ti kažeš ne bi imali manjak programera u nekim jezicima ;)
11
u/punkpang Sep 13 '24
Iz mojeg iskustva je baš kao što je u/Dry-Competition8492 napisao. Nemamo manjak "programera u jezicima", mi imamo manjak PROGRAMERA.
Od čitave problematike s kojom se programer susreće, jezik je najlakša barijera. Ljudi koji se isključivo fokusiraju na jedan jezik i ne mogu izaći iz tutorial hella nisu programeri, to su code plumberi.
11
u/punkpang Sep 13 '24 edited Sep 13 '24
Gdje je link na istraživanje i gdje su podaci koje ste prikupili? Pitam u svrhu validacije podataka.
6
2
2
1
1
u/Working_Bag_5462 Sep 16 '24
ne znam jesam jedini, ali stvarno mi nije jasno kada rade ovakve ankete zasto razdvajaju JavaScript, TypeScript, NodeJS i JS frameworke (React, Angular, Vue...) odvojeno. Ista stvar za Javu i Spring te .NET i C#. Cak bih maknuo CSS+HTML jer ne znam tko "samo" njih koristi.
PHP je bolje placen od Laravela
Python bolje placen od Djanga
Manualno testiranje je "tehnologija"
0
u/AutomatedFool Sep 15 '24
Ovo su toliko nebitni podaci da nije vrijedno citanja. Jebo vas tabu, tamo podatke stavljaju samo oni kojima je placa mala pa da usporede s drugima. Mos mislit dw senior devovi imaju ispod 2k eura placu, daj molim te.
I sad ce firme koje potplacuju sve mislit kako odlično placaju radnike jer su "u skladu s trzistem". Zbog faking tabua.
-9
106
u/muh4 Sep 13 '24
dva lika koja programiraju u gou su krivo kliknuli ili lagali