Pragmatični programer, izdanje na 20-u godišnjicu

Kažu da je knjiga Pragmatični programer jedna od onih koje svaki programer ili bilo ko ko učestvuje u industriji razvoja softvera mora pročitati. U klubu knjige kojeg imam priliku voditi u firmi u kojoj radim, prošla knjiga je bila upravo ova. Pisali smo s vremena na vrijeme neka zapažanja na ovom blogu, a ovaj članak je pregled cjelokupne knjige, kao završni članak u seriji.

Uopšteno

Prije nego se osvrnemo na knjigu i damo konačni zaključak valja kazati da je knjiga pisana na veoma visokom, akademskom, apstraktnom nivou. Ogroman je broj termina i tehnika spomenutih u knjizi za koje je doista neophodno dodatno istraživanje kako bi se razumjelo o čemu autori govore. Stoga, iako mnogi knjigu stavljaju na listu must read, lično, rekao bih da je ona sama više kao vodič uz pomoć kog će se trebati pročitati još barem 10-ak, 15 drugih knjiga koje pobliže objašnjavaju termine i tehnike.

Ono što knjigu tu i tamo čini veoma interesantnom su citati i upadice kroz savjete, poput:

“Najveća od svih slabosti je strah da ne ispadneš slab”

Žak Benjine Bouse (Jacques-Bénigne Bossuet)

“Umjesto izgovora, ponudite opcije.”

Ovi savjeti ili principi su lijepi za izgovoriti, ali su životna filozofija kada, kako i u kojoj  mjeri ih primijeniti. Stoga smatram da su slični savjeti kontraproduktivni, jer ako čovjek nije u stanju da se ponaša u skladu sa određenim principima u vremenu i prostoru u kom se nalazi, onda je dodatno psihološko opterećenje u smislu: “glup sam”, “smotan”, “nesposoban”, “nije ovo za mene” i slično.

Pragmatična filozofija

Kao što već spomenusmo u poglavlju iznad, savjeti, upadice i citati mogu biti simpatični dok se knjiga čita, ali razmišljanje na taj način i još više, primjena svega u veoma kritičnim situacijama je nešto što se ne uči tek tako, ili tako što se pročita knjiga Pragmatični programer. Neophodno je usvojiti jako mnogo šarolikog znanja da bi se znalo kako djelovati. Stoga, ponavljamo se, knjiga je uglavnom na visokom, apstraktnom nivou, ali veoma sažetog sadržaja i koncepta kroz šta bi sve jedan prosječan programer trebao u životu proći, odnosno šta bi trebao znati i poznavati.

Alati i pristup

Knjiga obiluje savjetima za svakodnevni život pragmatičnog programera. Međutim, da bi se razumjeli ti primjeri kroz alate i pristup, neophodno je razumjeti veoma dobro svaki od alata. Oni su u knjizi samo nabrojani i dati su veoma jednostavni primjeri koje mogu u potpunosti razumjeti samo oni koji doista razumiju i alate i principe. Neki od alata su primjera radi Inžinjerski dnevnik. Savjetuje se da svaki inžinjer vodi inžinjerski dnevnik, no nigdje se ne kaže kako taj inžinjerski dnevnik treba da izgleda. Čak smo iz znatiželje za vlastite potrebe pokušali da nađemo neki primjer i počnemo primjenjivati taj snažni alat u svakodnevnom životu, ali bezuspješno. Svakako, nismo odustali, te smo počeli voditi nekakav vlastiti dnevnik, ako se to uopšte može nazvati dnevnikom, jer ne znamo na šta su tačno autori mislili.

Kada su u pitanju principi posvećeno je relativno mnogo pažnje različitim vrstama dizajna, između ostalog, poput dizajna događaja:

  • Finite state machine (FSM)
  • PubSub vs Observers, i
  • Reactive programming.

Međutim, valja znati da recimo Observeri ili PubSub ne postoje u svakom programskom jeziku i ako programer nema iskustva s tim, uopšte neće shvatiti o čemu autori govore. O Finite State Machine dizajnu da uopšte i ne govorimo. Valja veoma dobro, čak šta više, odlično razumijevati FSM, da bi se mogao primijeniti FSM princip dizajna u aplikaciji na kojoj se radi.

Zaključak

Sve u svemu knjigu preporučujemo, ali nemojte odustati od nje nakon što ne razumijete neku riječ, pojam, termin ili cijelu rečenicu. Čak šta više, neka svakome to bude motiv da nabavi drugu knjigu iz koje će naučiti o tome više i razumjeti o čemu se govori, te tako postati što bolji i kvalitetniji Pragmatični programer, jer kako kažu autori u jednom od citata:

Jedan od kamena temeljaca pragmatične filozofije
je ideja preuzimanja odgovornosti za sebe i
svoje postupke u smislu napredovanja u karijeri,
vašeg projekta i vašeg svakodnevnog rada.
Pragmatični programer preuzima odgovornost za svoju karijeru i
ne boji se priznati neznanje ili grešku.

0

Hits: 87