Najveća baza IT poslova i iskustava o IT poslodavcima u Srbiji

Istaknuti poslodavci

Najnovije sa Bloga

Najave IT dešavanja, informacije o tržištu, saveti i cake.

8 najčešćih grešaka u razvoju softvera – i kako ih izbeći

Svako ko se nalazi u svetu razvoja softvera zna koliko je on promenljiv i dinamičan. Sa konstantnom potrebom kompanija i klijenata da se uvode nova unapređenja i skraćuju rokovi, vrlo lako se može desiti da zaboravite na najbolje prakse kada je development softvera u pitanju. Tada počinju da se javljaju greške. Što je postojanje problema duže, to je njegovo rešavanje teže, troškovi projekta rastu, probijaju se rokovi i angažuje znatno više resursa nego što je potrebno ili prvobitno bilo zamišljeno. Zato je važno upoznati se sa najčešćim greškama koje mogu zadesiti svakoga, i na vreme ih izbeći. Ne slušate informacije koje dolaze od korisnika Razvijanje softvera se na samom kraju svodi na potrebe krajnjih korisnika. Bilo da se on razvija za internu upotrebu ili određenog klijenta, svakako ćete se naći u situaciji kada je potrebno dodati određenu novu funkciju. Na samom početku projekta važno je iskoristiti ili barem saslušati sve informacije koje stižu od korisnika jer vas ignorisanje na kraju može skupo koštati, pošto nova funkcija nije razvijena na način na koji rešava određeni problem i lako se može desiti da morate ponovo da je redizajnirate. Razvoj softvera trebalo bi da bude oslonjen na podatke i inpute korisnika tokom faze planiranja. Ovo može podrazumevati i uključivanje ili saradnju sa drugim timovima. Na kraju dana, svaka povratna informacija koja stiže od korisnika je dragocena jer se stara da finalni proizvod bude relevantan. Loša procena vremena Da li će projekat trajati 5 sati ili 500? Slobodna procena, optimizam i ne razmišljanje o svim koracima koje je potrebno preduzeti lako mogu da dovedu do loše procene rokova. A kada se oni premaše, to izaziva frustraciju tima, menadžera i klijenta. Ponekada se može stvoriti disbalans između broja zahteva i dostupnih resursa, što može dodatno pojačati pritisak da se isporuči proizvod, čak i kada on nije savršen. Timovi bi trebalo da zajedno prođu kroz sve procese koje je potrebno sprovesti, kao i vreme potrebno da se oni realizuju – što detaljnije. Na ovaj način kreiraćete realnu procenu vremena potrebnog za izvršavanje svakog taska, i na kraju, kompletnog projekta. Oslanjanje na privremena rešenja Ovo se dešava češće nego što mnogi misle. Primena „brzog rešenja“ zahteva manje vremena i kodiranja. Na ovaj način se kupuje vreme do momenta kada neko može da se ozbiljno posveti problemu. Međutim, problem nastaje kada se task odlaže, i na kraju zaboravlja. Tehhnološki dug koji na ovaj način nastaje vremenom se samo povećava. Kada developer izbegava da odmah reši nastali problme, ili u dogledno vreme, to može dovesti do problema koji je mnogo teže rešiti u kasnijim fazama projekta. Zaštita od potencijalnih ranjivosti Developeri moraju da budu detaljno upoznati sa standardima bezbednosti prilikom kodiranja kako bi bili zaštićeni od potencijalnih ranjivosti. Greške mogu dovesti do kritičnih problema i zbog toga bezbednost i zaštita od uobičajenih sajber pretnji moraju biti prioritet prilikom kodiranja. Pored toga, developeri moraju da se postaraju da su apdejtovani na najnovije pečeve svih alata koje koriste. Mnogi developeri odgovorni su za svoje radne sredine i vrlo često ne obraćaju pažnju na regularne softverske apdejte. Ne delite znanje Timovi bi trebalo da budu ohrabreni da dele svoje poslovno znanje, stručnost i iskustvo između sebe. Prečesto se dešava da se fokus prebacuje na performanse pojedinca, umesto na tim kao celinu. Neadekvatno upoznavanje i treniranje novih zaposlenih može znatno da uspori kompletan ciklus razvoja. Rezultat ovog ciklusa je na kraju dana timski, a finalni proizvod neće imati koristi od znanja ako se ono drži u svojevrsnom vakumu pojedinca. Ne pratite najnovije tehnologije Razvoj softvera je bojno polje na kom se prilike menjaju iz časa u čas. Pravi stručnjaci uvek gledaju da ih dočekaju spremni adaptirajući se na njih. Pojedinačni developeri, timovi i menadžeri moraju da budu svesni aktuelnih trendova, velikih promena u industriji i praksi koje polako postaju zastarele. Na svu sreću, postoje mnogi načini vam mogu pomoći da ne ispadnete iz trke: Praćenje online kurseva Sertifikacije Praćenje vesti ili aktuelnih knjiga Slušanje podcasta Pridruživanje stručnim online zajednicama Ukoliko ne pratite šta se oko vas dešava, može se desiti da radite na proizvodu koji više nije relevantan krajnjem korisniku. Najvažnija stvar koju možete da proizvedete jeste proizvod koji rešava problem i korisniku pruža dodatnu vrednost. Ne procenjujete greške Greške su neizbežan deo kodiranja. Iako je mnogim developerima prvi poriv da poprave problem i nastave dalje, izbegavanjem procene greške – kako se desila i zašto – gube dragocenu priliku da nešto nauče. Procenjivanjem greške, developer i tim mogu da izvuku važne lekcije koje će im pomoći da se one više nikada ne ponove u budućnosti. U pitanju nije određivanje krivca, već važna lekcija koja će svima biti od koristi i omogućiti da u budućnosti budu produktivniji jer će znati kako da tu grešku više ne ponove i uspore razvoj projekta. Ograničeno proveravanje koda Postoje različiti pristupi kad aje provera koda u pitanju. Jedan pristup jeste da, ako proizvod radi, to je dovoljno. Drugi proces se odnosi na proces njegove provere. Iskusni profesionalci znaju i razumeju vrednost i potrebu da se prilikom rada primenjuju najbolje prakse i kvalitet koda. Ove grupe shvataju da je čistoća koda direktno povezana sa produktivnošću i efikasnošću. Zbog toga, standardizacija koda i njegovo proveravanje za njih postaju bitan zadatak. Proveravanje koda od strane kolega i programiranje u paru su neke od tehnika koje se koriste za proveru koda. Developerima može biti teško da sami pregledaju sopstveni kod, jer su ga oni i napisali i samim tim im fali objektivnost i mogu im promaći određeni propusti.

avatar
Uroš Jelić

03.10.2023

Unity - kako je zajedništvo (donekle) pobedilo korporativnu pohlepu

12. Septembar 2023. godine ostaće većini (dotadašnjih) korisnika Unity Game Engine-a kao jedan od najgorih dana od kada koriste taj alat. Tog dana je Unity Technologies, kompanija koja stoji iza pomenutog engine-a, odlučila da naprasno objavi najkontroverznije ažuriranje svog cenovnika koje je ikad viđeno u IT industriji. Novi cenovnik je podrazumevao da ukoliko vaša igra pređe 200 hiljada instalacija (znači ne kupovina, nego instalacija) i 200 hiljada dolara zarade, a koristie Unity Personal (besplatnu verziju), morali biste, na svaku novu instalaciju Unity-ju da dajete 20 centi. Za plaćene verzije Unity-ja (Unity Pro i Enterprise), granica je pomerena na milion instalacija i milion dolara zarade i oni bi plaćali manju naknadu po instalaciji. Činjenica jeste da ovakvo ažuriranje cenovnika ne bi zahvatilo čak 90% korisnika samog engine-a. Prva stvar oko koje se zajednica pobunila bila je činjenica da bi se ta naknada po instalaciji naplaćivala retroaktivno, iako, u uslovima korišćenja koje su korisnici prihvatili kada su instalirali datu verziju, to nigde nije pisalo. Druga stvar koja je bila apsurdna je činjenica da ni ljudi iz Unity-ja, koji su doneli ovu odluku, nisu ni znali na koji način će pratiti instalacije. Takođe, neki jutjuberi su radili predikcije za svoje i tuđe igre, pa su ustanovili da bi neke kompanije koje bi morale da poštuju takav model naplate mogle da odu u bankrot. Interna nezadovoljstva i protivljenje zaposlenih Ono što je najviše pogodilo zajednicu, pored činjenice da kompanija može naprasno da promeni svoje uslove korišćenja retroaktivno, jeste činjenica da je apsolutna većina zaposlenih bila strogo protiv ovakvog modela, kao i da je većina studija i nezavisnih kreatora kojima je ovo predočeno dan ranije, bilo takođe protiv ovoga, ali je viši menadžment ipak, po svaku cenu, želeo da ovakav plan ugleda svetlost dana. O Unity-jevom menadžmentu ne treba trošiti puno reči, ali je bitno reći da je trenutni izvršni direktor Unity-ja “gospodin” koji je takođe bio izvršni direktor EA Games-a, i koji je u jednom svom obraćanju izjavio kako bi bilo dobro da ukoliko ljudi provedu šest sati igrajući Battlefield, poznatu pucačinu, da bi trebalo naplaćivati jedan dolar za dodatnu municiju. Već u prvih nekoliko dana, određeni broj razvojnih studija (među kojima su i kreatori popularne igre Among Us) su saopštili Unity-ju da će u potpunosti napustiti njihov ekosistem ukoliko ne revidiraju ili promene tako kontroverznu odluku. Usledio je, zatim, odgovor najprofitabilnijih studija koji su koristili Unity Ads kao provajdera za prikaz reklama na mobilnim igrama. Isključili su prikazivanje reklama koje dolaze od Unity-ja. Unity je verovatno u tom trenutku shvatio da bi trebalo reagovati, pa je kompanija na društvenoj mreži X saopštila da “čuje šta zajednica misli i da će narednih dana predstaviti revidirani model plaćanja”. Nove opcije plaćanja i koncesije Nakon nedelju dana čekanja, zajednica je napokon dobila ažurirani cenovnik. Najbitnija stvar je da se uslovi korišćenja neće primenjivati retroaktivno, već će uslovi biti vezani za verziju Unity-ja koju koristite. U njemu i dalje postoji Installation fee, ali samo za pro i enterprise korisnike, i ti korisnici će sami prijavljivati koliko instalacija su imali tokom tog meseca kao i zaradu koju su ostvarili. Pored toga, dodata je i opcija da procenat od zarade (2.5%) od igre date Unity-ju. I koja god da je od dve cifre manja (ukupan installation fee ili 2.5% od zarade) tu cifru plaćate Unity-ju. Takođe, developeri će takođe moći da uklone čuveni “made with Unity” početni ekran, u zavisnosti od verzija engine-a koji koriste. Šta nam ova epizoda govori o moći zajednice Kao dugogodišnji profesionalni korisnik ovog sjajnog engine-a moram završiti ovaj tekst sa nekim svojim mišljenjem. Jasno mi je da Unity Technologies kao kompanija uopšte nije profitabilna i da posluje sa stotinama miliona dolara u gubicima svaki kvartal, ali postoje neke granice u poslovanju. Unity-ju će biti potrebne godine da povrati svoju reputaciju koju su u veoma kratom roku izgubili. Takođe, i dalje sam čvrstog stava da je toj kompaniji potrebna igra koja će direktno izaći iz njihove “kuhinje” jer je to jedini pravi način da se iskustvo game developera u engine-u poboljša, i kako bi se otkrilo kroz koje sve probleme developeri prolaze prilikom razvoja igara u Unity-ju. Prošle godine je ekipa iz Unity-ja baš i krenula u takav poduhvat, i cela zajednica je bila oduševljena time. Ali naravno, viši menadžment je posle nekoliko meseci obustavio projekat, rastavio ceo tim i svi su dobili otkaze.

Kako da učite Data Science? (2) Formalno obrazovanje ili ne?

Evo nas na vreme za moje drugo izdanje Data Science Letters. Nastavljamo sa diskusijom o tome kako ući u Data Science i postati profesionalac u njoj, koje su pretpostavke, kakav background je poželjan, šta i koliko treba da učimo, na koji način da razmišljamo i kako sebe da dodatno motivišemo. U ovom izdanju, kao što sam obećao, hoću da se pozabavim pitanjem koje danas postaje sve zanimljivije i zanimljivije: da li nam je potrebno formalno obrazovanje i koliki je značaj naših akademskih titula za rad u Data Science? Kao što sam naglasio već u prvom izdanju ovog newsletter-a: mnogobrojni su i čudni putevi gospodnji, a vi čitate o samo jednom od njih. Autorovo lično iskustvo je neraskidivo od onoga što on piše i načina na koji razmišlja, tako da dok čitate ovo molim vas držite na umu da ja mogu da vam dam samo deo mogućeg iskustva, samo jednu perspektivu - onu koju sam sam stvorio i iz koje vidim stvari. Oslanjam se na to da posle decenija kontinuiteta u poslu koji je evoulirao iz Statistics, Quantitative Analytics, Data Mining u Big Data, Data Science, i Machine Learning možda mogu da pokušam da izvedem neke generalizacije, ali obećavam vam da ću to činiti veoma oprezno. Morate da čitate šta piše više ljudi, da razgovarate sa više ljudi, i po mogućstvu da probate da radite sa mnogima kako biste doneli zaključke za sebe. Hajde ovako: hoćete da uđete u Data Science jednog dana ozbiljno, niste naučnik, niste inženjer, imate interesovanja za analizu paterna različitih podataka, pomalo ste enciklopedista, hoćete i volite da programirate, ne bežite od matematike, fasciniraju vas vizuelizacije podataka i voleli biste da naučite kako se prave - pa, vidim vas narednih šest meseci na Google Data Analytics Professional Certificate programu na Coursera za svih $39 mesečno. U Google neće imati problem da razmatraju vašu aplikaciju za posao ako im umesto fakultetske diplome donesete ovakav sertifikat, ona čak ima i ustanovljen ekvivalent vrednosti u kreditima akademskih programa! Ovaj sertifikovani program je razvijen za uvodni nivo analitike podataka i oslanja se (naravno) na programski jezik R. Šta tek reći za poznatu Data Science Specialization u programskom jeziku R koju Johns Hopkins University već godinama nudi na Coursera: to ko prođe, i stvarno zna sve se što se tamo razmatra, ozbiljan je igrač na više zamislivih pozicija u Data Science. Ako mislite da sam sada ciničan i da kao doktor nauka gajim neku distancu prema obrazovanju putem kurseva: već dve godine, za polaznike iz Srbije i inostranstva, držim Data Science Sessions, sada već seriju šestomesečnih kurseva za Data Science u programskom jeziku R, i garantujem vam da ako to možete da prođete, naučite i izvežbate sve što je tim kursom pokriveno, ne vidim kako ne biste bili spremni za ma koju entry-level poziciju na tržištu (kurs je i planiran tako da zadovolji kriterijume koji se najčešće traže na entry-level pozicijama, dok pokriva i nešto više zanata od tog nivoa). Ok: jel' može to bez diplome neke STEM oblasti - može. Da vidimo zašto kursevi i programi rade i do koje mere. Zašto kursevi i obrazovni programi van akademije rade? Razlog je pre svega u tome što rad u Data Science zahteva praktičara - čoveka koji je u stanju da stvari koje uči i zna primenjuje na neposredne probleme, da izručuje rešenja, po čemu je disciplina uporediva (doslovce ovo mislim) sa zanatima i primenjenim umetnostima. Drugim rečima - i o ovome ćemo imati posebno izdanje newsletter-a uskoro - da li čovek mora da razume precizno, duboko i detaljno kako rade npr. optimizacioni algoritmi da bi mogao da oceni neki ML model - ne, ne mora. Pogotovo sa savremenim sredstvima za razvoj modela u Data Science, njihovu evaluaciju i serviranje u produkciona okruženja, apstrakcija od detalja takvih stvari je toliko visoka da ja mislim da neko treba da bude svestan toga (1) šta su optimizacioni algoritmi, (2) u načelu šta će pokušati da urade tj. koji problem da reše, (3) kako se oni odnose prema modelu koji se razmatra, i (4) na osnovu čega možemo da znamo da li je takav algoritam - ključan u svakom statističkom učenju - problem rešio uspešno na nekim podacima, ili nije. Više od toga treba da zna osoba koja će razvijati nove matematičke modele i suočiti sa problemom koji optimizacioni algoritam te modele može da oceni na podacima i kako ga implementirati, i to je mahom research koji se odvija u okvirima akademije ili sve češće u kompanijama kojima je research od ključnog značaja za proizvode (Google, Facebook i ekipa, rekao bih, odavno po tom pitanju šiju istraživanja na univerzitetima u Data Science i ML).  Ako hoćete to da radite (što sam ja radio do neke 2013 godine) - prvo, to i nije Data Science (može da se zove tako, ako hoćete, ali ona je primenjena, ne fundamentalna oblast) već doslovce fundamentalno istraživanje u matematici, nekoj empirijskoj nauci, i inženjeringu, drugo - za te stvari, lepo faks, pa Phd, godine laboratorijskog rada, i onda. Data Scientist čiji je posao neposredna primena modela statističkog učenja na određene podatke u svrhu rešavanja (nadamo se) dobro definisanog poslovnog problema uopšte ne mora da ima taj nivo obrazovanja da bi svoj posao radio dobro - pod uslovom da se matematike nije baš bojao toliko da nije nikad ni razumeo šta su optimizacije, čemu služe, okvirno kako rade, i ponovo, najvažnije: kako da znamo da li su nam problem rešile, ili nisu, u nekom konkretnom slučaju. Izabrao sam pitanje optimizacije samo kao primer; ima tu pregršt matematičkih i tehničkih detalja preko kojih je moguće apstrahovati, ponovo ukoliko se razume, odgovorno, čemu služe, šta rade, i kako njima bezbedno rukovati. Zbog ove razlike, kursevi za one koji hoće da uče i zagrizu rade. Gde su granice, koliki nivo znanja je neophodan? Primer. Da li bih zaposlio nekoga kao Data Scientist a da ne zna da objasni kako Gradient Boosting optimizuje seriju drveta odlučivanja i objasni mi algoritam do detalja, bih, zaposlio bih ga, ako zna da mi objasni: sve indikatore performanse (evaluaciju) tog modela (komplentu ROC analizu i izvedene metrike), da uradi njegovu kros-validaciju i tjunuje parametre u selekciji modela. Da li bih zaposlio nekoga u Data Science ko ne razume ili ne zna u ggplot2 ili matplotlib da mi nacrta površinu greške prostog linearnog regresionog modela za određene podatke i pokaže mi prstom tačku koju bi optimizacija trebalo da otkrije, ili ne zna da mi objasni šta je MLE za tek Binomijalni Logistički Regresioni model - ne, ne bih ga zaposlio. Rezon je: osobi koja zna ono prvo, to znanje neće mnogo pomoći u rešavanju neposrednih problema i učestvovanju u razvoju proizvoda ili usluga na osnovu njih (iako će ona sigurno biti sigurnija, samopouzdanija u svom radu - što i te kako vrednujem), dok osoba koja ne zna ono drugo ima sve šanse da slupa matematički model koji trenira u neki jarak (poznato još i kao: lokalni minimum :) i vrati neoptimalne rezultate, što je naravno pogubno po rešavanje ma kog problema, fundamentalnog ili primenjenog svejedno. Moji kursevi, na primer upravo Data Science Sessions u R (a uskoro će biti ponuđen i u Python), traže tačno ovu ravnotežu koju sam opisao. Ponovo: svaki stručnjak će verovatno imati svoje nijanse u pro et contra različitih pristupa, upoznao sam ljudi od onih koji misle da matematičko-tehnički detalji uopšte nisu bitni (i ti ljudi izvesno nisu u pravu) do onih koji ne bi zapošljavali u Data Science bez doktorata ni u ludilu (i niko od njih nije uspeo da mi odgovori na pitanje neposredne primene znanja takve dubine u realnim, svakodnevnim izazovima primene na tržištu). Suštinska je razlika, po mom mišljenju, da li ljude školujemo za primenu, ili za razvoj i istraživanje; budimo zato svesni da je Data Science na tržištu primena, veoma retko razvoj i istraživanje. Moje stav u tome je: čovek za Data Science mora da razume principe, i to savršeno, ali ne mora da poznaje duboke detalje svakog algoritma koji će koristiti (jer ako poznaje opšte principe dobro - znaće i da odgovorno koristi ma koji model sa kojim bude radio). Da li za te principe čovek mora da završi studije i stekne akademske titule: moj odgovor je ne, njih je moguće koncizno i čak temeljno naučiti i u okviru kursa ili nekog dužeg obrazovnog programa. Ali šta će nam onda... Akademija Ima to svoje: (1) Na kursevima je teško steći domensku ekspertizu: uzmite dva odlična polaznika nekog temeljnog Data Science kursa, i budite sigurni da u poslovima procene rizika bolje prolazi onaj koji je studirao ekonomiju ili psihologiju od onog koji nije; empirijska intucija za fenomene koji se modeliraju u primeni se bolje i detaljnije razvija tokom višegodišnjih akademskih studija. (2) Višegodišnje bavljenje nekom solidno matematizovanom, empirijskom naukom, što i dalje smatram najboljim načinom da se karijera nastavi u Data Science, je jednostavno nezamenljivo u tom smislu reči što vas vodi u najveću dubinu problematike matematičkog modeliranja u nekoj oblasti. Primer: neke 2012/13 valjda, pre nego što se odgovarajuća funkcija pojavila u jednom i sad verovatno u više R paketa, morao sam da ispišem na ruke kod za Voungov test kako bih poredio neugnježdene deskriptivne modele odlučivanja; dani su mi bili potrebni da se probijem kroz njegov naučni rad i budem siguran da nisam pogrešio negde u implementaciji. Drugi primer: ko nije video kanjone sa ravnim platoima u funkcijama verodostojnosti klase modela odlučivanja koju sam pomenuo, ne zna šta je pakao optimizacije, potpisujem. To iskustvo je zaista teško steći van konteksta fundamentalnog istraživanja. (3) Akademske titule: Za to me je najmanje briga, odmah da kažem, ali dozvolite mi da vam prepričam staru anegdotu sa američkog univerziteta na kome sam završio prve dve godine mojih doktorskih studija. Rikruteri iz velikih kompanija, sa berze i sl, znaju par puta godišnje da navrate i organizuju predavanja postdiplomcima gde im objašnjavaju kako stvari rade u poslu, kakav je job market, šta se traži, kako to sve izgleda i sl. To je za doktorante, onako ošamućene od fundamentalnih istraživanja, ispita, i prosečnih pet do šest sati sna pa tako mesecima, prilično značajno. Nekom prilikom, čovek sa berze drži predavanje pred studentima (ako me sećanje služi) filozofije i antropologije. Završi se to, prilaze filozofi i antropolozi sa pitanjem čoveče dragi kakve blage veze mi imamo sa procenom rizika investicije i predikcijom vremenske serije fjučursa tih i tih, čovek odgovara: vidite, ko god da uđe u našu firmu, mi znamo koliko vremena treba da ga obrazujemo. Ne tražim ja ovde to, nego me interesuju ljudi koji su u stanju da prežive pet godina pakla doktorskih studija. To ko može - nema ničega što ga mi posle ne možemo naučiti da radi. Tako da, da, ako mi neko donose solidan Phd i ide u Data Science, imaću poprilično više poverenja da uđem u saradnju sa njim nego sa nekim drugim. Ali to uopšte ne znači, kao što sam potencirao u ovom tekstu, da su akademske titule i formalno obrazovanje presudni. Presudno je kakav je čovek: ispite na svakom fakultetu, uključujući i doktorske studije, moguće je izlemati sa nekim ocenama, izvući neku tezu ovako ili onako, i poneti titulu. Šta je u umu, šta u srcu, a šta u prstima kad krene da se kodira, e to je pravo pitanje. Sve ostalo su znaci koji mogu i ne moraju da budu ključni. Manje me interesuje šta čovek zna (o čemu čovek govori), više me interesuje šta čovek može da uradi, a najmanje koja mu se skraćenica piše ispred imena. Ko hoće u Data Science sprema se na rad u oblasti koja ima direktne, merljive posledice: pomeriti projekat iz tačke A u tačku B, na vidljiv i objašnjiv način, je ono što se traži. Ko ima karakter za takav rad, taj ima i preduslove za ovu oblast.

HelloWorld

28.09.2023

Kako učiti Data Science?

Za početak, o tome zašto je bitno da (a) učite Data Science rešavajući neki problem koji ste rešeni da rešite, u nekoj oblasti koja raspaljuje vašu radoznalost i znači vam, te (b) da učite Data Science funkcionalno, odn. da što pre vaše učenje pretočite u praksu koja ne samo da je korisna i vama i drugima već vas potencijalno i plaća za to da kroz rad učite; o potrebi da neprestano stvarate prilike za tako nešto i ni slučajno ne propuštate prilike nastale pukom srećom ili sticajem okolnosti. Iz prve ruke Konačno, sa skoro pedeset godina, posle programiranja čitav život počevši od moje desete godine (da, da - 8 bita i 64 Kb RAM-a 80-ih), silnih škola i rada u fundamentalnim istraživanjima koji sam započeo još 1993 a koje je potrajalo dvadesetak godina, te više od dvadeset godina karijere u onome što se nekada zvalo Quantitative Analytics, pa Data Mining, i konačno Data Science i/ili Machine Learning - rešio sam da je vreme da počnem da delim iskustvo pređenog puta. Pišem u oblasti u kojoj sam prošao sve od rada u statističkom softveru poput SPSS ili Statistica 90-ih, MATLAB, zatim R i konačno Python, u prethodnih tridesetak godina; od 64Kb u kojima treba da naučite da programirate do iskustva rada u Big Data (i to baš, baš Big Data u mom konkretnom slučaju); od statističke analize bihejvioralnih eksperimenata, anketnih istraživanja, skala stavova u oblastima istraživanja javnog mnjenja, međunarodnim odnosima, javnom zdravstvu, bankarskom sektoru, gemblingu i FMCG, do skrejpovanja i razvoja Information Retrieval sistema from scratch, mentorisanja Data Science studenata američkog edu-startapa, analize paterna ponašanja editora Wikidata koja je graf sa kojih 90+ miliona čvorova, te razvoja ML za predikciju popularnosti sadržaja na socijalnim medijima. Iskustvo je neverovatno a investicija dan danas lepo vraća, najviše time što mi omogućava da živim radeći poslove u kojima uživam, tako da mi je granica između radnog vremena, slobodnog vremena i hobija praktično izbrisana. A to je veoma važna stvar u vašem životu, stvar koju treba da se trudite da postignete: da uživate, a ne da mrzite ceo svet ponedeljkom ujutru smatrajući da je 8h radnog vremena nešto što je prosto ujedeno od vašeg života da bi finansiralo preostalih 16h. Pare nisu toga vredne, verujte mi. Počeću sa postom naslovljenim: Kako učiti Data Science? Biće više nastavaka: praktično svaku od tema i motivacija kojih se dotaknem, elaboriraću u nekom kasnijem postu. Cilj mi je da pokušam pomognem onima koji su ili tek zainteresovani za Data Science kao moguć izbor za karijeru u istraživanju ili primeni, onima koji su tek počeli da uče, onima koji su naučili i traže posao, pa i onima koji su uveliko u Data Science - jer oni su odavno već shvatili da to znači učiti doslovce svaki dan. Izbor je dobar Data Science je dobar karijerni izbor, ako vas zanima, jer je danas svugde. Doslovce: kako je IT ušao u svaku moguću i nemoguću industriju i granu, tako je danas kao suza čista istina da u data intenzivnim okruženjima (engl. data intensive environments) - čitaj: gde god ima dosta podataka - za Data Scientista ima posla. A gde danas nema dosta podataka - pa, samo u poslu onih koji još nisu shvatili da bez stavljanja informacija u pogon u poslovnom okruženju više teško da ima pravog uspeha... Nema šanse da neko pravi pogrešan izbor životnog poziva ako se opredeljuje za Data Science: gap na tržištu rada je ogroman, potražnja za njima je velika, raste konstantno, i tek će da raste, jer su deo transformacije kompletne globalne ekonomije kroz ono što danas ljudi zovu Četvrtom industrijskom revolucijom. Često se pogrešno pretpostavlja da je uloga Data Science da automatizuje sve i svačiji posao i prepusti funkcionisanje sveta i privrede autonomnim algoritmima koji iz podataka uče i donose optimalne odluke. To jeste deo posla, ali (a) ne na svakoj Data Science poziciji, (b) ima i te kako posla koji ne podrazumeva primenu čitavog takvog ciklusa, u kome se od nas traži da (c) pomoću podataka i mašinskog učenja donosimo neke sasvim ljudske zaključke i preporuke, da (d) ponekad tek dovoljno lukavo vizuelizujemo neke podatke da bih ih neko drugi razumeo ili mogao da ih komunicira nekom trećem, te (e) često se naš posao sastoji u tome da uopšte iz nekih početnih, sirovih podataka tek dođemo do podataka koji ljudima nešto počinju da znače i na osnovu kojih će se tek kasnije razmatrati kuda dalje. Ali tog posla ima, i ima ga u toliko različitih oblasti i industrija, da je nesumnjiva jedna stvar: teško je da ako naučite Data Science nemate posla, i teško je da uz toliki raspon naše discpline kroz različita tržišta ne nađete neku nišu u kojoj će vam biti interesantno i izazovno da radite. Kako onda izgleda početak u Data Science? U kom trenutku, kako neko počne da stiče motivaciju, znanja i veštine, i počne da postaje Data Scientist? Moj odgovor je: ne znam. Jedino što po tom pitanju mogu da učinim za druge je da podelim moje lično iskustvo, dovedem nas danas do tek par izvesnih zaključaka (na kraju teksta), i podsetim da ima N (gde je N neki veliki ceo broj) izbora, iskustava, i ličnih priča drugačijih od moje kroz koje su ljudi ulazili i ulaze u ovu disciplinu. Evo kako je sve počelo za mene, ukratko i bez ulaženja u ličnu biografiju, ljubavi, muzički i filmski ukus ili sklonosti ka funkcionalnom ili objektno orijentisanom programiranju. Prva stvar, pretpostavke: počeo sam da programiram sa deset (brojem: 10) godina, prvo učeći BASIC iz baš ma kog časopisa o mikrokompjuterima koji je 80-ih mogao da mi dopadne šaka i pišući kod na svesci "na kockice" (tako je zovu, iako je papir, koliko ja znam, "na kvadratiće", ali Ok), i od neke 1986 na 8-bitnom Commodore 64 koji sam uspeo da iskukam na poklon od roditelja u ekonomski ne tako slatka vremena po građane ondašnje Jugoslavije. Koliko sam bio lud i predan u tome: pa, imao sam nekih šesnest godina kada sam u jednom ex-Yu časopisu o računarima objavio prvu recenziju kompajlera za programski jezik PASCAL... Interesovanje nikada nije prestalo: preko prijatelja iz Istraživačke stanice Petnica sam došao do fotokopija poglavlja čuvene "Algorithms + Data Structures = Programs" Niklaus Wirtha, pratio razvoje koliko sam mogao, i maštao da jednog dana razvijam ekspertske sisteme u (danas prilično zaboravljenom) programskom jeziku PROLOG za logičko programiranje. Šta drugo programere uopšte zanima do razvoj AI? Studije: ranih 90-ih, ako hoćeš da ideš u karijeru programiranja a živiš u Beogradu, to je bilo ili ETF, ili Matematika. Veliki je broj bio samoukih kao ja, ali opet - neka ozbiljna škola ti treba. Treba ne samo znati da programiraš, nego i razumeti matematička sredstva koja treba da pretočiš u algoritme, i onda u kod. Moj izbor (nerado; objasniću) je bila matematika; međutim, posle I semestra na Matematičkom je meni postalo jasno da jednostavno nisam osoba koja će svaki dan da vežba analizu i linearnu algebru tri, četiri sata dnevno, jer propustiš li jedne, dve vežbe za redom eto tebi problema kako da uopšte stigneš grupu sa kojom radiš do kolokvijuma ili ispita. A moja interesovanja su bila uska, i svakako vezana ne za baš sve u matematici: ono što nekoga zainteresovanog za računarstvo najviše interesuje, matematička logika, teorija formalnih jezika, teorija dokaza, izračunljivosti, meta-matematika. Iskreno nisam bio lud za verovatnoćom, statistikom i numeričkom analizom - oblastima za koje bi se reklo da zapravo predstavljaju same fundamente za Data Science. Ne - ja sam teoriju verovatnoće zavoleo kasnije. Sve u svemu, sa tih 18, 19 godina pala je nagla odluka da se studira nešto drugo, i to nešto sasvim drugo... posle prethodno položenih prijemnih ispita na matematici i fizici (izbor je bio matematika), položio sam prijemne ispite za Filozofski (filozofiju i psihologiju) i presrećan što sam sa tankim uspehom iz gimnazije uspeo u žešćoj konkurenciji da upišem psihologiju odlučio da nju i studiram. Nema više programiranja, nema više analiza i diferencijalnih jednačina, ide neki novi svet, neka nova interesovanja... Sve dok me na prvoj godini psihologije nisu sačekali ispiti iz statistike, fiziologije centralnog nervnog sistema, te oblasti kao što su psihofizika i kognitivna obrada informacija... Kad imate iza sebe prilično solidnu matematiku još iz gimnazije i godine programiranja u kojima svakako barate brojevima svaki dan, vidite šta je nastava psihologije na prvoj godini, okrenete se oko sebe i dođe vam skoro da se nasmejete bledim licima većine vaših kolega koji mahom dolaze sa bekgroundom društvenih nauka i humanističkih discplina, načitani Frojda i Junga (koje sam poprilično pročitao i sam i osećam samo najveće poštovanje za njihov rad i dan danas), kako u neverici slušaju o linearnoj regresiji, tome šta je histogram, a šta psihofizička funkcija za koju je Fehner verovao da je logaritamska a Stivens da je stepena - brzo shvatite da se nalazite na mestu koje je potencijalno veoma interesantno za vas. Tako je i bilo: nisam završio ni prvu godinu studija a već sam izveo moju prvu eksperimentalnu studiju u kognitivnoj psihologiji. Druga godina studija, prvi nastup na naučnoj konferenciji. Do kraja studija sam ih imao ne znam koliko i objavljena četiri naučna rada do neke dvadeset i četvrte ili dvadeset i pete godine: svaki je, po prirodi oblasti u kojoj sam istraživao, uključivao statističke modele podataka, najčešće analize varijanse i multipla linearne regresije. Interesovanja su mi se brzo proširila na ono što su osnove oblasti Unsupervised Learning danas (PCA, i MDS - nešto što se koristilo za redukciju dimenzionalnosti pre t-SNE i UMAP), jer su mi znanja u toj oblasti bila potrebna da bih istraživao u oblasti semantičkog pamćenja i distribucione - ili statističke, ako hoćete - semantike, koja me je veoma interesovala. Najbolje od svega je bilo otkriće da je mejnstrim teorija kognitivnih nauka - koje predstavljaju osnovu za istraživanja u oblasti veštačke inteligencije, a pored kognitivne psihologije obuhvataju mnoge druge naučne oblasti od neurobiologije do inženjeringa - nešto što se zove Computational Theory of Mind. Drugim rečima: psiholozi i filozofi koji su se bavili problemima saznanja i pitanjem inteligencije nisu pretpostavljali ništa drugo do ono što su u XX veku takođe pretpostavili matematičari, logičari i inženjeri, naime, da objašnjenje inteligencije leži u razumevanju ljudskog uma kao kompjutacione mašinerije. Bio sam, i ostao fasciniran time (iako danas ne verujem da je kompjutaciona teorija uma u stanju da objasni ljudsku inteligenciju u potpunosti). Oblast je bila prepuna matematičkih modela raznih kognitivnih funkcija: prepoznavanja, pamćenja, razumevanja značenja reči, donošenja odluka... I konačno, naučni rad je i te kako zahtevao dobro poznavanje verovatnoće i statistike da bi se analizirali i modelirali eksperimentalni podaci, a da biste matematičke modele mogli da primenite na podatke nije bilo dovoljno imati papir i olovku, dabome. Godine rada u SPSS, zatim STATISTICA, do momenta kada su me doktorske studije konačno dovele do MATLAB (kroz jedan od najboljih i najtežih kurseva koje sam ikada uzimao u životu, Simulation and Data Analysis na njujorškom NYU). Usput sam "pokupio" bejzijansku verovatnoću i statistiku i ostao ubeđeni subjektivista u teoriji verovatnoće do dan danas. Naravno da je programski jezik R bio sledeći logičan korak. R sam počeo da učim neke 2006. godine, mislim. Od 2013 godine, kada sam konačno završio rad na doktorskoj tezi, uključujući razvoj originalne bihejvioralne teorije odlučivanja i njene matematičke formulacije, do danas, teško da sam godišnje imao više od sedam dana da nisam napisao liniju R koda. Nešto Python sam znao s početka 2000-ih, ali me je R, specijalizovan za matematičku statistiku i tada visoko popularan samo u akademskoj zajednici prirodno više zainteresovao. Danas, u R radim bukvalno sve, uključujući i ono čemu jezik u suštini nije namenjen: održavanje i razvoj sajtova ili pisanje blogova : ) Od neke 2015. godine, kada sam već neko vreme prestao sa svakim akademskim angažmanom u istraživanjima ili nastavi i uzeo moju prvu poziciju koja se zvanično zvala Data Scientist, do danas, imam osećaj da sam završio još najmanje jedan fakultet radeći u Data Science. Istina, još od 2002 godine sam imao iskustva u istraživanjima javnog mnjenja (gde vam i te kako treba dobro znanje matematičke statistike), radio kao analitičar na međunarodnim projektima, radio u istraživanju tržišta, tako da mi nije bio toliki problem da nekako izađem na tržište kao konsultant u analizi podataka. Ali je realni rad u Data Science vremenom, a ponajviše od početka mog angažmana kao Data Scientist za Wikidata (2017 - 2022) - najluđi posao koji sam u životu radio - zahtevao mnogo više od dobrog R programiranja i poznavanja statističkih modela. SQL sam, ruku na srce, naučio još tokom nekih angažmana na razvoju Information Retrieval i Text Mining sistema u R za jednu međunarodnu fondaciju neke 2015, ako ne grešim, od kada datira i moja sklonost ka PostgreSQL, ali su ulaz u Big Data okruženja (Apache Hadoop i Spark) te potreba da razvijam kompletna softverska rešenja i plasiram ih u produkciona, virtuelna okruženja bili za mene priličan šok. Ali me je jedna stvar držala: ja sam, jednostavno, voleo sve to. I nikada mi nije predstavljalo problem to da nešto novo učim, toliko sam radoznao po prirodi da bih mogao da idem u školu za pare i polažem ispite do penzije (ako ikad u penziju uopšte i odem). Apache Spark je bila stvar koja me je naterala da se ozbiljnije vratim Python programiranju, i danas koristim Python i R uporedo u poslu - mada 90% koda koji pišem danas jeste u Python, dok R koristim za istraživačke faze projekata jer mi omogućava rapidan razvoj prototipa ma kog modela na kome radim. A i više ga volim : ) Vremenom, kroz posao, godinama, prešao sam kompletan put od čoveka koji koristi matematičku statistiku i modeliranje da bi testirao neku naučnu hipotezu ili teoriju do čoveka koji radi full-stack software development u Data Science: od istraživanja, preko prototipa, mašinskog učenja i selekcije modela, do njihovog plasiranja u produkciju upakovane u različite data proizvode u koordinaciji sa product i communications stranama posla. Pa ovo je lična priča: ponovo, šta su opšte pretpostavke, kako se ulazi u Data Science? Prvi način da vam pomognem u tome kako da uđete i kako da učite Data Science se sastoji u izvođenju nekoliko zaključaka iz ove moje profesionalne i lične priče, podsećajući vas da postoji bezbroj načina na koje možete da uđete u Data Science i učite tu oblast. 1. Treba da volite to, i da radite na nečemu konkretnom! Često ljudima koji me pitaju kako da počnu u Data Science odgovorim tako što ih pitam: koji problem vi pokušavate da rešite, a da to nije problem šta isplaćuje vašu mesečnu platu i plaća kiriju? Ja sam ono što me je odvelo u Data Science karijeru naučio rešavajući tri problema kognitivnih nauka koji su me najviše zainteresovali: problem odlučivanja, problem otkrića kauzalnih odnosa iz statističkih podataka, i problem značenja; sredstva kojima danas raspolažem u mom znanju i veštinama sam stekao radeći na rešavanju ovih problema. Za vas to može da bude nešto sasvim drugo, iz oblasti ekonomije, biologije, fizike, menadžmenta, inženjeringa, entertjmenta, kriptovaluta i NFTs, čega god hoćete, ali uvek je za učenje bolje da ispred sebe imate konkretan problem koji hoćete da rešite matematičkim sredstvima u Data Science nego da ga nemate: to ključno utiče na vašu motivaciju, da se bavite nečime što vas interesuje, što vam daje snage da napredujete. Ljudi znaju tokom kurseva u Data Science koje držim da me pitaju koji dataset treba da uzmemo i na njemu vežbamo R ili Python? Ja im obavezno odgovaram, vidite, na Kaggle i drugde ih ima milion - ali vi treba da odaberete onaj koji vas zanima, jer će vam svi drugi verovatno biti dosadni. 2. Treba da imate sreće, jeste - ali i da prilike za učenje stvarate i da ih koristite kada vam se pruže. Primetićete kako se u mojoj priči o početku karijere u Data Science stvari nekako perfektno slažu: čovek programira od malih nogu, čak i kad promeni faks da pobegne od matematike on uleti u oblast društvenih nauka koja je solidno matematizovana, dobije priliku da se bavi naukom, tokom studija se razbije od metodologije, verovatnoće i statistike, sve vreme nešto programira, ubada dobre poslove, i kako da na kraju ne postane Data Scientist? Pa čovek ima lude sreće! To samo zvuči tako kad se ispriča. Prvi časopis o računarima mi jeste otac doneo na poklon 1984. godine, ali nije on nego ja seo za sto, izvadio svesku i počeo da uči da programira (bez računara, zvuči kao vic danas). Kada sam upisao psihologiju, mogao sam te više prirodno-naučne ispite da ispolažem sa desetkama, slegnem ramenima, nakupim sertifikate za neke terapije i couching i danas razgovaram sa ljudima za novac kao što radi ogroman broj mojih kolega (zbog toga na tržištu koje je daleko više zasićeno nego ono u Data Science): ja sam izabrao da zagrizem i uđem u naučni rad pored redovnih studija; to je duplo više rada na studijama nego što se od vas traži. Nekih 2000/01, dok sam bio polaznik Beogradske otvorene škole, mogao sam da je završim i stavim u džep lepe preporuke za posao, odem i bavim se nekim reasearch managementom i uživam; ja sam predložio osnivanje istraživačkog centra koji bi se bavio razvojem Interneta i proučavanjem informacionog društva, tako stvorio priliku da oformim tim, izvedem istraživanja sa hiljadama ispitanika i naučim proces menadžmenta istraživanja od ideje do publikacije s leva na desno (četiri knjige smo mi u tom timu objavili zajedno 2002 - 2005; i to je trebalo napisati). Za doktorat, nisam morao da razvijam novi matematički model u teoriji odlučivanja, doktorira se i sa mnogo manje. Uopšte nisam morao da u životu prihvatam pozicije na kojima je trebalo da radim i back-end na Big Data u Hadoop i Spark, i mašinsko učenje, i razvoj RStudio Shiny dashboards, i njihovu produkciju u cloud okruženjima; mogao sam da kažem Ok, platite nekog Data inženjera za Big Data i zaposlite nekog juniora da radi dashboards, ja sam specijalista za ML i radim samo to - kao što danas radim na poziciji na kojoj se od mene zahteva samo ML, a u većini firmi kojima treba Data Science to što sam godinama radio ja radi tim ljudi. Ali je to za mene bio izazov - pa sam učio. Sve ono što nisam uradio je bilo da propustim priliku da učim kada bi mi se pružila pukom srećom, ili da propustim da priliku za učenje stvorim kada takve prilike nije bilo. U većini slučajeva, nisam uspevao samo to, već sam uspevao i da budem plaćen da radim posao koji je podrazumevao da na njemu mnogo učim. To bi bile pretpostavke: (1) da učite Data Science radeći na nečemu što vas interesuje i što volite, jer u suprotnom ozbiljno rizikujete da sebi zagorčate život ubrzo, te (2) da neprestano tražite prilike za učenje, kontekste u kojima će vaše učenje postajati funkcionalno i koristiti i vama i drugima (pri tom vas, kad god je to moguće, i plaćajući za to), i ne da prilike za učenje Data Science čekate nego da ih aktivno stvarate. Predlažite projekte, okupljajte timove, tražite podatke, otvorite blog i pišite šta i kako radite, i objasnite zašto je važno koji problem rešavate i zašto vam je do toga stalo. U narednim postovima, o tome da li i koliko teorije verovatnoće i statistike treba da znate da biste preuzeli neku poziciju u Data Science/ML, o tome da li vam trebaju master i doktorske studije da biste radili u Data Science (odmah da odgovorim: ne, ali nije ni loše ako je upravo to bio vaš razvojni put), kako da učite samo programiranje za Data Science, kako da organizujete vaše projekte tokom učenja (obavezno morate da imate projekat na kome radite dok učite Data Science), i drugim nadam se korisnim raspravama. Autor: Goran S. Milovanović

HelloWorld

22.09.2023

Microsoft integriše Python u Excel: Novi korak u naprednoj analizi podataka

Microsoft je najavio integrisanje Pythona, jednog od najpopularnijih programskih jezika, direktno u svoju Excel platformu. Javna probna verzija ove funkcionalnosti dostupna je već neko vreme, omogućavajući korisnicima da manipulišu i analiziraju podatke iz Pythona direktno unutar Excela. Stefan Kinestrand, generalni menadžer za moderni rad u Microsoftu, objašnjava: "Možete manipulisati i istraživati podatke u Excelu koristeći Pythonove grafikone i biblioteke, a zatim da koristite Excelove formule, grafikone i PivotTabele za dalje detaljisanje vaših saznanja. Sada možete da obavljate naprednu analizu podataka u poznatom Excelovom okruženju putem direktne interakcije s Pythonom iz Excelove trake sa alatkama." Jedna od prednosti ovog unapređenja je što korisnici neće morati da instaliraju dodatni softver ili da konfigurišu dodatke kako bi pristupili ovoj funkcionalnosti. Pythonova integracija biće deo ugrađenih konektora Excela i Power Query-ja. Uz to, Microsoft uvodi i novu PY funkciju koja omogućava da se Pythonovi podaci prikažu unutar mreže Excelove tabele. Kroz partnerstvo sa Anacondom, Pythonovom repozitorijumu, popularne Python biblioteke kao što su pandas, statsmodels i Matplotlib biće dostupne unutar Excela. Izračunavanja u Pythonu izvodiće se u Microsoftovom oblaku, a rezultati će biti vraćeni u Excelovu tabelu. "Uzbudjen sam što ova izvanredna, čvrsta integracija Pythona i Excela sada vidi svetlost dana. Očekujem da će obe zajednice otkriti zanimljive nove primene u ovoj saradnji, što će povećati sposobnosti svakog partnera”, rekao je Gvido van Rosum, tvorac Pythona i sada istaknuti inženjer u Microsoftu, piše The Verge. Nova funkcionalnost Python u Excelu počinje danas da se uvodi kao javna probna verzija za Microsoft 365 Insajdere u Beta kanalu. Inicijalno će biti ograničena na Windows platformu, dok će za druge platforme biti dostupna "u kasnijem periodu". Microsoft napominje da će Python u Excelu biti uključen u Microsoft 365 pretplatu tokom probnog perioda, ali da će "neke funkcionalnosti biti ograničene bez plaćene licence" nakon što probni period istekne.

HelloWorld

21.09.2023

UPOREDI KOMPANIJE

U nastojanju da unapredimo tvoje korisničko iskustvo i sa namerom da ti omogućimo informisane odluke vezane za buduću karijeru, koja ima presudan uticaj na izbor poslodavca, s ponosom ti predstavljamo našu najnoviju funkcionalnost - "Uporedi kompanije". Od ovog trenutka, imaćeš mogućnost da sve ključne faktore analiziraš na istom mestu. Uz ovu poboljšanu funkciju uporedjivanja, otvaramo ti vrata sveobuhvatnog uvida u svet kompanija. Ispitajte i uporedite: Ocene kompanija Sada možeš lako istražiti i uporediti ocene kompanija naših korisnika. Bez obzira da li si u potrazi za dinamičnim startapom ili uglednom korporacijom, naša funkcionalnost poređenja ti omogućava da sagledaš ocene kompanija iz različitih aspekata, pomažući ti da doneseš informisanu odluku o svom sledećem profesionalnom koraku. Korisnička iskustva Šta je bolji način da saznaš kako je raditi u određenoj kompaniji, nego čuti direktno od ljudi koji su tamo ili su bili? Sada ti naša funkcionalnost poređenja omogućava da pristupiš iskustvima naših korisnika, čime dobijaš realan uvid u svakodnevni život zaposlenih u različitim organizacijama. Prosečne plate po pozicijama Da li želiš da znaš koliku platu možeš da očekuješ na određenoj radnoj poziciji? Sada brzo i lako možeš da uporediš prosečne plate za radne pozicije koje te zanimaju u različitim kompanijama. Beneficije i tehnologije Pored plata i ocena, pružamo ti mogućnost da uporediš i beneficije koje su u ponudi u različitim kompanijama. Takođe, saznaćeš u kojim tehnologijama se radi u svakoj organizaciji, kako bi se uverio/la da tvoje veštine odgovaraju onome što kompanije traže. Aktuelni poslovi Tražiš novu profesionalnu priliku? Naša funkcionalnost poređenja ti omogućava da lako pregledaš trenutno otvorene radne pozicije u kompanijama koje te zanimaju, pružajući ti brz pristup mogućnostima za napredak. Statistike o zaposlenima i prihodima: Saznaj više o veličini i finansijskom statusu kompanija koje te zanimaju. Uporedi broj zaposlenih i prihod kompanija kako bi najbolje stekao/la bolje razumevanje njihove veličine i stabilnosti. Spreman/na si za svoj naredni korak? Iskoristi moć funkcionalnosti upoređivanja na Helloworld.rs i pronađi poslodavca koji ti savršeno odgovara. LINK   HelloWorld tim 😊

HelloWorld

20.09.2023

Kako Apple motiviše zaposlene i sprečava sagorevanje na poslu

Apple je jedna od retkih kompanija koja je na ceni kod svojih zaposlenih, ali i svih onih koji su u potrazi za poslom. Međutim, ono što tehnološku kompaniju iz Kupertina čini poželjnim poslodavcem možda neće biti prva stvar koja mnogima padne na pamet. Ne samo da je Apple više nego spreman da izdvoji dobar novac za plate zaposlenima, ponudi raskošan prostor za rad i ozbiljne uslove kada su u pitanju bonusi, ono što rad u ovoj kompaniji čini izuzetno dragocenim jeste određena „udobnost“ uloga unutar nje – i za to postoji briljantno prost razlog. Ono što Apple radi, a većina drugih poslodavaca često previdi, jeste nagrađivanje najvrednijih radnika. Ove nagrade na podrazumevaju više novca ili veću kancelariju, već slobodu, sudeći po jednom od radnika u kompaniji. Iako je sama kompanija odbila da komentariše ove navode, Apple je tokom godina stvorio reputaciju napornog mesta za rad koje nudi jako malo prostora za privatni život. Međutim, kako se sve veći broj ljudi i dalje polako vraća na svoja radna mesta, kompanija je fokus počela da stavlja na fleksibilnost i slobodu. Iako zvuči jako prosto i intuitivno, u pitanju nije stvar koju svaka kompanija ume da sprovede kako treba. Iako podjednako zahtevan, Amazon je poznat po znatno negativnijoj poslovnoj kulturi i, za razliku od Applea, koji ljudima koji rade puno daje i puno slobode, svojim najvrednijim radnicima daje još posla. Sa druge strane, Appleov pristup fokus stavlja na produktivnost uz izgradnju sredine u kojoj se sloboda sve više vrednuje i nudi zaposlenima kako bi mogli da rade šta žele – kada završe sa svim svojim poslovnim obavezama. Ova prosta „radi naporno – provodi se naporno“ strategija je kod mnogih kompanija i dalje samo isprazna fraza koja se spominje tokom intervjua, i nikada više. Ali, ona bi vrlo lako mogla da bude idealno rešenje za veliki broj kompanija koje se svim snagama trude da zadrže zaposlene i učine ih srećnijim. Ipak, potrebno je pogoditi nekoliko ključnih sastojaka kako bi ovaj recept ispao kako treba i kako bi se izbeglo sagorevanje zaposlenih. Zaboravite na korporativni bejbisiting Jedina stvar koja može biti gora od čuvanja drugih jeste kada ste vi osoba koju neko čuva. To može biti poprilično iscrpljujuće, pogotovo ako ste za šefa dobili osobu koja voli mikromenadžment. Držanje zaposlenih za ruku tokom radnog vremena trebalo bi da bude rezervisano za lične odnose, a ne profesionalne. Ipak, to je teško izbeći kada mnoge kompanije i dan danas vrednuju menadžere koji žude za kontrolom i imaju problema sa poverenjem. Zaposleni moraju da imaju prostor da rade svoj posao, i da ga rade dobro. Jedan od razloga zbog kojih je Apple uspeo da malo opusti uzde jeste superioran proces izbora kandidata koji se svodi na tri ključne komponente za dovođenje eksperata u svakom polju – ekspertizu, lakoću i poželjnost. Zahvaljujući ovoj proceduri, Apple je više nego siguran da osoba koja dobija posao poseduje sve visoke kvalifikacije koje su potrebne i samim tim se eliminiše potreba za bejbisitovanjem. Autonomija zaposlenih raste u proporciji sa njihovim rezultatima Umesto da kažnjava najproduktivnije radnike sa još posla i obaveza, Apple ih nagrađuje slobodom. Drugim rečima, zaposleni mogu da rade šta god žele kada završe sve svoje obaveze. Ako su završili sa poslom, onda su zaslužili to pravo, kao i poverenje šefa. Neće svaki novi zaposleni dobiti sve što poželi prvog dana, već će pokazivanjem svoje vrednosti dobijati sve više i više slobode. Zauzvrat, posao postaje „udobniji“ kako ljudi iskazuju produktivnost i poverenje. Naravno, teško je verovati ljudima ako ih ne poznajete, i to je nešto što predstavlja problem unutar velikih timova. Ali, ako postoji dobar razlog da upoznate svoje kolege, onda je to lakša i bolja motivacija i negovanje pozitivne radne atmosfere. Ljudi će rado obavljati posao ako ih vrednuju osobe koje su im bitne Dobar menadžer može biti odličan razlog da njegov tim nadmaši očekivanja jer želi da on bude ponosan na njih. Možda to neće uvek biti očigledno, ali dobar menadžer lako može da motiviše zaposlene da rade bolje ako ga oni cene i samim tim ne žele da ga iznevere. Ovo je osnovni sporedni proizvod dobrog menadžera, ali nikako ne znači i da je uobičajen. Ključ za ostvarivanje ovakvog odnosa jeste bolje upoznavanje tima – ako ne znate nekoga na ličnom nivou, teško ćete ga motivisati na profesionalnom. Zato kompanije i menadžeri ponekada moraju da se odreknu dela kontrole, da je delegiraju i adekvatno nagrade najbolje, umesto da ih opterete sa još posla samo zato što oni to mogu da iznesu. „Udoban“ posao nije nužno i lak posao, ali može da vam život učini lakšim kada imate dobar poslovni život uz kvalitetan privatni. Kompanije mogu da uzmu ovaj primer i primene ga kako bi dobile zaposlene koji su spremni da odu korak dalje. I oni će to učiniti istog trenutka kada shvate da ih taj korak dalje ne vodi napred samo privatno, već i poslovno.

avatar
Uroš Jelić

20.09.2023

10 najčešćih grešaka koje mladi programeri prave 

Iako se do pre svega nekoliko godina digitalizacija činila kao pust san, ona je danas postala realnost za milione kompanija širom sveta. Kako svaka od njih u delo sprovela svoje projekte, prisustvo developera je ključna stvar.  Međutim, nije svaka kompanija u prilici da priušti najbolje programere, pa se u zahtevnim ulogama vrlo često nalaze programeri koji nisu dovoljno duboko zagazili u mediorske i seniorske vode.  Iako se na njihovim to-do listama nalaze ozbiljni taskovi, jako je važno da svi developeri, bez obzira na poziciju nastave da se usavršavaju i unapređuju svoje znanje jer kao što mnogi znaju, prva greška može vrebati odmah iza ugla.  Kako bi izbegli neke od najčešćih grešaka koje mnogi programeri prave, prvo je potrebno da ih uočite, a ako već niste, možda čemo mi uspeti da vam u tome pomognemo.  U ovom tekstu ćemo proći kroz 10 najčešćih grešaka koje gotovo svi koji su skoro ušli u svet programiranja prave kako bi mogli da ih na vreme izbegnu i sebi postave solidne temelje za uspešnu karijeru u budućnosti.  Ne znate šta tačno želite da budete Ovo se vrlo često može sresti kod ambicioznih developera koji žele da nauče da koriste što više alata jer veruju da će im poznavanje svega omogućiti rad na boljim projektima. Međutim, veoma je važno da na samom početku odlučite šta želite da radite i kakve softverske proizvode želite da stvarate. Ono što je takođe veoma dobro jeste i sam izbor polja kojima možete da se posvetite – razvoj video igara, Android i iOS aplikacija, web development – i tako odaberete ono koje vam najviše odgovara. Nemate jasno definisan plan Prosto uletanje u sferu softver developmenta nije najbolja strategija ako želite da napredujete kao profesionalac. Kada nemate jasno određen plan, možete se osetiti dezorjentisano. Jednog dana posvetićete se Angularu, drugog Reactu, trećeg nečem drugom i na kraju nećete ovladati nijednom stvari. Najbolje je da na početku napravite plan i posvetite se učenju tehnologija i alata po specifičnoom redosledu. Ne skačite sa jedne tehnologije na drugu, a da prethodno niste ovladali onom koju ste prvu učili. Previše se rasplinjujete Ponekada želimo da pokrijemo što više sfera, što može dovesti do toga da nijednu nismo ovladali kako treba i postali stručni. Čak iako imate poveći spisak stvari koje vas zanimaju, ako želite da postanete stručnjak – odvojite dovoljno vremena da postanete stručnjak u jednoj, pa tek onda pređite na sledeću. Učite previše programskih jezika u isto vreme Mnogi stručnjaci smatraju da mladi programeri ne bi trebalo da počnu da uče novi alat, tehnologiju ili jezik pre nego što ovladaju onim što trenutno rade. Mnogi veruju da je moguće učiti programiranje i savladati nekoliko tehnolgoija i jezika u isto vreme, učeći sve u isto vreme, ali ovo nije tačno, niti je dobar pristup jer se vrlo lako možete zapetljati u različitim konceptima i načinima razmišljanja. Ovakvo razmišljanje zapravo je plod same industrije koja insistira da se sve radi brzo, ali u svetu programiranja, za sve je potrebno vreme i puno strpljenja. Smatrate da je jedan programski jezik bolji od drugog Svaki programski jezik radi, ispunjava svoje funkcije i nema potrebe da ih upoređujete i vrednujete. Tehnički, svi oni rade. Ono što ih možda može razdvajati jeste trenutna potražnja za određenim jezikom naspram drugih, i to je najčešće jezik koji u tom trenutku zaokuplja pažnju mnogih developera. Ali kao i sa mnogim drugim stvarima u životu, softverski predeli jako se brzo menjaju, i taj isti jezik za jako kratko vreme može svoje mesto ustupiti nekom drugom. Pokušavate da zapamtite sve Svaki alat ima odgovarajuću i prateću dokumentaciju koju u svakom trenutku možete konsultovati bez potrebe da pamtite svaki proces. Kako napredujete, uvidećete važnost memorije jer vam pomaže da unapredite programerske veštine i da se bolje povežete da određenim konceptima, ali ne morate znati baš sve napamet. Smatrate da je pretraga interneta beskorisna Mnogi programeri smatraju da je korišćenje pretraživača kao što je Google za iznalaženje rešenja slabost, ili da oni koji ga koriste kako bi se izborili sa određenim problemom nisu profesionalci. Međutim, čak i najbolji Google inženjeri svakoga dana gledaju dokumentaciju svih stvari koje koriste. Drugim rečima, sasvim je normalno tražiti informacije na internetu kako biste bili bolji u svom poslu. Ne vežbate dovoljno Vežba vodi savršenstvu. Samim tim, ključ dobrog programiranja leži u konstantom vežbanju. Izuzetni rezultati, kojima se mnogi nadaju, vrlo retko dolaze preko noći. Izuzetni rezultati su posledica brojnih časova rada i učenja. Tražite trenutne rezultate Danas je dobijanje trenutnih rezultata prisutno u svim životnim sferama, pa i u razvoju softvera. Ali to je jedna od velikih grešaka koje mnogi programeri prave. Stručnjakom se postaje tako što pravite korak po korak, učite jezik po jezik, savladavate prepreku po prepreku. Traženje instant rezultata može dovesti samo do frustracije, pogotovo ako su gore navedeni koraci takođe napravljeni ishitreno. Želite da brzo završavate velike projekte U profesionalnom svetu je sasvim normalno biti ambiciozan. Ta ambicija nas gura da učimo i usavršavamo se. Ali, velika je greška tražiti veliki projekat, prepun kompleksnosti, a da pritom ne znate kako da programirate ili verujete da programiranje možete da naučite za nekoliko dana.  Naravno, možete otići na neki kurs koji će vam pomoći da kreirate specifičnu aplikaciju koju želite, možete naučiti kako da programirate određenom tehnologijom i brojne druge stvari. I sa tim znanjem možete misliti da ste spremni za svaki projekat, ali to može biti velika greška jer na velikim projektima rade ljudi sa mnoštvom iskustva koje im pomaže da predvide probleme i iznađu nesvakidašnja rešenja – a to iskustvo se ne stiče brzim kursom.  Naravno, u svetu programiranja postoji bezbroj problema i grešaka koje možete da napravite, baš kao i što je slučaj sa rešenjima. Ipak, ukoliko se fokusirate na ove koje smo naveli, sebi možete znatno olakšati život i utabati stazu koja će vas odvesti tamo gde ste se uputili. 

avatar
Uroš Jelić

18.09.2023