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 - 9. Januar, 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.

Učestvuj u drugom velikom istraživanju srpske programerske scene →