Na blogu, čiji je naziv predug i predosadan za navođenje, navedeno je 6 najboljih programerskih navika (u naslovu se spominje 5), a kako mi se čini da su natuknice odlične, a tekst nešto manje, onda sam odlučio da ih prepričam na svoj način. :-)
Na greškama se uči. Kažu neki da je pametnije učiti na tuđim greškama, ali vlastite greške imaju bolji učinak. Kod greške je vrlo važno otkriti kako je došlo do nje i razumijeti okolnosti pod kojima je nastala. Nije dobro kad se greške javljaju zbog toga jer programer nije predvidio i obradio neregularne slučajeve (neočekivane unose). Poseban su problem programeri koji ne priznaju vlastite greške i svaki otkriveni bug smatraju napadom ne sebe. Bugovi su sastavni dio programerskog posla i svaki bi programer trebao imati razrađenu proceduru za njihovo rješavanje i preventivu. Poricanje to sigurno nije.
Najbolja rješenja su najjednostavnija rješenja. Ako je neki problem rješen na kompliciran način sasvim sigurno je pogrešno riješen. Jednostavno je u većini slučajeva i najbolje. Najveći problem je što je ponekad do jednostavnog teže doći. Tu su nam problematični programeri koji vole komplicirati jer jednostavna rješenja ne smatraju dostojnim njihove genijalnosti ili jednostavno ne znaju stvari rješavati na jednostavan način.
Komunikacija treba biti jednostavna i razumljiva. Programer treba znati što traži od korisnika i navesti korisnika da mu to kaže na najjednostavniji način. Problematični su oni korisnici koji pokušavaju programeru reći kako oni misle da bi problem trebalo riješiti. Ja sam korisnicima uvijek znao govoriti da zanemare tehnikalije te da mi pokažu kako oni rješavaju taj problem na papiru, bez računala. Nije potrebno da programeri korisnika zamaraju s tehničkim detaljima, to njih može samo zbuniti. Korisniku je važan ulaz i izlaz, crna kutija između njih je stvar programera.
Učenje novih tehnologija, metodologija i alata se podrazumijeva. Neki programeri su odabrali put u jednom pravcu i smatraju da ne trebaju učiti ništa izvan tog puta. Uvijek je dobro učiti nove stvari, čak i ako nisu u direktnoj vezi s specijalnošću nekog programera. Nešto što ste vidjeli u drugom dvorištu može vam dati ideju kako da riješite problem u svojem.
Oblačenje u tuđu kožu. Ako radite program za nekog korisnika, a smatrate da ne morate znati ništa o njegovom poslu, onda ste u krivu. Programer se mora ponekad naći u koži korisnika kako bi bolje razumio problem i na taj ga način bolje riješio. Iako programeri izrađuju programe, oni nastaju i rade se za korisnike i ne bi im trebalo biti ispod časti da snime stvari i iz korisničke perspektive.
Podučavanje. Ako ste sebični programeri i smatrate da je vaše znanje predragocjeno da bi ga samo tako dijelili s drugima, onda znajte da podučavanjem pomažete ne samo drugima nego i sebi. Kad drugima prenosite neko znanje onda ga morate uobličiti, sistematizirati, srediti. Tako možete otkriti neke nedostatke u vašem znanju ili u metodama. Pametan učenik će vam postavljati pametna pitanja. Možda ste preduboko ušli u rutinu pa vam neka jednostavna rješenja nisu tako očita kao nekome tko to gleda sa strane ili iz druge perspektive.
U tekstu govorim o programerima, ali zapravo mislim na one koji su stepenicu iznad toga i nazivaju ih developerima. Ne znam da li u hrvatskom postoji neka prikladna riječ za njih.
Koje su tri glavne osobine dobrog programera?
Mislim da je Michelangelo rekao da on ne kipari, nego samo miče suvišne dijelove s kamena. Ista stvar je i kod programiranja: programiranje nije ništa drugo nego uklanjanje grešaka. A izrada svake aplikacije i započinje greškom: koda uopće ni nema! :)