Svaki profesionalni programer ukoliko želi da bude majstor svog zanata, neophodno je da non-stop napreduje i usavršava svoje veštine. Jedan od koraka na ovom putu podrazumeva i edukaciju iz oblasti koje nisu samo pisanje mnoštva linija koda, nego i njihova organizacija, način pristupu rešavanja određenog problema, kao i kolaboracija sa kolegama iz tima.
Jedan od načina da se steknu nova znanja je čitanjem literature iz zadate oblasti i izučavanjem relevantne materija. Iz tog razloga mi ovde predstavljamo spisak knjiga koje nisu direktno vezane za tehnologiju u kojoj programer radi, nego kako on treba da radi. Znanje iz ovih knjiga može se primeniti u bilo kom programskom jeziku, a ono omogućuje da programer dobija novi ugao gledanja na njemu poznate situacije. Ovim znanjem otvara se put za nove ideje, koje jednostavnije i efektivnije mogu rešiti probleme sa kojima se neprestano susrećemo pri razvijanju softvera.
Na internetu se mogu pronaći razni tekstovi tipa 154 najbolje knjige za programiranje ili spisak od 129 esencijalnih programerskih knjiga. Kad vidim ovakve spiskove ja se zapitam: Kako 129 knjiga mogu da budu esencijalne u bilo kojoj oblasti i ko ima vremena da ih pročita i izuči u razumnom vremenu?
Da bih izbegao problem velikih spiskova knjiga i da bih vas što lakše uputio ka cilju da postanete pravi profesionalni programeri, odabrao sam nekoliko knjiga sa kojima možete započeti svoje putovanje ka profesionalizmu u svom poslu. Dok ih budete čitali, javiće vam se mnoga nova pitanja i problemi, ali tada ćete već znati kako da odaberete kvalitetne knjige za dalji napredak ka cilju koji sami sebi postavite.
Principi programiranja
Ova grupa knjiga objašnjava osnovne tehnike programiranja. Učenjem iz ovih knjiga naučićete da pišete smisleni kod koji i drugi ljudi posle vas mogu da nastave da razvijaju.
Design Patterns: Elements of Reusable Object-Oriented Software
Erich Gamma, John Vlissides, Ralph Johnson, and Richard Helm
Šabloni predstavljeni u knjizi daju nam gotova rešenja za probleme koji se obično javljaju prilikom razvoja softvera. Ovo je prva knjiga ove vrste i do dana današnjeg predstavlja jednu od najuticajniju knjigu u oblasti razvoja softvera. Predstavlja važan izvor informacija u objeknto-orijentisanog programiranju kako za teoriju, tako i za praksu.
Refactoring: Improving the Design of Existing Code
Martin Fowler
Refaktorisanje je proces ponovnog pisanja delova programa, bez promene načina njegovog funkcionisanja, u cilju unapređivanja čitljivosti koda, kao i prilagođavanja koda lakšem testiranju i održavanju. Knjiga je napisana sa fokusom na OOP, a struktuirana je kao katalog tehnika refaktorisanja.
Knjigu je bitno pročitati, zato što se idealan kod ne može napisati iz prve ruke, ali ga zato primenom objašnjenih principa refaktorisanja možemo dovesti u optimalnu formu.
Working Effectively with Legacy Code
Michael C. Feathers
Vremenom postaćete iskusni developeri, a tada će se od vas očekivati da nastavite rad na projektu koje su pre vas započeli i na kojima su radili neki manje iskusni developeri. U ovakvim situacijama, može se desiti da taj kod nije napisan po svim pravilima o kojima ste učili i često ne postoje nikakavi testovi koji validiraju ispravnost tog koda.
Kako onda napraviti neku izmenu u tom kodu, tako da posle te jednostavne izmene budemo sigurni da će ostatak softvera i dalje funkcionisati ispravno?
Martin Fowler definiše Legacy Code, kao kod za koji nisu pisani testovi. U knjizi nam objašnjava tehnike refaktorisanja koje možemo da primenimo na ovakav kod, kako bi smo njegove najbitnije delove (delove koje upravo pokušavamo da izmenimo) podveli pod testove i da na taj način budemo sigurni da će oni funkcionisati i posle naših izmena.
Clean Code: A Handbook of Agile Software Craftsmanship
Robert Cecil Martin
Skoro svaki loše napisan kod može da radi. Problemi nastaju onog trenutka kada tako loše napisan kod treba proširiti s novom funkcionalnošću. Dodavanje nove funkcionalnosti uzrokuje da neke stvari koje su ranije radile, prestanu da rade i ceo dalji razvoj programa postaje horor priča.
Da do ovoga ne bi došlo, Robert C. Martin se udružio sa kolegama iz firme Object Mentor, kako bi predstavio najvažnije principe agilnog razvoja softvera. Primena ovih principa na ispravan način obezbeđuju da do predstavljenog scenarija ne dođe.
Software Craftsmanship
Odavno je poznato da programiranje nije umetnost, nego veština. Zato se tako i trebamo odnositi prema ovom poslu. Programiranje se do neke granice može naučiti, ali usavršiti se može jedino vežbanjem. Knjige predstavljene u ovoj oblasti ukazuju nam koje su to vežbe i znanja neophodni da bi smo postali pravi majstori svog zanata.
The Pragmatic Programmer
Andy Hunt and Dave Thomas
Ovo je prva knjiga koja je iznela stav da programiranje nije umetnost, nego veština koja se može uvežbati. Knjiga je napisana pre skoro 20 godina, a mnoge napisane stvari i dan danas važe. Razlika u odnosu na ono vreme je što danas imamo kvalitetnija razvojna okruženja za programiranje i verzionisanje koda, ali sve ostalo napisano i danas jednako važi kao i tada.
The Clean Coder: A Code of Conduct for Professional Programmers
Robert Cecil Martin
Robert C. Martin je programer i jedan je od ko-osnivača Agilnog manifesta, a takođe je i autor nekoliko knjiga i kurseva koji propagiraju agilni način razvoja softvera.
U ovoj svojoj knjizi iznosi discipline, tehnike, alate, kao i vežbe koje čine jednog developera pravim majstorom svog zanata – software craftsman-om.
Software Craftsman
Sandro Mancuso
Biti software craftsman autor u ovoj knjizi podiže na viši nivo. Kada se u razvoj softvera uključe ponos, profesionalizam i ljubav prema poslu, kada se teži kvalitetnom i izvanrednom rešenju tek tada počinje da se prepoznaje rad pravog profesionalaca.
Knjiga pokriva neke od aspekata profesionalizma koje nisu obuhvaćene u prethodno opisanoj knjizi, a činjenica da je Robert C. Martin uvrstio ovu knjigu svoju seriju knjiga, samo joj još više podiže vrednost i daje dodatni razlog za čitanje.
The Mythical Man-Month: Essays on Software Engineering
Fred Brooks
“Biblija razvoja softvera”, knjiga koju svi citiraju, neki je i pročitaju, ali samo nekoliko ljudi se pridržava činjenica iz knjige.
Ovako je autor opisao svoju knjigu 20 godina posle njenog izdavanja. Knjiga je napisana, sada davne, 1974. godine i predstavlja prvu knjigu koja je napisana na temu razvoja programa iz menadžerskog ugla. U knjizi je predstavljen i objašnjen razlog zašto dodavanje još ljudi u tim koji kasni s isporukom softvera, unosi još više kašnjenja u isporuku istog. Knjiga važi za klasično delo o uticaju ljudskog faktora na razvoj softvera.
Zen and the Art of Motorcycle Maintenance: An Inquiry Into Values
Robert M. Pirsig
Za kraj predstavljamo jednu knjigu koja nema nikakve direktne veze s programiranjem, ali je jako bitna za posao kojim se bavimo. Ova knjiga nas tera da razmišljamo o stvarnim životnim vrednostima i predstavlja filozofsko delo koje istražuje metafiziku kvaliteta, koja inkorporira aspekte Istočno-Azijske filozofije i pragmatizma.
Ako tek počinjete sa svojom karijerom profesionalnog developera, možda ovu knjigu i preskočite za sada, ali definitivno je trebate imati pri ruci, jer svako od nas se u jednom trenutku u životu zapita šta su to istinske vrednosti.