Programiranje — put od juniora do profesionalca

Mnoge poente članka su primenjive i na druge profesije, tako da ako želite da od početne tačke postanete izuzetni i u svom ne-programerskom poslu nastavite da čitate, ili pošaljite link nekome kome će biti koristan.

Milan Vukoje
09/01/2015

Pre desetak godina sam imao mnoga, mnoga pitanja i sumnje u vezi sa programiranjem. Kako programiranje izgleda na velikim projektima u stvarnom svetu? Da li je teško? Hoću li biti iole dobar u tome?

Tokom prethodnih nekoliko meseci sam nadgledao talentovane programere juniore u mojoj firmi od kojih sam počeo da očekujem velike stvari. To iskustvo me je motivisalo da napišem ovaj članak i da ga podelim sa mladim talentima sa kojima ću, nadam se, raditi u bliskoj budućnosti.

Mnoge poente članka su primenjive i na druge profesije, tako da ako želite da od početne tačke postanete izuzetni i u svom ne-programerskom poslu nastavite da čitate, ili pošaljite link nekome kome će biti koristan.

Uči, uči, uči

Naučićeš neke stvari na fakultetu, ali one neće biti dovoljne da te učine izuzetno dobrim u tome što radiš ili da te učine stručnjakom u svom polju. Trebalo bi da nastaviš da učiš nove stvari konstantno zato što je tehnologija kompleksna i stalno se menja. Za svaku temu koja te zanima postoji barem jedna fenomenalna knjiga puna znanja.

Jedan prijatelj mi je svojevremeno rekao: “ako pročitam 10 stranica neke IT knjige svaki dan, zamisli koliko sam toga pročitao za nekoliko godina i šta ću sve znati. Naravno, nisam mogao da održim ovakav tempo ali uvek sam forsirao sebe da puno čitam. Održavam javnu listu stvari koje čitam kao CV i motivaciju da nastavim.

Tehnički blogovi postaju glavni izvor informacija i sve češće se dešava da ljudi objave knjigu rafinišući sadržaj prethodno objavljen na njihovom blogu. Stoga uzmite svoj omiljeni RSS čitač i krenite da gradite svoju kolekciju fidova koja će vas držati u toku.

Za početak, evo nekoliko mojih favorita:

Odličan programer postaješ u slobodno vreme

Formalno obrazovanje je dobro, ali ne i dovoljno. Radno iskustvo je neophodno, ali napraduješ samo kroz stvarne probleme koje sam rešiš za svojim stolom. Treba puno vremena i strasti da dublje zađeš u probleme i dođeš do onih eureka momenata. Nemoj očekivati od drugih, od profesora ili kolega, da te nauče da programiraš.

Ovo ne znači da više nećeš imati slobodno vreme. Samo znači da će programiranje biti jedan od tvojih hobija i da ćeš smarati svoje prijatelje ne-programere svojim tehničkim razgovorima.

Nauči da pišeš kod

Kao programer, najveći deo svog radnog dana ćeš buljiti u editor i pisati kod. Kod treba da pišeš kao profesionalac.

Neki programeri smatraju da su arhitektura i fensi paterni ono što je važno, a da je kod tek nešto između, ali ja se nikako ne bih složio sa time. Nikada nisam video aplikaciju sa dobrom arhitekturom i šugavim kodom.

Nedostatak vremena je čest izgovor za pisanje lošeg koda. Izbegavaj izgovore. Kada jednom ovladaš veštinom pisanja čistog koda to će ti postati prirodna stvar a ne cimanje.

Nego, kako da pišeš kod kao profesionalac? Tako što ćeš pročitati knjigu! Ja sam pročitao Refactoring Martina Faulera, ali sam čuo i da su Clean Code i Code Complete takođe odlične. I dalje se sećam kako mi je na fakultetu jedan stariji lik rekao da ću kada pročitam Refactoring postati duplo bolji programer nego što sam bio. I dan danas verujem da je bio u pravu.

Takođe, postoje konvencije za kodiranje i alati za analizu koda za različite platforme koje mogu da budu vrlo praktične. Zašto biste trošili vreme i energiju na trivijalne odluke kada možete da pratite najbolje prakse.

Da li je teško?

Pa, može biti, kada se stvari ne rade na pravi način.

Možeš na kraju završiti sa aplikacijom koju je jako teško održavati usled velike kompleksnosti i manjka testova ili dokumentacije. S druge strane, kada se razvoj izvede kako treba, programiranje više postaje zabavna igra nego posao. Kako postaješ bolji tako ćeš praviti i bolje aplikacije i tvoj posao će postati lakši.

Ponekad ćeš naići na problem koji naprosto ne možeš da rešiš. U tom slučaju ćeš ga ili rešiti i osećati se kao da si na vrhu sveta, ili će ga neko rešiti za tebe i ti ćeš naučiti nešto od njega ili nje.

Radi teške stvari

Neki ljudi konstantno beže od teških taskova.

Moj savet je da radite upravo suprotno — tražite najteže. Teški problemi će od vas napraviti čvrste programere i ubrzaće vaše učenje. Takođe, ako se prihvatate teških stvari nikada vam neće biti dosadno na poslu.

OK je biti uplašen

I tako vremenom počneš da se osećaš ugodno u ulozi programera dok uspešno završavaš svoje taskove. Taj osećaj prija.

Ali onda jednog dana stigne jedan novi task. Novi task zahteva nove tehnologije, alate i poznavanje domena u kome će proizvod biti korišćen, o kome ne znaš ništa. Postaješ uplašen. Počinješ da sumnjaš da ćeš moći da uradiš task.

OK je biti uplašen. Jedina razlika između tebe i iskusnijeg kolege je u tome što je on do sada već bio uplašen mnogo puta i verovatno je uspešno završavao takve taskove i sada veruje u sebe. Svako se ponekad oseća kao prevarant.

Nije sve u kodu

Pisanje koda nije sve što čini programera. Tvoj posao je da stvaraš uspešan softver. Da bi to radio moraćeš da testiraš, pišeš specifikacije, pričaš sa mušterijama, organizuješ taskove, instaliraš mašine, motivišeš i mentorišeš kolege… Čak i da nosiš opremu i još mnogo, mnogo toga drugog… Nikada nemoj potceniti vrednost znanja o domenu za koji se pravi aplikacija. Može biti vrednije čak i od samog programiranja.

Uvek postoje i oni likovi koji insistiraju da je njihov posao samo da čukaju kod i da ih ne zanima ništa o poslovnom domenu ili ičemu drugom, no to su uglavnom drkadžije.

Nemoj biti drkadžija

Zato što niko ne želi da radi sa drkadžijom. Ako se ponašaš kao drkadžija sam ćeš rešavati probleme iako je to mnogo lakše raditi kada nisi sam. Budi skroman programer.

Vukoje je ovaj post originalno objavio na engleskom ovde.

Milan Vukoje

Objavio/la članak.

petak, 9. Januar, 2015.

IT Industrija

🔥 Najčitanije

Dejanov web

utorak, 28. April, 2020.

Ja sam samozvani i samostalni programer, ali nije lako, pogotovo pozicioniranje sajta na Google. A jos nemam strpljena da cekam. :) I slazem se nije sve u kodu biti covek je najvaznije

Dalibor

petak, 18. Oktobar, 2019.

Bavim se internet marketingom ali vec par godina kad god imam vreme pravim sajtove male aplikacije i zaista uzivam u tome. Zelja mi je da se time bavin ali 40 godina, deca, kredit za stan pa i konstatna sumnja dal znam dovoljno za rad u firmi me uvek odvrate od te ideje.

Vladimir Simović

sreda, 12. April, 2017.

Kao kolega slažem se u potpunosti a pogotovo kod onoga dela "Nije sve u kodu" 100% tačno

Lazar

ponedeljak, 2. Januar, 2017.

Hvala ti puno na savetima dobio sam ponudu da budem progamer i nzm nista o tome ali nadam se da ce sve biti OK hvala

Gavro

petak, 18. Novembar, 2016.

Fine reading, Sir!

Mina

petak, 11. Novembar, 2016.

Divnooo... na samom sam pocetku tako da mi ovo sve dosta znaci...kod mene je problem sto studiram i radim u isto vreme i to me plasi...jer nemam mnogo vremena da sedim za racunarom i vezbam...ako znate jos nekih dodatnih stvari koje mi mogu olaksati molim da napisete u komentaru...trenutno ucim javu...ne znam sta bi bilo dobro da uporedo ucim sto bi mi mozda olaksalo ucenje trenutnog. Hvala za motivaciju ??

Lina

nedelja, 9. Oktobar, 2016.

Hvala puno,ovaj tekst je upravo ono sto mi je trebalo!

sava

ponedeljak, 22. Februar, 2016.

Odlican clanak, svaka cast!

Sasa

četvrtak, 1. Oktobar, 2015.

Bravo Martine!

martin

utorak, 27. Januar, 2015.

Ako se dobar programer postaje u slobodno vreme zaista ne znam kada se postaje dobar tata, brat, prijatelj, padobranac, sportista itd?

Pavel Rogala

ponedeljak, 12. Januar, 2015.

+1 za blog.codinghorror.com :D Cisto zlato

Aleksandar

ponedeljak, 12. Januar, 2015.

Jako poucan i motivisuci clanak. S obzirom na to da sam ne junior, vec pionir web developer, ovaj clanak mi je drasticno digao moral. Samo ipak mislim da je mnogo bitnije prakticno iskustvo..Na mom primeru je to najbolje pokazano jer sam procitao mnogo knjiga, ispite na faxu polozio sa visokim ocenama, radio sajtove i sebi i kolegama, ali s' obzirom na manjak iskustva sa realnim klijentima, sa radom u firmi (posto vec godinama radim u ISP okruzenju kao network administrator), ali je ipak bitnije i presudno iskustvo u radu na ozbiljnim projektima, sa realnim klijentima i tu se stice najvece znanje..

Milan Vukoje

ponedeljak, 12. Januar, 2015.

@utvara Apsolutno si u pravu. Nisam se jasno izjasnio. Arhitektura je naravno bitna ali bitan je i kod. Vremenom mi se sve više čini da je kod čak bitniji od arhitekture jer želja za urednim i smislenim kodom sam po sebi izrodi dobru akrhitekturu.

utvara

ponedeljak, 12. Januar, 2015.

"Neki programeri smatraju da su arhitektura i fensi paterni ono što je važno, a da je kod tek nešto između, ali ja se nikako ne bih složio sa time." Jedna od retkih stvari sa kojom se ne slažem u tekstu. Manje više da li su paterni fensi, oni su neophodni u razvoju iole većeg projekta na kome radi više od dva programera. Šugava arhitektura može da postane kamen spoticanja za projekat, i da uspori razvoj u slučajevima brzih promena zahteva. Ne treba robovati paternima niti u svakoj liniji tražiti apstrakciju, ali mislim da nije gubljenje vremena pročitati Design patterns ( http://en.wikipedia.org/wiki/Design_Patterns ).

Milan Vukoje

petak, 9. Januar, 2015.

@Miloš Najbolje je naravno imati usavršavanje i na poslu i kod kuće. Mislim da koliko god da kompanija investira u usavršavanje, ako se komp ne pali kod kuće neće biti ozbiljnog napretka.

Neša

petak, 9. Januar, 2015.

Što se tiče programiranja, imam osećaj da mi malo fali da sve shvatim. Voleo bih da nađem neku firmu gde bi išao na praksu dok mi sve ne bude jasno.

Miloš

petak, 9. Januar, 2015.

Ovo važi za svaku profesiju. Možda se ne slažem sa ovim da odličan programer (ili bilo koji profesionalac) postaješ u slobodno vreme. Verujem da poslovi i kompanije treba da budu takve i da teže tome da se usavršavaš i na radnom mestu, a ne samo van njega.