[ unique_ @ 02.03.2019. 07:47 ] @
Pozdrav, imam 15 godina i znam dosta jezika, ali najbolje sto sam savladao su C i python. Mislim za C da sam ga veoma dobro savladao znam dosta toga oko sigurnosti (igrao sam dosta CTF challengova),umem da debagujem i umem da ugradim u C skriptu assemblerov kod. Bavim se programiranje od 12 godine. Zanima me kako izgleda posao programera, znam za ono dobijes task od task menagera i ti to treba da uradis. E sad sta ako mi to ne umemo da uradimo i ti zadaci od task menagera da li su teski(kako izgleda za jednog pocetnika na poslu) i kako izgledaju ako moze neko da navede primer?
I da zanima me kako da znamo kada smo spremni za programera i kako krenuti sa tim poslom ako nemam diplomu?
[ mjanjic @ 02.03.2019. 08:24 ] @
Odlično, šta radi funkcija "Q_rsqrt" u sledećem kodu :)

Code:
#include <stdio.h>

int main()
{
        float Q_rsqrt( float number )
    {    
        long i;    
        float x2, y;    
        const float threehalfs = 1.5F;    
        x2 = number * 0.5F;
        y  = number;    
        i  = * ( long * ) &y;
        i  = 0x5f3759df - ( i >> 1 );
        y  = * ( float * ) &i;    
        y  = y * ( threehalfs - ( x2 * y * y ) );
        y  = y * ( threehalfs - ( x2 * y * y ) );
        return -y;
    }
    
    float inputvalue = 2.0;
    float result = Q_rsqrt( inputvalue );
    
    printf( "Rezultat je %f \n", result );

    return 0;
}
[ Whitewater @ 02.03.2019. 08:40 ] @
pretvara fahrenheit u celsius ?
[ looker-on @ 02.03.2019. 08:44 ] @
Citat:
Whitewater: pretvara fahrenheit u celsius ?


[ unique_ @ 02.03.2019. 08:47 ] @
https://gist.github.com/gabereiser/8407918
Razumeo sam vecinu tvog koda, ali ne bas sve.
Zapravo me je zanimalo kako se zaposliti kao programer ako nemas diplomu i gde traziti, koja je plata...
[ Branimir Maksimovic @ 02.03.2019. 08:53 ] @
Citat:
mjanjic:
Odlično, šta radi funkcija "Q_rsqrt" u sledećem kodu :)

Code:
#include <stdio.h>

int main()
{
        float Q_rsqrt( float number )
    {    
        long i;    
        float x2, y;    
        const float threehalfs = 1.5F;    
        x2 = number * 0.5F;
        y  = number;    
        i  = * ( long * ) &y;
        i  = 0x5f3759df - ( i >> 1 );
        y  = * ( float * ) &i;    
        y  = y * ( threehalfs - ( x2 * y * y ) );
        y  = y * ( threehalfs - ( x2 * y * y ) );
        return -y;
    }
    
    float inputvalue = 2.0;
    float result = Q_rsqrt( inputvalue );
    
    printf( "Rezultat je %f \n", result );

    return 0;
}


Ovo nije C.
edit:
cast u long* pa potom dereferenciranje je undefined behavior, moze proizvesti bilo sta.
[ unique_ @ 02.03.2019. 08:54 ] @
printf?
[ peromalosutra @ 02.03.2019. 09:08 ] @
Očekivani nivo samostalnosti dosta varira od firme do firme. Moje iskustvo je da u manjim firmama moraš da budeš samostalniji, dok u većim firmama znaju da naprimaju sve i svašta.

Lično sam vidio junior developera koji za 6 mjeseci od kako je primljen još nije napisao niti jednu liniju koda. Firma je velika, pa ako od stotinjak ljudi na projektu jedan zavlači i još je sakriven iza grupe, to nema velikog uticaja. Ne bih sad da debatujem kako je to moguće, samo navodim kao primjer da ako je istina to što pišeš (a nemam razloga da mislim da nije), onda si već u startu u odličnoj poziciji i ne treba da budeš zabrinut.

Kao junior je sasvim razumljivo da neke stvari nećeš znati da uradiš, zato i postoji takva titula. U takvim slučajevima, tu su developeri sa više iskustva koje možeš da pitaš za savjet. Neke firme praktikuju čak i programiranje u parovima sa iskusnijim developerom, jer je tako najlakše da uđeš u cijeli sistem.

Što se samog tehničkog znanja tiče, pored samog programskog jezika, obrati pažnju na okruženje i na neke prateće alate (git). Npr. C sam po sebi nije dovoljan, uglavnom se koristi u nekom okruženju (mikrokontroleri/embedded, ili neki Linux low level/middleware). Ovo je više domensko znanje i firme često prime i one manje iskusne u određenom domenu, ali sa dobrom osnovom.

Sa svojih 15 godina si na odličnom putu za dalje, samo nastavi tako.
[ unique_ @ 02.03.2019. 09:12 ] @
@peromalosutra Hvala puno na odgovoru.
[ Whitewater @ 02.03.2019. 09:21 ] @
sto veca firma veca ladovina i manja kreativnost tako je svugde.

A velike firme generalno primaju dobre kadrove i imaju vecu selekciju. Posle im utrape neki monoton uskospecijalizvan posao. I onda jednog dana pukne velika firma...
[ Branimir Maksimovic @ 02.03.2019. 09:29 ] @
E sto volim ovo generalizovanje.
[ Whitewater @ 02.03.2019. 09:35 ] @
ja bih to nazvao najblizom aproksimacijom realnog stanja kroz sektore
[ Branimir Maksimovic @ 02.03.2019. 09:49 ] @
"Zanima me kako izgleda posao programera"

Pa izgleda kao i to sto sad radis. Mozes raditi od kuce mozes iz kanca, zafisi kako se dogovoris. Ako radis od kuce radices mnogo vise nego iz kanca. Tu sad ide od firme do firme da li ces imati slobodnih dana/placeno bolovanje ili ne,
taj da li ce te placati samo efektivno sto radis ili ne. Tu naravno ide i visina zarade koja je veca kad te samo efektivno placaju ili ides ono na radno vreme.
Sve u svemu, posao je tezak, od tebe ce se uvek dosta ocekivati, sto rece veci pritisak i stres ces imati u manjoj firmi, dok u velikoj firmi *mozda* manje, ali uvek to zavisi od sefova. Znaci najbitnije je u kakvom okruzenju radis,
da li je zdravo ili bolesno.
[ mjanjic @ 02.03.2019. 10:46 ] @
Dobar procenat firmi u Srbiji radi outsourcing, praktično se programeri finansiraju prema projektu na kome su angažovani, pa tako i plate variraju. Ima onih koji idu i do 2000€ neto, pa i više (mada su takvi veoma retki), ali ima i onih koji tavore za 30-40k dinara čekajući bolje sutra, jer je bitno da su upali u dobru firmu, ali su trenutno na nekom bezveznom projektu koji nije baš nešto naročito plaćen, a znanja još uvek nemaju da odu u jaču firmu (bar oni sami misle tako).
I onda, posle nekog vremena, kad stekne dobro znanje i više samopouzdanja, takav programer ne želi više da čeka bolje sutra, pošalje CV drugoj firmi, ponude mu preko 1000€ startnu platu, on to kaže svom šefu u prvoj firmi i već sledeći dan dobije povišicu na tu sumu.

Konkretno u 2 firme sam čuo iz prve ruke za takve slučajeve, i to se radi o jednom veoma ozbiljnoj i jakoj firmi, a druga je u zadnjih nekoliko godina maltene udesetostručila broj zaposlenih. Dobre plate će imati samo oni koji su odlični, odgovorni u poslu, poštuju rokove, poštuju način rada u firmi, i teško su zamenjivi (N godina u firmi, rukovode timovima ili čak samim projektom, i sl.). Iako se do takve pozicije može doći za nekoliko godina, većini je to nemoguće iz raznoraznih razloga, ali je prvenstveno problem u nedovoljnom predznanju koje kasnije svugde postaje kamen spoticanja.


Za C programiranje je možda najbolje ići u neku firmu koja se bavi sistemskih i/ili embeded programiranjem, ili eventualno u firmu koja radi neke kontrolere za industriju i sl. kod kojih se koristi C. Naravno, ako se ima iskustvo za to.

U principu, sve se nauči ako se ima razvijena logika, ali na intervjuima često postavljaju pitanja vezana za OOP i to se generalno najviše traži, tako da...


P.S. Što se tiče koda datog u mojoj ranijoj poruci, kod radi kako treba (proverio na online C interpreteru), i u pitanju je šala, ovo gotovo niko ne bi provalio šta radi, osim ako nije čuo za taj primer. U pitanju je implementacija x^(-1/2) funkcije, tj. 1/sqrt(x), a koja je korišćena u Quake 3, ali sam samo dodao negativan znak za povratnu vrednost jer je to greška koja se javlja na 64-bitnim sistemima (u principu, trebalo je koristiti sizeof...), opisano je čak i na srpskoj Wiki strani: https://sr.wikipedia.org/sr-ec/0x5f3759df
mada je dato više detalja na odgovarajućoj engleskoj strani: https://en.wikipedia.org/wiki/Fast_inverse_square_root
[ Branimir Maksimovic @ 02.03.2019. 11:05 ] @
".S. Što se tiče koda datog u mojoj ranijoj poruci, kod radi kako treba"

Kod ne radi kako treba.
[ mjanjic @ 02.03.2019. 11:47 ] @
Kao što sam rekao, problem je samo u minusu, tj. treba koristiti "sizeof" kod 64-bitnih sistema, i taj znak treba promeniti u zavisnosti od sistema, čak i kod online servisa mora da se promeni u zavisnosti od znaka rezultata. Ostalo je u redu, a naravno da će se uvek naći kompajler koji će se žaliti, jer sam C kao jezik dozvoljava neke stvari koje možda nisu dobra praksa, ali ovaj kod su napisali ljudi koji su daleko ispred nas po znanju.

Na Wiki je dat originalan kod, pa recite za njega da li radi kako treba ili ne, a taj prepravljen primer koji sam postavio je bio u cilju šale, da se vidi kako i relativno jednostavan kod može da bude nerazumljiv.
[ Branimir Maksimovic @ 02.03.2019. 11:57 ] @
Ovaj kod nije C pre svega.

Code:

~/.../bmaxa_data/examples >>> clang -std=c11  bad_code.c -lm                                   
bad_code.c:7:5: error: function definition is not allowed here
    {
    ^
bad_code.c:22:20: warning: implicit declaration of function 'Q_rsqrt' is invalid in C99
      [-Wimplicit-function-declaration]
    float result = Q_rsqrt( inputvalue );
                   ^
1 warning and 1 error generated.


Drugo:

potrazi strict aliasing rule u C standardu.
[ peromalosutra @ 02.03.2019. 13:28 ] @
Šta je uopšte poenta pokazivanja takvog koda? Sa stanovišta C jezika (ako uopšte prihvatimo da je ovo C), kod je je izrazito jednostavan, jedina kompleksnost je u domenu koji rješava. Bilo ko od nas može da prekopira neki segment koda usko vezan za domen iz njegovog polja i diviti se neznanju drugih, ali ne vidim šta time postižemo.

Pokazivanje ovakvih stvari početniku može da ima samo efekat zastrašivanja, jer će on misliti da se od njega očekuje da razumije tačno šta taj kod radi, što apsolutno nije tačno.

Citat:

P.S. Što se tiče koda datog u mojoj ranijoj poruci, kod radi kako treba (proverio na online C interpreteru), i u pitanju je šala, ovo gotovo niko ne bi provalio šta radi, osim ako nije čuo za taj primer.


Ok sad vidim ovu poruku i to je ono na šta sam i ciljao sa ovim odgovorom. Neko ko nema iskustva ovakvu šalu može shvatiti ozbiljno.
[ Branimir Maksimovic @ 02.03.2019. 13:31 ] @
Pocetnik treba da zna da su ovakav kod pisali pocetnici, tj ljudi koji ne poznaju dobro C jezik.
[ mjanjic @ 02.03.2019. 17:39 ] @
Znam profesora koji u malom prstu ima sve standarde iz oblasti IT-a, ima u malo prstu sve standarde vezane za projektovanje informacionih sistema i ko zna šta sve, a u životu nije napisao liniju koda niti je projektovao neki informacioni sistem.

Ako se sve radi po standardu, neke stvari nikada ne bi bile napravljene, što ne znači da standarde treba uvek zaobilaziti, već samo u nekim slučajevima.

Ni ja nisam razumeo šta kod radi, jer se radi o matematičkom algoritmu, ali je dati kod primer relativno jednostavnog koda koji običnom programeru nije razumljiv, a cilj je bio da se malo našalimo, ne da ja ispadnem pametniji od nekog drugog.


Može se navesti i primer koda koji računa neku funkciju koristeći Tejlorov ili Maklorenov red, opet većina neće ukapirati šta tačno taj kod radi (u smislu šta izračunava).

_________________________________


Nego da se vratimo pitanju.

Par firmi u kojima znam neke zaposlene, rade po agilnim metodama, uglavnom Scrum - jedan sprint je 2 ili 4 sedmice, definiše se šta treba uraditi za taj jedan sprint i podele se poslovi. To šta će se uraditi odlučuje se na osnovu prioriteta koje je zadao klijent, a specifična težina pojedinih taskova se određuje posebnim metodama (Fibonačijev niz ili neki drugi način).
Naravno, za sve se koristi odgovarajući softver (u jednoj od tih firmi koriste Jira alat za task management), Scrum master redovno prati aktivnosti ostalih članova tima, svako jutro je kratak sastanak, sedmično je duži sastanak po 1-2 sata, itd.
Kod nekih projekata i klijent (tj. zastupnik ili predstavnik klijenta) prati razvoj koda i aktivnosti svako člana tima, a u nekim slučajevima i sam klijent radi testiranje koda (u principu, samo izvršava testove na svom serveru).


Ako neko radi u manjem timu 5-7 osoba, neka iznese konkretnija iskustva.
Pretpostavljam da autora teme zanima kako se to tačno određuje ko šta radi, u smislu npr. kako kod OOP jezika znaju kako će koja klasa da se zove, kako se dogovore oko naziva metoda i sl.

Ja znam za neke jednostavnije primere (u strukturnom smislu), npr. kod troslojne arhitekture svaki član tima radi po jedan sloj, tako da tu
[ nkrgovic @ 02.03.2019. 17:52 ] @
Citat:
Branimir Maksimovic:
Pocetnik treba da zna da su ovakav kod pisali pocetnici, tj ljudi koji ne poznaju dobro C jezik.

Mislis, pocetnik to treba da zna jer mu je neko ko nije pocetnik rekao, ili pocetnik to treba da zna sam od sebe.

Ovo prvo se slazem.... ;)
[ Ivan Dimkovic @ 02.03.2019. 18:44 ] @
Citat:
Branimir Maksimovic:
Pocetnik treba da zna da su ovakav kod pisali pocetnici, tj ljudi koji ne poznaju dobro C jezik.


Heh, na stranu greske, ove stvari su 90-tih bile norma, dok je x87 FPU kod bio spor, IEEE754 hack-ovi i brze aproksimacije su bili redovna stvar, i ja sam ih koristio ;-) Pogotovu u domenu igara, obrade signala i sl. si imao citav arsenal raznih brzih implementacija matematickih f-ja koje su se obicno oslanjale na kombinaciju matematickih trikova i direktne manipulacije IEEE754 float-ova u memoriji.

Naravno, danas kada vec postoje SIMD i GPU instrukcije koje rade sa redukovanom preciznoscu (ako je vec nekom potreban poslednji promil brzine) potpuno je besmisleno pisati ovakav kod, koji je em sto je los i ima nedefinisano ponasanje po C standardu, em je nocna mora za odrzavanje / portabilnost.
[ Branimir Maksimovic @ 02.03.2019. 19:50 ] @
Inace vec sam pisao slicno ovome na forumu ;)
https://www.elitesecurity.org/...rednosti-newton-raphson-metoda

Sto se tice ovoga svaki C programer bi trebao da zna da presipanje iz floata u int treba da se radi sa memcpy ili sa petljom koja je ustvari memcpy,
posto je char* dozvoljeni alias ;)

znaci ispravan program bi bio:
Code:

#include <stdio.h>
#include <string.h>
#include <assert.h>
float Q_rsqrt( float number )
{    
        int i;    
        float x2, y;    
        const float threehalfs = 1.5F;    
        x2 = number * 0.5F;
        y  = number;
        assert(sizeof i == sizeof y);
        memcpy(&i,&y,sizeof y);
        i  = 0x5f3759df - ( i >> 1 );
        memcpy(&y,&i,sizeof y);
        y  = y * ( threehalfs - ( x2 * y * y ) );
        y  = y * ( threehalfs - ( x2 * y * y ) );
        return -y;
}
    
int main(void)
{
    float inputvalue = 2.0;
    float result = Q_rsqrt( inputvalue );
    
    printf( "Rezultat je %f \n", result );

    return 0;
}

E sad tu postoji zackoljica posto ne postoji float 32 pa ovo ne moze da se uradi portabilno.
[ Branimir Maksimovic @ 02.03.2019. 19:59 ] @
Citat:
Ivan Dimkovic:
Citat:
Branimir Maksimovic:
Pocetnik treba da zna da su ovakav kod pisali pocetnici, tj ljudi koji ne poznaju dobro C jezik.


Heh, na stranu greske, ove stvari su 90-tih bile norma, dok je x87 FPU kod bio spor, IEEE754 hack-ovi i brze aproksimacije su bili redovna stvar, i ja sam ih koristio ;-) Pogotovu u domenu igara, obrade signala i sl. si imao citav arsenal raznih brzih implementacija matematickih f-ja koje su se obicno oslanjale na kombinaciju matematickih trikova i direktne manipulacije IEEE754 float-ova u memoriji.

Naravno, danas kada vec postoje SIMD i GPU instrukcije koje rade sa redukovanom preciznoscu (ako je vec nekom potreban poslednji promil brzine) potpuno je besmisleno pisati ovakav kod, koji je em sto je los i ima nedefinisano ponasanje po C standardu, em je nocna mora za odrzavanje / portabilnost.


Spor je i sada FPU zato se ovakva aproksimacija koristi i dalje. Deljenje je pogotovo sporo na Intelu pa se koristi stari dobri Newton-Raphson.

[ Ivan Dimkovic @ 02.03.2019. 21:59 ] @
Jasno, sa Newton-Raphson metodom mozes dobiti bolju preciznost nego Intelove (relativno) nove instrukcije za reciprocne brojeve i korene ali posle Haswell-a su oni znacajno smanjili latenciju i obicnom deljenju* (pricam o AVX instrukcijama).

Ako ti je dovoljna preciznost Intelovih aproksimacija, to ti je par taktova + vektorizovano, nesto sto je u vreme x87 instrukcija bilo nezamislivo.

(*) https://www.agner.org/optimize/instruction_tables.pdf

VDIVPS je, recimo, spao sa 21 ciklusa na Haswell-u na 11 na Skylake-u.
[ anon70939 @ 02.03.2019. 23:36 ] @
da li je vasa prepiska korisna za pokretaca teme, ili cete mu ubiti volju :)
[ Bradzorf012 @ 02.03.2019. 23:46 ] @
Plava riba, kljukana dinastija.

Ko drugome jamu kopa, fizički je radnik.


Plava riba, kljukana dinastija.

Ko drugome jamu kopa, fizički je radnik.

Plava riba, kljukana dinastija.

Ko drugome jamu kopa, fizički je radnik.

Plava riba, kljukana dinastija.

Ko drugome jamu kopa, fizički je radnik.

...

Plava riba, kljukana dinastija.

Ko drugome jamu kopa, fizički je radnik.

Plava riba, kljukana dinastija.

Ko drugome jamu kopa, fizički je radnik.

Plava riba, kljukana dinastija.

Ko drugome jamu kopa, fizički je radnik.

[Ovu poruku je menjao Bradzorf012 dana 03.03.2019. u 10:25 GMT+1]
[ Branimir Maksimovic @ 03.03.2019. 00:40 ] @
Citat:
CoyoteKG:
da li je vasa prepiska korisna za pokretaca teme, ili cete mu ubiti volju :)


Volju ima, samo je malo rano da razmislja o poslu, treba da izgura srednju, pa onda faks. Znaci posao mu jos nije bliska buducnost, a za 7-8 godina ko zna sta ce biti ;p
U svakom slucaju najbolje je kad radis za svoju dusu, a jos kad ti je i posao za dusu onda ...
[ Whitewater @ 03.03.2019. 08:35 ] @
za pocetak mora ce da saceka da postane punoletan da bi mogao da zasnuje radni odnos. Bas bih voleo da cujem da ga je neka firma zaposlila.

Citat:
mjanjic:


Konkretno u 2 firme sam čuo iz prve ruke za takve slučajeve, i to se radi o jednom veoma ozbiljnoj i jakoj firmi, a druga je u zadnjih nekoliko godina maltene udesetostručila broj zaposlenih. Dobre plate će imati samo oni koji su odlični, odgovorni u poslu, poštuju rokove, poštuju način rada u firmi, i teško su zamenjivi (N godina u firmi, rukovode timovima ili čak samim projektom, i sl.). Iako se do takve pozicije može doći za nekoliko godina, većini je to nemoguće iz raznoraznih razloga, ali je prvenstveno problem u nedovoljnom predznanju koje kasnije svugde postaje kamen spoticanja.



na sta si ko kretno mislio pod ovim ? (pp da znam ali bih voleo da ti kazes)
[ Shadowed @ 03.03.2019. 09:01 ] @
Citat:
Whitewater: za pocetak mora ce da saceka da postane punoletan da bi mogao da zasnuje radni odnos. Bas bih voleo da cujem da ga je neka firma zaposlila.

Clan 24 zakona o radu:
Citat:
Radni odnos može da se zasnuje sa licem koje ima najmanje 15 godina života i ispunjava druge uslove za rad na određenim poslovima, utvrđene zakonom, odnosno pravilnikom o organizaciji i sistematizaciji poslova (u daljem tekstu: pravilnik).
[ Ivan Dimkovic @ 03.03.2019. 10:02 ] @
Citat:
CoyoteKG:
da li je vasa prepiska korisna za pokretaca teme, ili cete mu ubiti volju :)


Naprotiv! :-) Zelis da budes C programer u 2019? To verovatno znaci neki embedded / HPC / legacy projekat.

Da ne bude zabune, potraznja za C programerima je i dalje velika ali kod na kome ce covek raditi ce biti ili odrzavanje necega pisanog vec 100 godina ili nesto u embedded svetu.

U oba slucaja je gotovo garantovano da ce se vrlo brzo susresti sa... da kazem, vrlo interesantnim stranama C jezika, pogotovu ako covek radi sa legacy kodom :-)

Posto postavljac teme ima 15 godina, moj savet bi bio da radi za svoju dusu dok ne zavrsi skolu.

Izaberi sta te najvise zanima, neki problem, resi ga, objavi kao open source projekat, to ti moze biti prva referenca uz zavrsenu skolu i to ce ti povecati sanse za dobijanje posla. Imas jos nekoliko godina za koje vreme mozes usavrsiti svoje znanje do nivoa koji je sasvim dovoljan za prvi posao, jos ako imas i neke OSS projekte kao reference gde mozes da pokazes svoj kod, to ti je jos jedan veliki plus.

Posao kao posao, kakve ces taskove dobijati zavisi od firme do firme i pozicije koje imas. Nemoj da te to plasi kao junior dev-a, nece ti sigurno uvaliti da resis P vs. NP problem :-) Verovatno ces poceti sa nekim jednostavnijim problemima uz nadzor nekog od seniora u timu.

Mozda ce ti dati da fixujes tudj bag ili da implementiras neki mali feature ili ekstenziju vec postojeceg koda. Ako si do tada vec proveo godine pisuci C kod i dobar si u tome, to ti nece biti apsolutno nikakav problem.

Ono na sta bi trebao da obratis paznju za buduci prvi posao su moderne prakse u pisanju sigurnog koda, pogotovu ako hoces da programiras u C-u. Firme obicno imaju svoje standarde za pisanje koda i kontrolu kvaliteta ili se oslanjaju na industrijske standarde / najbolju praksu i to je prva stvar na koju bi trebao da obratis paznju na prvom danu svog posla. Kod koji krsi standarde kvaliteta firme ili pravi haos ce biti primecen i to ce ti biti minus, mozda cak i veci nego ako ne mozes da implementiras nesto na vreme.

Naravno, do tada se spremi pisuci kvalitetan kod (dakle NE kod kao pomenuti Q_rsqrt).



[Ovu poruku je menjao Ivan Dimkovic dana 03.03.2019. u 11:17 GMT+1]
[ unique_ @ 04.03.2019. 14:18 ] @
@IvanDimkovic Zapravo radio sam dosta na usavrsavanju C koda tako sto sam igrao CTF challengove preko https://exploit.education/phoenix/ naravno bilo je tu i jos sajtova kao overthewire.org ... Posto koristim Linux hteo sam malo vise da naucim oko Kernela i odlucio sam za otprilike 1 mesec da krenem da citam knjigu https://www.amazon.com/Advance...-Environment-3rd/dp/0321637739 posle te knjige planiram na graficko programiranje u C, tu cu morati da naucim SDL i OPENGL. Sve u svemu ja sam zadovoljan sa samim sobom jer uspevam da resim neke srednje nivoe CTF-ova. Inace hvala sto ste mi pomogli oko posla jer sam se uplasio zato sto nemam neki jak prosek u srednjoj 3.8(vrlo dobar), pa sam mislio da necu moci da se upisem ni na kakvu programersku, ali sam se raspitivao na netu i svi kazu da niko ne trazi diplomu, pa sam hteo ovde da pitam kako izgleda posao...
[ Whitewater @ 04.03.2019. 16:47 ] @
zamoli samo roditelje da te upise u neku sto laksu privatnu skolu da bi imao vise vremena da se posvetis sistemskom programiranju u Linuxu.
[ Ivan Dimkovic @ 04.03.2019. 18:46 ] @
Citat:
unique_:
@IvanDimkovic Zapravo radio sam dosta na usavrsavanju C koda tako sto sam igrao CTF challengove preko https://exploit.education/phoenix/ naravno bilo je tu i jos sajtova kao overthewire.org ... Posto koristim Linux hteo sam malo vise da naucim oko Kernela i odlucio sam za otprilike 1 mesec da krenem da citam knjigu https://www.amazon.com/Advance...-Environment-3rd/dp/0321637739 posle te knjige planiram na graficko programiranje u C, tu cu morati da naucim SDL i OPENGL. Sve u svemu ja sam zadovoljan sa samim sobom jer uspevam da resim neke srednje nivoe CTF-ova. Inace hvala sto ste mi pomogli oko posla jer sam se uplasio zato sto nemam neki jak prosek u srednjoj 3.8(vrlo dobar), pa sam mislio da necu moci da se upisem ni na kakvu programersku, ali sam se raspitivao na netu i svi kazu da niko ne trazi diplomu, pa sam hteo ovde da pitam kako izgleda posao...


Diplomu ne traze kad imas ekvivalentno radno iskustvo ili dokazano razbijas, sto bi znacilo da iza sebe imas vec neki poznati projekat.

Problem sa nemanjem skole ili ekivalentnog iskustva (posla) je sto ces najverovatnije biti eliminisan od strane HR droida koji veze sa programiranjem nemaju vec samo gledaju sta je stiklirano od neophodnih stvari, a obicno neophodna stvar za programerski posao jeste "diploma ili ekvivalentno radno iskustvo".

Zato ti je najbolja strategija da prvo zavrsis srednju a onda upises neki IT-orijentisani fax / visu skolu, mozda privatnu, ili kako se to vec zove sad u Srbiji (ljudi koji zive u Srbiji sigurno mogu da daju savet) i da za to vreme radis na nekim OSS projektima, mogu biti tvoji ili tudji - tako ces kad zavrsis vise/visoko obrazovanje imati i iskustvo i skolu.

Mozes alternativno da probas i da se probijes direktno, da apliciras na sto vise poslova pa te mozda neko pozove na intervju gde mozes da demonstriras prakticno znanje. Ali osim ako ti bas ne treba kinta, bolje se fokusiraj na paralelno skolovanje i usavrsavanje znanja, posto ces tako imati najbolje sanse za dobru startnu poziciju.

Treca alternativa je da probas da juris freelancing poslove prvo, pa da to koristis kao dokaz radnog iskustva, ali ne znam da li je to bolja varijanta, na faxu se svasta nauci sto ce ti mozda trebati u poslu plus ces imati pristup vecem broju poslodavaca.
[ Branimir Maksimovic @ 05.03.2019. 04:36 ] @
Citat:
unique_:
@IvanDimkovic Zapravo radio sam dosta na usavrsavanju C koda tako sto sam igrao CTF challengove preko https://exploit.education/phoenix/ naravno bilo je tu i jos sajtova kao overthewire.org ... Posto koristim Linux hteo sam malo vise da naucim oko Kernela i odlucio sam za otprilike 1 mesec da krenem da citam knjigu https://www.amazon.com/Advance...-Environment-3rd/dp/0321637739 posle te knjige planiram na graficko programiranje u C, tu cu morati da naucim SDL i OPENGL. Sve u svemu ja sam zadovoljan sa samim sobom jer uspevam da resim neke srednje nivoe CTF-ova. Inace hvala sto ste mi pomogli oko posla jer sam se uplasio zato sto nemam neki jak prosek u srednjoj 3.8(vrlo dobar), pa sam mislio da necu moci da se upisem ni na kakvu programersku, ali sam se raspitivao na netu i svi kazu da niko ne trazi diplomu, pa sam hteo ovde da pitam kako izgleda posao...


Nemoj da se zavaravas, nece te primeti bez iskustva i bez diplome. Ne traze diplomu onda kad si dobrano iskusan progamer i imas programesrkog staza. U svakom slucaju ponavljam diploma ti je prva referenca, a kao student mozes
da udjes u neku firmu da te stipendiraju....
[ Bradzorf012 @ 05.03.2019. 09:21 ] @
Pomoglo bi na primer da radiš neke svoje projekte i uploaduješ ih na github kao dokaz za iskustvo u odgovarajućem jeziku.

[Ovu poruku je menjao Bradzorf012 dana 05.03.2019. u 21:29 GMT+1]
[ unique_ @ 05.03.2019. 14:47 ] @
Je l' bi pomoglo da naprimer radim neke svoje projekte i uplodujem ih na github kao dokaz za iskustvo u tom jeziku?
[ Ivan Dimkovic @ 05.03.2019. 20:41 ] @
Pomoglo bi donekle ali ce ti i dalje biti tesko bez diplome i bez placenog radnog iskustva (osim ako ti neki od projekata ne postanu vrlo popularni i poznati sirom sveta, ali to je izuzetak a ne pravilo). Ako vec imas kod vredan publikovanja i zelis da to koristis kasnije kao referencu, gledaj da kod bude cist, sa testovima i dobro dokumentovan. Najbolje je da se pridrzavas nekih standarda (coding guidelines).

Osim ako nemas bas srece da nekoj firmi treba bas to sto si radio na svojim projektima, kod ce verovatno gledati jako povrsno ljudi kojima je posao da jure tipicne greske i lose dokumentovan kod, to sto je recimo brilijantno optimizovan vrlo verovatno nece biti primeceno osim ako bas nisi nesto debelo usavrsio i nekoj firmi bas to treba.

[ Whitewater @ 06.03.2019. 03:55 ] @
mislim da decka smara skola...
[ zigizig @ 06.03.2019. 05:20 ] @
Jos si mlad da bi napravio definitivnu odluku da postanes C programer.
Naravno to je sasvim moguce ali ipak je software engineering toliko postao sirok pojam da bi se vec sada ogranicio. Namerno kazem ogranicio jer jos nemas dovoljno iskustva i predstave o svim mogucnostima koje ti se pruzaju.
Ja sam se svojevremeno lozio na asembler i secam se prvog programcica koji sam rucno crack-ovao kroz assembler decompiler. Od tada sam promenio i pokusao toliko razlicitih stvari da mi je i tesko da kazem sta mi je omiljeni deo.

Ali jedna je stvar vazna, sto su neki vec spomenuli.

1. Zavrsi fakultet/visu/visoku skolu
Licno sam pomogao nekim ljudima da dodju do dobrih pozicija iako nemaju diplomu, ali sam se tek radom sa njima uverio u njihov vrhunski kvalitet i poslovnu etiku.
Sa druge strane ja ne bih uspeo u mojim planovima da nisam zavrsio skolu. Vec neko vreme ne zivim u Srbiji, posao me je odveo daleko, a bez obzira na moje iskustvo i znanje skola je u svim legalnim poslovima bila osnova.
Sistem funkcionise prilicno jednostavno. Neki izuzetci postoje, ali to je toliko retko da je najbolje da zaboravis bilo kakav razvojni put bez diplome.
Gledaj da to bude bachelor of science ili neki slican bachelor degree. Sve preko toga je jos bolje.
Takodje je mnogo vazno da se socijalizujes i naucis komunikaciji sa kolegama. Bez toga svaki posao ce ti biti tezak, a i mozes izgubiti posao.
Naravno ne govorim da ces u skoli nauciti sve ili deo onoga sto te interesuje, ali je uvod u posao jer ces tokom karijere morati da radisi mnogo stvari koje te u principu ne zanimaju ali su potrebne da bi se posao zavrsio i zaradila plata. Kada jednom budes planirao porodicu prioriteti ce ti se verovatno promeniti.

Sto se pitanja oko projekata i konkretnog rada tice, to je isto, ili skoro potpuno isto, u svim firmama.
Na prvom mestu postoji klijent koji ima potrebu za odredjenim software resenjem. Zatim management, business analysts i slicni uz pomoc senior/principal architect diskutuju sa klijentom (klijentskim timom) o potencijalnom resenju i implementaciji koja zadovoljava klijentske potrebe. Nakon toga se pravi POC (proof of concept) koji je malo pilot resenje da se pokaze kako bi to funkcionisalo.
Paralelno se pravi arhitektura/dizajn samog resenja, procenjuje ukupno vreme, dobija se odobrenje od klijenta i potpisuje SOW (statement of work) ugovor.
Nakon toga arhitekte u saradnji sa development team leads i project managers razlazu projekat na delove/module, koji se zatim razlazu na osnovne taskove, radi se individualna estimacija potrebnog vremena i taskovi dodeljuju programerima.

Project managers organizuju sastanke, komuniciraju sa klijentom i vode racuna da se postuju rokovi, a vremenom mozda i nauce ko moze i da odradi teze i lakse taskove. Dodeljivanje taskova obicno radi tim lider koji moze i pravilno da napravi procenu potrebnog vremena i tezine samog taska/posla koji treba uraditi, a koji takodje i poznaje mogucnosti svakog clana tima.
U svakom slucaju, cak i u nekom haoticnom okruzenju postoji predstava ko sta moze da odradi.

Kao pocetniku niko ozbiljan ti nece dati zadatak koji ne mozes da uradis, ili za koji neces dobiti potrebnu pomoc. Nekada ti dodele nekog konkretno, a nekada malo ustanes sa stolice i obidjes starije kolege (ili ih odvedes na pivo i naucis vise nego za mesec dana u kancelariji :)


Mislim da si na dobrom putu, interesujes se za prave stvari, delujes ozbiljno i odgovorno, samo treba da nastavis dalje i ne dozvolis sebi da ne probas i nesto drugo od tehnologija. Meni je C pomogao da mogu da razumem svaki drugi programski jezik, bilo javascript, typescript, php, python, Java, C# itd.
Mozda da razmislis o konacnom cilju koji zelis da postignes. Mozda je to novi Linux kernel, a mozda i nesto sto ce te odvesti prema AI, Machine learning, Cloud itd. Sta god da bude samo guraj dalje.
Trenutno od svih inzenjerskih poslova ukupno software inzenjerstvo uzima preko 40%. Dok ti zavrsis fakultet to ce biti blizu 60%.
U svakom slucaju dobra prerspektiva.
[ Branimir Maksimovic @ 06.03.2019. 06:48 ] @
Citat:
unique_:
Je l' bi pomoglo da naprimer radim neke svoje projekte i uplodujem ih na github kao dokaz za iskustvo u tom jeziku?


Mozda bi to privuklo nekog regrutera da te pozove na intervju. Nego, mozes da se oprobas u frilensovanju...
[ Whitewater @ 06.03.2019. 07:36 ] @
Citat:
zigizig
1. Zavrsi fakultet/visu/visoku skolu

Mislim da si na dobrom putu, interesujes se za prave stvari, delujes ozbiljno i odgovorno, samo treba da nastavis dalje i ne dozvolis sebi da ne probas i nesto drugo od tehnologija. Meni je C pomogao da mogu da razumem svaki drugi programski jezik, bilo javascript, typescript, php, python, Java, C# itd.
Mozda da razmislis o konacnom cilju koji zelis da postignes. Mozda je to novi Linux kernel, a mozda i nesto sto ce te odvesti prema AI, Machine learning, Cloud itd. Sta god da bude samo guraj dalje.
Trenutno od svih inzenjerskih poslova ukupno software inzenjerstvo uzima preko 40%. Dok ti zavrsis fakultet to ce biti blizu 60%.
U svakom slucaju dobra prerspektiva.


3.80 u osnovnoj skoli to je realno trojkas ili dobras kako se govorilo. Tehnicki 3.80 je vrlo dobar, ali vrlo dobar u smislu kao sto je mart zimski mesec, a septembar letnji, dok je jun prolecni, decembar jesenji mesec. Dakle nisi bas za skolu to se odmah vidi. Mislim da bi ti ambicije da se uhvatis u kostac sa nekim monstrumom srpskog obrazovanja tipa ETF PMF bilo nepromisljen potez.

Da svakako bih zavrsio osnovnu na tom mestu, zatim i neku srednju jer i to ce jos malo biti obavezno, nazalost sistem mora da stancuje ljude, a nastavnici moraju negde da tupe K.... Verovatno za vecinu poslova u IT nije potreban fax, nazalost kao sto vidis taj orkestar stari kombinacije kvari jer slucajno su momci stari vrhovni ziri. Ako su dakle tvog buduceg sefa je6ali na faxu naravno da ti nece dozovliti da mu budes pametnjakovic koji je zjb sistem i hoce sa srednjom da radi. Ne ide to tako.

Dakle posle toga gledaj da upises neki online ili dopisni bachelor na zapadu Engleska ili USA trogodisnji, nemoj ni da ides od kuce stedi novac i nesto najbolie tvome interesovanju. Faxovi na zapadu su bolji i laksi u smislu prijatniji od propalih srpskih fakulteta koji muce ljude do besvesti... planovi su azurirani, radices sa dokazanim strucnjacima, a ne frustriranim izdrkotinama i oni ce gledati da polozis i zavrsis da ides to pre da placas taxe a ne da te ruse...

ja bi to tako. Ustvari tako sam i uradio kad sam pobegao iz Srbije...
[ unique_ @ 06.03.2019. 13:27 ] @
Koji vi fax preporucujete?
P.s samo nemojte neke koji kostaju godinu 3000eu, nesto manje para:)
edit: I da li vredi onaj IT academy upisati oni kazu da garantuju posle njihove 1 god posao?
[ mjanjic @ 06.03.2019. 20:31 ] @
Ako neke stvari ne možeš da ukapiraš sam, džaba sve diplome, fakulteti i kursevi, jer gde god da nađeš posao, često ćeš rešavati probleme za koje nisi čuo na tim kursevima ili na fakultetu, ali na osnovu ranije stečenih znanja i iskustva moraš da osmisliš rešenje. Možda je rešenje takvog problema neko drugi već našao, ali ga nije postavio na Github, Stackoverflow ili negde drugde. A i kad bi za svaku stvar morao da tražiše nečije rešenje na internetu i na osnovu toga sastavljaš kod za zadati problem na poslu, svi bi mogli da budu programeri.

Ali, pisanje koda je samo jedan deo posla, postoji onaj bitniji i teži deo koji se uglavnom ne uči na tim kursevima, a ni na fakultetu iz predmeta direktno vezanih za IT. Zato oni koji su bežali od matematike, fizike ili bilo čega drugog gde se traži razvijena logika, nikad nisu mogli da postanu dobri programeri. Pritom ne mislim na neku visoku matematiku, integrale, diferencijalne jenačine ili tako nešto, nego mislim na onu osnovnu matematiku, praktično ono što se uči u osnovnoj školi.


Recimo, evo iz iskustva jedna situacija, nije baš matematika iz osnovne škole, ali se uči na fakultetima: kod jednog problema "programer" množi dve matrice tako što za svaki element rezultujuće matrice množi vrstu prve sa kolonom druge matrice (kao vektore, svaki element sa svakim elementom, i ti proizvodi se saberu, što je ispravan način); kod drugog problema, množi vrstu prve sa vrstom druge matrice (što je, naravno, netačno)!
I ne radi se o kodu, nego o "matematičkom" rešenju, tj. o postupku ispisanom na papiru za konkretne primere množenja matrica.

Taj "programer" je položio sve matematike i druge predmete, ali nije razvio nikakvu logiku niti ispravno razmišljanje. Moguće su greške u brzini pri množenju i sličnim operacijama, ali ovakva greška se ne može napraviti "slučajno" ili "u brzini".

Ili drugi primer: "programer" sa diplomom IT-a ne zna vrednosti sinusa i kosinusa za karakteristične uglove: 30°, 45°, 60°, a tek treba da polaže IT predmet u kome se za rešenja nekih problema koriste Furijeovi redovi. Može on da prođe tehnički intervju tako što nauči neke stvari napamet, ali će napredovanje u poslu biti veoma sporo i teško.
Jer poznavanje određene tehnologije, programskoj jezika, platforme i sl. je samo poznavanje alata koji se koristi da se reši neki problem. To je slično kao poznavati rad sa čekićem i dletom, ali to nikako nije dovoljno da se izrezbari reljef u drvetu prema zahtevu klijenta.

To "rezbarenje" u programiranju se ne može naučiti na nekom skraćenom kursu, a ni na fakultetu ako se ne radi samostalno ili ako se neke bitne stvari preskoče ili polože na prepisivanje. Takav "programer" može da radi samo "grube radove", npr. kod obrade kamena može da radi u kamenolomu, ali nikako u radionici gde se od manjih komada kamena klešu biste, statue, ili reljefi određenih geometrijskih oblika.
[ zigizig @ 06.03.2019. 20:59 ] @
@unique_

Posle 10+ godina sam slucajno dosao ponovo na ovaj portal i eto odmah teme za razgovor :)

Dobio si dosta saveta, i neka prilicno oprecna misljenja.
Razumem zasto jer sam i sam odrastao u Srbiji i trebalo mi je vremena da razumem kako svet funkcionise. Godine negativne selekcije u drustvu stvore otpor prema sistemu.
Ja ti govorim kao neko ko ima prilike da radi i upoznaje neke od vodecih svetskih strucnjaka iz raznih oblasti, i mladih i starih. Sam nisam zavrsio ni ETF ni PMF i slazem se da dosta toga treba da se unapredi u nasem skolstvu. Ali analiticki pristup i razmisljanje se ne dobija trazenjem precica.
Ako jednog dana zelis da proracunavas putanju svemirske rakete u nizim slojevima vazdusnog omotaca za SpaceX, moraces da ozbiljno ucis.
Pogledaj malo online kakvi su intervju testovi za programera u google, microsoft itd.

Reci da je fakultet put matorih izlapelih profesora nece doci od formiranog strucnjaka. Takvi 'matori izlapeli profesori' i dalje predaju na MIT i slicnim fakultetima, i za njihove studente se grabe najjace svetske korporacije.
Nemoj da gledas nisko, ciljaj visoko. Postavi sebi visoke standarde. Ako si dobar mozes dobiti i stipendiju nekog svetskog univerziteta.

Uostalom ima lep savet od Bill Gates-a. Ako mislis da ti je profesor tezak, cekaj da dobijes sefa!
Tvoj trenutni prosek ocena nista ne znaci ako imas zelju da uspes.
Svejedno sta upises (etf ili it academy) bez dosta ucenja nece biti rezultata. Licno mislim PMF, ETF, FON, VISER(nekad visa elektrotehnicka)... ali zasto ne i neku privatnu (mada nemam tu mnogo informacija).

Karakter se gradi strpljenjem i radom. U programiranju ti treba i jedno i drugo.
Poznajem mladog programera kojem sam pomagao u pocetku, zavrsio je 6 meseci kurs iz programiranja i sada radi u Amazon-u. Mozda ce ti njegov put odgovarati, ali ti si rodjen u Srbiji i prvo se navikni da ces morati i vise i teze da radis da bi se dokazao.

Vecina nasih skola/fakulteta je priznata na zapadu i moze se lako nostrifikovati u ekvivalent bachelor of science na primer.

Samo te molim jedno. Budi zahvalan roditeljima, buducim profesorima i kolegama sto imas priliku da se bavis strukom koju volis.
Nasa zemlja jeste mala ali imamo veliiki potencijal takodje zahvaljujuci ljudima koji su ulozili trud da mladima stvore uslove.
Zasto mislis da se toliko stranih firmi otvara u Srbiji, pored tolikog sveta(cela Srbija moze da stane u predgradje svake svetske metropole). Zato sto neki ljudi ne zaboravljaju odakle su i zele da pomognu.
Mozda i ti jednog dana budes jedan od njih.
[ Whitewater @ 06.03.2019. 21:39 ] @
Citat:
unique_:
Koji vi fax preporucujete?
P.s samo nemojte neke koji kostaju godinu 3000eu, nesto manje para:)
edit: I da li vredi onaj IT academy upisati oni kazu da garantuju posle njihove 1 god posao?


ne mogu to da ti kazem
jer ne poznajem prilike u Srbiji.... Pretrazi malo i USA univerzitete ako si talenat u nekoj oblasti a to imas sanse da budes zbog ogromne strasti mozda ubodes i neku stipendiju. Imas 4 godine da skujes plan.

....

za druge,

naravno da ja nemam nista protiv fax-a, ali posao sam od pretpostavke da decko ne voli da streba "3.80"

u moje vreme on bi u Srbiji definitvo bio igubljen za ma kakav akademski pokusaj osim eventualnouciteljski fakultet u Somboru ili VEKS uz rad. Mozda se sad nesto promenilo ?

[ Branimir Maksimovic @ 07.03.2019. 05:21 ] @
"Poznajem mladog programera kojem sam pomagao u pocetku, zavrsio je 6 meseci kurs iz programiranja i sada radi u Amazon-u"

Koliko godina ima?
[ Whitewater @ 07.03.2019. 06:14 ] @
rekao je mlad, danas su 40te 20te a 50te 30te
[ Branimir Maksimovic @ 07.03.2019. 06:24 ] @
Pazi mlad programer nema veze sa godinama. Ako je neko isao na kurs moze da ima i preko 30 godina. Znam gro ETF-ovaca koji su se lako presaltali na programiranje.
[ Whitewater @ 07.03.2019. 07:19 ] @
da slazem se ako se misli mlad u smislu novajlija programer. Da, teoretski moze da ima i 62 godina i da je upravo poceo da programira...
[ zigizig @ 07.03.2019. 15:48 ] @
Citat:

Koliko godina ima?


Mislim izmedju 23-28.
Istina bavio se WP developmentom kao frontend dev i imao svoj startup.
Napredak je napravio nakon dev bootcamp od 6 meseci.