Zanimanje programera zahtijeva određene vještine i znanja koja se ne odnose samo direktno na same programske jezike. Dobar stručnjak trebao bi imati predstavu o strukturi računara, znati engleski jezik, biti sposoban samostalno izvoditi matematičke proračune i graditi formule.
Znanje i razumijevanje terminologije
Nema posebnih kriterija koji zahtijeva bilo koji programer. Međutim, da biste bili uspješni i traženi u svom poslu, morate imati određena znanja i karakteristike.
Dobar programer bi trebao razumjeti što je niz, hash tablica i povezana lista. Stručnjak će biti upoznat s konceptima kao što su Fibonaccijeve gomile, širenje stabala, liste preskakanja, AVL stabla, itd. Ovisno o specijalizaciji, mora biti vješt u algoritmima za implementaciju zadataka, znati postupke pretraživanja, odabira, prosljeđivanja struktura podataka, graditi grafikone, matrice i biti upoznat s barem osnovnim principima dinamičkog programiranja.
Najvažnije je imati odgovarajuće znanje iz oblasti informatike i savladati određeni terminološki aparat.
Sistemski programer mora razumjeti svrhu kompajlera, razumjeti asembler, imati neko znanje o virtualnoj memoriji i strukturi koda operativnog sistema u cjelini; mora imati informacije o utičnicama, razumjeti rad internetskih mreža i mrežnih protokola.
Nivo znanja programskog jezika (PL)
Programer mora dobro vladati jezikom predmetnog područja u kojem se specijalizirao. Poznavanje PL pretpostavlja da ste u mogućnosti da koristite alate dostupne u njemu za rješavanje određenih problema. Uspješni stručnjak zna nekoliko programskih jezika i zna kako prilagoditi metode koje se koriste njegovim zadacima ili njegovoj specijalizaciji.
Programer mora proučiti ponašanje korisnika i od njega očekivati razne radnje i reakcije, koje se moraju implementirati u sučelje budućeg programa.
Znanje programera takođe je određeno njegovom specijalizacijom i profilom PL, kao i zadacima koje kroz njega sprovodi.
Na primjer, kada piše kod na Javi ili C #, mora znati korištene knjižnice, tipične programske situacije. Dobrog stručnjaka odlikuje sposobnost izbjegavanja ponavljajućih struktura u kodu i sposobnost stvaranja vlastitih programa u skladu s problemima koji se rješavaju u razvijenoj aplikaciji.
Komunikacijske vještine
Programer mora biti u stanju komunicirati i sa kupcima i sa kolegama. Veliki softverski projekti zahtijevaju od programera sposobnost interakcije i ispravnog izražavanja svojih misli i koncepta projekta.
Znanje stranog jezika za programera omogućava mu proučavanje razne neprevedene tehničke dokumentacije, kojih je jako puno na polju računarstva. Takođe, strani jezik omogućit će vam komunikaciju sa stranim kupcima i zarađivanje više.