Možete li Vi biti programer?

Kada netko razmišlja o promjeni karijere ili ga zanima razvoj softvera te što je potrebno znati za to, neizbježno se postavlja pitanje iz naslova.

Pa da ne duljimo, konačni odgovor je, ukoliko napišete program u kojem jedan promil programskog koda nije proporcionalan jednom promilu začina u podravkinoj juhi, hard disk se neće niti pokrenuti jer taj program koji ste napisali je obični program koji stavlja jednu kvačicu na četiri pitanja, a ne program koji radi jednu zadaću sa 2000 znakova pa računalo ne razumije tu vrst matematike. 🙂

Logično, zar ne?

Tako bi to vjerojatno objasnio gosp. Frka-Petešić ali pošto ja još nisam dosegao taj nivo stručnosti, pokušat ću to objasniti malo drugačije.

Programiranje kao osnovna ljudska vještina?

Kao predavač i profesor, podučavao sam mnoge „programere po prvi put.”

Dobra vijest je da sam rijetko našao studenta koji nije mogao naučiti programirati. Doživljavam to kao osnovnu ljudsku vještinu, baš poput čitanja, pisanja i računanja.

Svatko to može, to je dio naših ljudskih sposobnosti, ali svakako da se treba namučiti i potruditi.

Ipak, postoji par “simptoma” koji sigurno ukazuju na to da nećete biti dobri ili u najmanju ruku nećete uživati u poslu programera.

Tekst u nastavku pomoći će vam razlučiti hoćete li biti dobri u programiranju ili nećete.

Nedostatak znatiželje

Ako vam nedostaje znatiželje za računalima i načinom rada tehnologije, nikada nećete biti uspješni kao programer.

“Temeljni uvjet za učenje je aktivni interes za stvar koju učite.”

Ako nemate um koji je znatiželjan prema tehnologiji, nećete imati potrebnu energiju da ustrajete u učenju širokog i dubokog znanja potrebnog za biti uspješan programer.

Svijet IT-a je poput ogromnog oceana zanimljivih domena, međusobno povezanih ideja i mogućnosti koje mogu pobuditi maštu. Potrebna je unutarnja motivacija da biste željeli zaroniti i otkriti šta sve možete.

Pronađite svoju znatiželju i zapitajte se zanima li vas programiranje uistinu.

Ako je vaš iskreni odgovor „Ne“, idite i pronađite nešto što vas zanima. Uštedite si vrijeme i energiju.

S druge strane, ako je vaš odgovor “Da”, onda se prisilite pronaći nešto novo što prije niste primijetili, prepoznajte nepregledni ocean i zaronite malo dublje.

Nedostatak autonomije i snalažljivosti

Ako ne razvijete sposobnost samostalnog rješavanja problema, nikada nećete biti uspješni kao programer.

Bez sumnje, da biste bili uspješan programer, morate biti sigurni u vlastitu sposobnost učenja. Ovo je zapravo temeljna životna vještina – ako ste stariji od 18 godina, nitko vas nije dužan ništa naučiti. To je stvarnost. Na vama je da pronađete informacije i pomoć koje su vam potrebne da biste naučili što vam je važno.

U IT svijetu, sve potrebne informacije nalaze se na tom čarobnom mjestu poznatom kao internet. Ta divovska knjižnica ima jedan ogroman ulaz: Google. Saznanje da u Google možete jednostavno upisati što god želite i doći do potrebnih podataka prva je prepreka kada želite naučiti vještine potrebne za rad u IT-u.

Osim što ih je lako pronaći na Google-u, svi programski jezici imaju dokumentaciju i specifikacije koje su vrlo eksplicitne o načinu na koji taj jezik funkcionira. To je poput korištenja rječnika – kad vidite riječ koju ne prepoznajete, potražite je.

Najbrži i najpouzdaniji način da razvijete svoju vještinu programera je jednostavno gledanje tutoriala, video courseva, čitanje dokumentacije i primjena toga što ste naučili i pročitali. Tu je doslovno sve.

Upotrijebite resurse, prepoznajte da su svi odgovori koji su vam potrebni zaista dostupni. Kad imate pitanje, prisilite se da ga proguglate prije nego što pitate nekoga drugog za odgovor i provjerite dokumentaciju. Uštedite vrijeme drugima kada ste pokušali, ali uistinu niste uspjeli pronaći odgovor koji vam treba.

Nedostatak ustrajnosti pred problemom

Ako se lako predate pred problemima, nikada nećete biti uspješni kao programer.

Bit programiranja je rješavanje problema. To je cijeli razlog zašto su računala izumljena! Kad god započnete raditi na rješenju nekog problema u programiranju, naići ćete na čitav niz problema. Nakon što riješite problem, gotovo uvijek iza njega stoji još jedan problem. Napredujete, ali uvijek postoje novi problemi s kojima se morate suočiti.

Suočavanje s tim nizom problema može biti zastrašujuće i obeshrabrujuće. Ako smatrate da bi stvari trebale “jednostavno funkcionirati”, nećete imati energije da ustrajete kako se problemi nastavljaju i malo po malo ruše vašu emocionalnu odlučnost. Doslovno je vaš posao shvatiti zašto stvari ne funkcioniraju.

Iz mog iskustva u učionicama, obično postoje jedan ili dva studenta koji izgledaju kao da imaju problema s većim brojem problema nego drugi studenti – često sasvim slučajni i nejasni problemi. Uvijek podsjećam studente da što više problema imaju pred sobom, jer im se tako povećava mogućnost dubljeg i temeljitijeg učenja. Ako mogu steći razumijevanje kroz ove probleme, brzo će otkriti da su sigurniji u sebe jer su se suočili i riješili više problema od prosječnog studenta.

Morate prepoznati da problemi koji dolaze i nisu problemi, već zapravo izazovi. Svaki izazov s kojim se suočite i svladate daje vam dublje razumijevanje i bolju sposobnost suočavanja s novim izazovima i brzog rješavanja starih.

Nema osjećaja uspjeha u prevladavanju problema

Ako nakon rješavanja problema ne osjećate uzbuđenje i postignuće, nikada nećete biti uspješni kao programer.

Uz prethodni paragraf o odustajanju, vezan je i nedostatak  feel good osjećaja nakon što uspješno riješite neki problem ili zadatak. Kada ispravljanje programskih pogrešaka i problema postane traka za trčanje kojoj se čini da nikad neće završiti, izgubite dodir s uzbuđenjem koje dolazi u prevladavanju problema.

Zapravo postoji dopaminski udarac koji vam treba kada prevladate problem. To je slično iskustvu završetka razine u videoigri ili rješavanja izazova poput križaljke ili sudokua. Svi znamo da postoji dobar osjećaj koji proizlazi iz ustrajavanja u izazovu i konačne pobjede na kraju. Ali ako ste izgubili sposobnost da osjećate te osjećaje ili vam uopće uopće nije bilo stalo, nećete moći iskusiti radost koja dolazi od programiranja. Ako na programiranje gledate kao na brušenje gdje samo želite postići rezultat najlakše što možete, nikada uistinu nećete biti uspješan programer.

Proslavite svoje pobjede kad god riješite problem s kojim ste se borili, bez obzira koliko malen bio, uvijek se ponosite svojim postignućem, napravite pauzu i čestitajte si na dobro obavljenom poslu. Neka osjećaj uspjeha utone i energizira vas za sljedeći problem s kojim se suočavate.

Nestrpljivost oko učenja i razumijevanja

Ako ste nestrpljivi u učenju i očekujete da sve savladate brzo i bez napora, nikada nećete biti uspješni u programiranju.

Kao ljudi ograničena smo bića. Iako se naš svijet kreće sve brže i brže, a računala su velik uzrok tome, možemo se kretati samo onoliko brzo koliko možemo. Naš mozak radi određenom brzinom, a ovisno o našoj prošlosti, našim uvjerenjima, našim emocionalnim stanjima, našem zdravlju i slično, svi ćemo učiti i integrirati informacije različitim brzinama.

Svijet IT-a je poput nepreglednog oceana. Nikada nećete doći do kraja, nikada nećete doći do točke kada ste gospodar i nemate što drugo naučiti. Ako se preopteretite, krenete učiti 5 programskih jezika odjednom, time ćete dopustiti oceanu da vas svlada, uvijek ćete osjećati pritisak da sustignete druge i smatrati da nikad ne znate dovoljno. Ako ne možete prihvatiti ono što već znate, a zatim naučiti malo više, osjećat ćete se kao da nikamo ne idete i odustati.

Umjesto toga, trebate uživati ​​u putovanju učenja za sebe. Svako malo, znanja koje steknete ili nova vještina koju steknete, treba vas uzbuditi. Poput rješavanja problema, trebate si dopustiti da osjetite ponos zbog prepoznavanja da ste učinili korak naprijed, čak i ako je to mali.

Puno se toga može naučiti i put programiranja nikad ne završava. Ali znanje je kumulativno, zato se ponosite onim što znate i vjerujte da će svaki vaš trud u vašem učenju stvoriti snažne temelje znanja kamo god vas karijera vodila.

Dosada i umor od razmišljanja

Ako ste lijeni u svom razmišljanju i koncentrirano, usredotočeno razmišljanje vidite kao dosadan posao, nikada nećete uistinu biti uspješni u programiranju.

Programiranje je misaona aktivnost. Kao ljudi zaista dobro razmišljamo, ali stvarnost je takva da, iako prirodno provodimo cijeli dan radeći to, lijeni smo u razmišljanju. Sposobnost održavanja koncentriranog, usredotočenog napora na jednom problemu tijekom određenog razdoblja teška je ako na to niste navikli.

Simptomi toga uključuju prazno buljenje u ekran, osjećaj kako se oblak spušta na vaše misli, odgađanje problema, prebacivanje između tab-ova u web browseru i očajničko skeniranje StackOverflow-a za “odgovor”. To su znakovi da ste postigli mentalno ograničenje i da morate pronaći drugi put.

Tijekom programiranja umorit ćete se i razmišljanje doslovno sagorijeva fizičku energiju baš kao i vježbanje našeg tijela. Kad niste navikli na naprezanje mentalne energije potrebne za to, može vam biti teško ostati usredotočen. Ali to je baš kao da idete u teretanu, što više to radite, to ćete biti jači.

Vjerujte da je vaš mozak poput mišića – dok ga koristite, postaje bolji i učinkovitiji u razmišljanju. Kako sastavljate dijelove i razvijate mentalne pojmove, postaje mnogo lakše otkrivati ​​rješenja.

Nemogućnost da mislite svojom glavom

Ako očekujete da će drugi misliti umjesto vas i ne želite pogledati detalje vaše situacije, nikada nećete biti istinski uspješan programer.

Kad učite nešto novo, lako je osjećati se kao da vam nedostaje znanja i iskustva da biste imali vlastito mišljenje. Poduzimanje inicijative ili činjenje/izgovaranje pogrešne tvrdnje pred iskusnim ljudima čini se rizičnim.

Svima nam je svojstven strah da pogriješimo. Kad vam strah od pogreške onemogući istraživanje i znatiželju, tada ugušite sposobnost razvijanja istinskog znanja, znanja stečenog iskustvom i “neuspjehom”. Kada se trebate osloniti na mišljenje “gurua”, popularnog blogera, najbolju praksu ili odgovor iz “udžbenika”, tada niste uistinu integrirali radno znanje programiranja.

Morate razviti vlastito mišljenje o tome što djeluje, a što ne. Morate razumjeti zašto mislite da vaše rješenje djeluje i koje su koristi. Trebate razviti nijansiranu perspektivu koja nadilazi ono što je očito. Morate biti u stanju “argumentirati” svoju stranu.

Razmislite o problemu koji rješavate kroz vlastito iskustvo i vještine kritičkog mišljenja, razvijte vlastite perspektive. Nagađajte razumno, zauzmite stav i budite spremni promijeniti se kad nove informacije izađu na vidjelo.

Usko i neorganizirano razmišljanje

Ako ste kruti u svom razmišljanju i imate poteškoća s održavanjem programskog koda organiziranim ili imate poteškoće da svoje misli organizirate i usredotočite, nikada nećete biti uspješni u programiranju.

Dvije su krajnosti koje ponekad vidim kod studenata. Prvi je kruti i uski pristup razmišljanju. Ovaj stav odbija pomoć i unatoč povratnim informacijama, ne mijenja se. Stvari se gledaju samo iz jedne perspektive, a prijedlozi se zanemaruju.

Druga krajnost koju vidim je neorganizirano razmišljanje. Čini se da studenti stvari kompliciraju više nego što je potrebno, njihov je programski kôd neuredan i teško ga je slijediti. Premišljaju o problemima i pišu stotinu linija koda, iako bi deset bilo dovoljno.

Kad se ta dva načina razmišljanja kombiniraju, rezultat je čvrst pristup programiranju, poput pristupa grube sile koji dovodi do slojeva i slojeva popravaka i “hakiranja.” Potrebna je sposobnost vraćanja prvom rješenju, ponovnoj procjeni, odustajanje od početnog pristupa i reorganizacija rada.

Ne moći vidjeti druge mogućnosti ili primiti povratne informacije koči sposobnost rasta i poboljšanja. Neorganiziranost vas usporava i sprječava da vidite obrasce koji bi inače bili očiti. I ukupna kvaliteta vašeg rada je umanjena.

Morate se povući korak unatrag i pogledati širu sliku kako pristupate stvarima. Kako to možete učiniti bolje? Možete li nešto popraviti kako biste si olakšali život? Što propuštate što bi vam moglo pomoći?

Potreban vam je “točan” odgovor umjesto prepoznavanja spektra “dobrih” i “loših” odgovora

Ako krajnji cilj programiranja vidite kao pronalaženje pravog rješenja, a ne kao spektar rješenja, nikada nećete biti uspješni kao programer.

Kad započinju učiti vještine ili programiranje, studenti često žele znati je li ono što su učinili “ispravno”. Odgovor je uvijek “ovisi”.

Računalna znanost je znanost o procjeni kompromisa. S obzirom na različite okolnosti, koji bi bio bolji put? Sve ovisi o okolnostima i ciljevima. Kada programiranje vidite kao test s točnim ili pogrešnim odgovorom, gubite iz vida širu sliku i odričete se svoje kreativnosti. Svaki odgovor može biti “točan” ako ga možete obrazložiti s obzirom na okolnosti.

Stvarnost je takva da je programiranje više poput pisanja pjesama ili kratkih priča (ili potencijalno romana ako su programi veliki). U vašem se kodu mogu vidjeti estetika i ljepota, a ponekad ih prepoznajete samo vi i drugi programeri. Razlozi zbog kojih ste se odlučili za svoje rješenje i način na koji ste zamislili svoj odgovor važniji su od „pravog načina“ ili „pogrešnog načina.” Imati um umjetnika omogućuje vam igranje s opcijama i mogućnostima, umjesto da mislite kako postoji samo jedan način. U tome je ljepota programiranja, postoji mnogo načina za rješavanje problema, a razmatranje različitih mogućnosti dovodi do osjećaja koji je način najbolji za situaciju.

Budite kreativni, shvatite da postoje brojni načini za rješavanje problema, a kroz iskustvo i izloženost tim problemima ćete razviti nijansirano razumijevanje o tome koja se rješenja osjećaju bolje od drugih. Gledajući široku sliku, zamišljajući različite mogućnosti i vjerujući svojim osjećajima dovest ćete do boljih rješenja koja zadovoljavaju.

Ne obraćanje pažnje na detalje

Ako prikrivate detalje i previdite sitnice, nikada nećete biti istinski uspješni programer.

Računala su precizni strojevi. Što se tiče programiranja, trebate pružiti potrebne naredbe upravo onako kako računalo očekuje. Ako to ne učinite, ništa neće uspjeti. Ne postoji sredina u kojoj stvari uglavnom funkcioniraju – ili se dogodi ili ne.

Svaki razmak, zagrada ili dvotočka su bitni. Kad računalo uzvrati poruku o pogrešci, morate je moći pogledati i razumjeti točno što vam govori. Stvarnost je takva da ako propustite takve detalje, mogli biste satima tragati za problemom koji je doslovno bio rezultat pogreške u tipkanju.

Sjećam se da sam jednom na početku svog rada kao programer, uspio srušiti aplikaciju na produkciji pa su dvojica kolega zajedno samnom izgubile pola dana svog vremena zbog toga što sam umjesto „WiFi“ u programskom kodu napisao „Wifi“.

Obratite pažnju na detalje, detalji su važni i to morate prihvatiti. Jednom kad to učinite, možete početi uvijek skenirati svoj programski kod za bilo što što vam nije na mjestu. Možete organizirati svoj programski kôd i koristiti alate koji vam pomažu da brzo prepoznate probleme.

U koliko stavki ste se pronašli?

Ako pogledate ovaj prethodni popis i prepoznate neke stavke u sebi, budite uvjereni, uistinu ćete se namučiti tijekom programiranja.  Ali, ako ste i dalje predani svom cilju da postanete programer, lako se možete suočiti s tim problemima i promijeniti se.

Ukoliko ste i dalje skeptični i mislite da niste sposobni za postati programer, pogledajte ovu preslatku bakicu iz Japana, koja je u 81. godini života naučila programirati i izbacila svoju prvu mobilnu aplikaciju na tržište:

Podijeli

O autoru

Mensur Duraković