U današnje vrijeme se prilično puno priča o programiranju, o pisanju kôda, o softver inženjeringu i slično, no malo ljudi se odlučuje baviti time. Zašto? Pa zato jer ove vještine iziskuju puno vremena, čitanja knjiga, jako puno sati prakse i kreativnost. Ako niste talentirani za to, morati ćete uložiti još i više truda da bi ste postali dobar programer.
U tome vam mogu pomoći neke knjige koje ćemo mi danas spomenuti, no teško je ugurati u 25 knjiga sve vrijedno spomena. Ovo je naše viđenje korisnih knjiga i knjiga koje bi svaki pravi programer/poduzetnik trebao uzeti u obzir, pogotovo ukoliko razmišlja o otvaranju svoje tvrtke.
U pravilu se ne radi o knjigama za specifični programski jezik, nego općenito o knjigama sa savjetima za programiranje, o nekim “dobrim” navikama, kako pisati kôd, na što paziti, kako koristiti određene ‘obrasce’, kako se upustiti u menadžment, marketing itd. Pa pogledajte što smo vam pripremili.
1) The Art of Computer Programming (D. Knuth) – Svaki pravi programer bi trebao biti jako dobro „potkovan“ sa matematičkim vještinama i znanjima. Opus spomenutog naslova je jedno od najvećih djela koje sadrže preko 3200 stranica temeljnih algoritama isprepletenih teškom matematikom (između ostaloga i kombinatorikom) i definitivno nije za svakoga. Prije nego se upustite u čitanje ovih knjiga (serija se sastoji od 4 knjige), probajte prvo pročitati knjige pod brojem 2 i 3. Autor knjige, Donald Knuth, jedan je od najvećih živućih matematičara i programera na svijetu.
2) Concrete Mathematics: A Foundation for Computer Science (D. Knuth) – Još jedno remek djelo malo prije spomenutog autora, a radi se o možda najboljoj knjizi u kojoj se objašnjava matematika i to ne na standardni način. Radi se o nekim područjima matematike u koje ulazi prilično duboko i daje malo drugačiju sliku matematike. Nemojte očekivati malo teorije i 100 rutinskih zadataka (kao što ste možda navikli dok ste se školovali), nego matematiku koja će vam uzeti sate i sate, a nakon što prođete knjigu biti ćete spremni za pisanje jako dobrih algoritama i vladati ćete temeljnom matematikom bolje nego neki FER-ovci (bez uvrede, ukoliko čitaju ovo).
3) Algorithms (R. Sedgewick) – Osim matematike, prilično je korisno vladati algoritmima. Ne, ovo nije knjiga u kojoj na 200 stranica površno objašnjeno što su algoritmi, nego knjiga od skoro 900 stranica sa 50 najkorisnijih algoritama koje se danas koriste. Naravno, svaki od njih je detaljno objašnjen, objašnjena je njegova primjena u realnom svijetu, te kako prepoznati probleme koje možete s njima riješiti. Isto tako zahtjeva dobru matematičku podlogu, no može se i bez nje. Istina, ići ćete malo sporije kroz knjigu, no ionako ovo nije tip knjige koju ćete uzeti i u tjedan dana pročitati od korica do korica. U knjizi se koristi Java kôd, no primjenjivo je i na ostale OOP jezike. Glavni konkurent ovoj knjizi je Introduction to Algorithms (Cormen i ekipa), koji algoritme gledaju više sa znanstvene strane.
4) Dreaming In Code (S. Rosenberg) – Ovo je knjiga namijenjena svim onima koji (nažalost ili na sreću) moraju surađivati s drugim programerima na razvoju softvera pa se susreću sa groznim kôdom. Kad kažemo s groznim kôdom mislimo na kôd koji nije „elegantan“, koji je pun propusta, bez dobrih komentara i pun raznih bugova. Naravno da nisu svi programeri jednaki, no neki su stvarno loši, a ova knjiga vas uči kako da surađujete s njima, kako da utječete na njih, kako da im pomognete i najvažnije, govori o ljudskom ponašanju i razmišljanju. Jako zanimljiva knjiga koju svakako preporučamo u ove hladne dane!
5) Startups Open Sourced: Stories to inspire and educate (J. Tame) – Želite pokrenuti svoj Startup, ali ne znate kako ili nemate hrabrosti? Možda je vrijeme da pročitate ovu knjigu. Radi se o knjizi u kojoj osnivači malih i većih kompanija govore o prednostima i manama vođenja kompanija, na što paziti, kako se ponašati prema ljudima, o avanturi itd. Glavna zadaća je da vas inspirira i pokrene, a to je zapravo najteže, jer se ljudi boje danas pokrenuti posao. U knjizi ćete naći intervjue osnivača popularnih servisa Grooveshark, reddit, GitHub, foursquare, Airbnb, Weebly, Greplin, AppSumo …
6) Content Rules (A. Handley, C.C. Chapman) – Nije bitno da li ste programer, bloger ili jednostavno želite napraviti dobar video isječak. Ova „marketing“ knjiga će vam objasniti što ljudi vole, što žele vidjeti/čitati i kako doprijeti do ljudi. Prilično zanimljiv koncept koji ulazi u dubinu marketinga, ali na ljudima zanimljiv način. Nije onako „suhoparna“ kao neke knjige koje će vam samo nabacati nekoliko fency izraza iz područja marketinga, a vjerojatno ih ni pola ne biste razumjeli. Ako želite povećati posjećenost na blogu, svakako pročitajte, a programerima će dobro doći da bolje razumiju potrebe ljudi koji će koristiti njihove programe.
7) Code Complete: A Practical Handbook of Software Construction (S. McConnell) – Mnogi ovu knjigu smatraju možda najboljim praktičnim vodičem za programiranje, no mi se ne bi složili. Ovo je jedan od boljih knjiga, no ne zaslužuje epitet „najbolja“. Radi se o „programerskoj kuharici“ koja će vam dati praktične savjete za pisanje softvera, a glavne odlike su joj: brzo pronalaženje i efektivno rješavanje bugova, pisanje komentara u svim segmentima kôda, dizajniranje minimalističkog dizajna, rješavanje nekih kritičnih problema koji se danas javljaju kod većine samoukih programera (iako, drugi niti ne postoje) … Nije bitno da li se početnik ili profesionalac, u ovoj knjizi ćete naći prilično puno korisnih savjeta i trikova.
8) Maximum Achievement (B. Tracy) – Dosta vam je gledanja kako ljudi oko vas uspijevaju, a vi se dosađujete na poslu i zarađujete prilično malo? Ova knjiga vam može pomoći u tome da se trgnete i da iskoristite sve svoje potencijale i napokon krenete raditi nešto što uživate (npr. programirati). Nije klasična knjiga za samopomoć, nego jedna vrsta motivacijskih knjiga koje vas navode na pravi put. Knjiga kombinira dijelove psihologije, religije, biznisa, ekonomije, filozofije i fizike i prilično je zanimljiva. Ne možete ništa izgubiti ukoliko pročitate ovu knjigu, a mi vam garantiramo da ćete dobiti ogromnu motivaciju za pokretanje svoga vlastitog biznisa. Preporuka!
9) Hacker’s delight (H.S. Warren) – Ako očekujete knjigu koja će vas naučiti kako susjedi upasti u računalo i ukrasit fotografije sa godišnjeg odmora, morati ćemo vas razočarati. Ovo nije takva knjiga niti ima ikakve veze sa današnjim pojmom hakera. Hakeri su ljudi koji žele unaprijediti nešto, napisati bolji kod, dodati razne feature već postojećim softverima i slično, no ova knjiga vas ni to ne uči. Ovo je kolekcija 50-ak trikova iz programiranja i većinom su bazirani na uštedi računalnih resursa i uče vas kako uštedjeti i zadnji bit iz neke metode ili funkcije. Namijenjena je starijim programerima, ali i svima onima koje zanima kako programiranje funkcionira.
10) Hackers & Painters (P. Graham) – Da malo razbijemo monotoniju, evo jedna knjiga odličnog esejista Paula Grahama. Riječ je o knjizi u kojoj on objašnjava svoju viziju hakera, piše o digitalnom dobu i borbi koja se odvija „u žicama“. Zanimljive su mu usporedbe u kojima uspoređuje Internet sa divljim zapadom, a hakere sa kaubojima digitalnog doba. U svakom slučaju, priča koju se isplati pročitati i koja će vam dati cjelokupnu sliku današnjeg doba na jedan malo drugačiji način. Svakako preporučamo da ju pročitate uz jutarnju kavu, neće vam biti žao što ste odvojili vrijeme za nju.
11) From Program to Product (R. Smolin) – Knjiga vrlo nezanimljivog naslova, ali zanimljivog sadržaja. Govori o novoj gospodarskoj grani, o malim programerima koji rade softver namijenjen širokim masama i kako postati jedan od njih. Zapravo knjiga vam govori o tome da ne morate biti zaposlenik neke velike kompanije, nego možete biti i mali programer koji će od svoga rada jako dobro živjeti. Razvoj mobilnih aplikacija vam stvarno može omogućiti ogromne prihode, samo ako napravite kvalitetnu aplikaciju, a u ovoj knjizi možete naći inspiraciju da se uputite na taj put. Isto tako, ovo će biti zanimljivo onima koji već rade na nekom svom hobi-projektu, a nisu razmišljali da taj proizvod pretvore u nešto profitabilno.
12) Slack: Getting Past Burnout, Busywork, and the Myth of Total Efficiency (T. DeMarco) – Autor knjige, Tom DeMarco, jedan je od vodećih menadžment konzultanata i suradnik nekih ogromnih kompanije koje možete naći na listi Fortune 500. On u svojoj knjizi iznosi zanimljivu tezu koja kaže da svaka kompanija mora „zabušavati“ ukoliko želi biti uspješna. Teza se temelji na tome da ako vi „tjerate“ svoje zaposlenike do krajnjih granica, da oni neće dati svoj maksimum i da neće biti produktivni kao što bi mogli biti ukoliko zabušavaju. Vrlo zanimljiva, i pomalo, kontroverzna knjiga.
13) Don’t Just Roll The Dice (N. Davidson) – Kolika je cijena vašeg rada? Vašeg softvera? Da li je to umjetnost, znanost ili „magija“? Na ova i mnoga druga pitanja će vam knjiga pokušati odgovoriti. Danas najveći problem programera i poduzetnika je ocijeniti koliko košta njihov rad, na koji način prodavati softver, kako uopće odrediti neku granicu do koje bi ljudi pristali platiti. Autor knjige Neil Davidson govori iz iskustva jer je on krenuo od nule i sa malo truda i nekoliko programera uspio napraviti tvrtku koja je 2006. godine proglašena kao jedna od najperspektivnijih kompanija mlađih od tri godine. U svakom slučaju, knjiga koja se bavi ne baš popularnom tematikom i ulazi u sferu ekonomije, ali mislimo da će vam biti zanimljiva i korisna.
14) Outliers: The Story of Success (M. Gladwell) – Jeste li se ikada pitali što razlikuje uspješne ljude od „ostalih“? Ne, oni nisu genijalci, nisu mnogo pametniji od vas i mnogi uopće nemaju dobro obrazovanje, a i dalje oduševljavaju svojim poslovnim potezima i softverskim rješenjima. Autor knjige vam na jedan lijep i zabavan način pokušava predstaviti svijet uspješnih ljudi, njihov život, njihova razmišljanja i pokazati vam zašto su oni drugačiji. Složili bi se čak i oko tvrdnje da je ovo esejistička knjiga, koja polako zalazi i u sferu nerealnog, no nama se svidjela! (hint: zato jer se spominje Bill Gates)
15) Eric Sink on the Business of Software (E.Sink) – Eric Sink je bloger koji je već jako dugo u poslovnom svijetu, čovjek koji se dobro razumije u programiranje i čovjek koji vam želi pomoći. Ova knjiga je zapravo kolekcija njegovih najboljih eseja i postova koje možete naći razasute na Internetu. Nas je posebno zainteresirala grupa tekstova koji govore o tome kako preživjeti prvih par mjeseci kada osnujete tvrtku koja će se baviti razvojem softvera,kako se nositi sa financijama i kako uopće programeri mogu voditi kompaniju. Ako vas zanimaju odgovori na ova pitanja, potražite tekstove na Internetu ili kupite spomenutu knjigu.
16) Design Patterns: Elements of Reusable Object-Oriented Software (E. Gamma) – Iako većini programera idu na živce razni „Design patternsi“, moramo priznati da je Erich Gamma napisao prilično dobru knjigu. Riječ je o objektno orijentiranom programiranju i kolekciji od 23 vrlo popularna trika/načina na koji programeri mogu pisati svoje aplikacije, a da pritom one budu fleksibilnije, uredno napisane i da ih kasnije nije problem nadograditi ili održavati. Jedina zamjerka ide na to što Gamma veću pozornost pridaje eleganciji koda i fleksibilnosti nego efektivnosti, a svjesni smo činjenice da programi danas moraju trošiti što manje računalnih resursa i memorije, bez obzira na „ljepotu kôda“.
17) Coders at Work: Reflections on the Craft of Programming (P. Seibel) – Što je za vas programiranje? Pisanje kôda? Umijeće? Znanost? Hacker sa dugom povijesti, Peter Seibel, u svojoj knjizi piše o tome što je važno danas za razvoj softvera, koje alate koriste najbolji programeri, kako se postaviti prema određenom problemu, kako razmišljati, kako se prilagoditi tržištu, kako surađivati sa ostalim programerima, a najbolje od svega su intervjui sa „facama“ iz IT svijeta, te nekim prilično poznatim hakerima. Zanima vas kojim? Knjigu u ruke i krenite čitati, a ako vas imalo zanima programiranje, knjigu nećete ispustiti iz ruke dok ju do kraja ne pročitate. Provjereno!
18) The Pragmatic Programmer: From Journeyman to Master (A. Hunt) – Kada sam ovu knjigu uzeo u ruke, mislio sam da se radi o još jednoj „šarlatanskoj“ knjizi u kojoj su nabacane ocrtane fraze i da neću ništa novog naučiti. Ne mogu opisati koliko sam bio u krivu. Ovo je, meni osobno, jedna od najdražih knjiga. Knjiga koju možete čitati stalno iznova i svaki put ćete biti oduševljeni njome. Ona će vas držati „svježima“ u poslu, gurati vas naprijed i naučiti vas nekim važnim lekcijama vezanim za razvoj softvera. Teško je u par rečenica opisati ovu knjigu, no ukoliko se budete pridržavali samo nekih pravila iznesenih u ovoj knjizi, postati ćete zasigurno bolji programer, a prije svega pragmatičan i efektivan. To je vrlo važno u programiranju, kao i u menadžmentu (no, to je ovdje sporedna stvar). Ako živite od pisanja kôda, još danas ju kupite!
19) Programming Pearls (J. Bentley) –Kada programere pitate da vam nabroje nekoliko svojih omiljenih knjiga, vrlo vjerojatno će većina spomenuti Jona Bentleya i njegove „bisere“. Kao što biseri nastaju u prirodi, tako u programiranju nastaju neki problemi s kojima se susreće velik broj programera. Ova knjiga pokušava riješiti te probleme i sigurni smo da će i vama dobro doći. Nije bitno da li imate godinu, dvije ili 10 godina iskustva. Kao što je knjiga „Zločin i kazna“ obilježila ruski realizam, tako je ova knjiga definitivno obilježila ovo moderno digitalno doba u kojem opstaju samo najbolji. Ukoliko želite biti jedan od njih, ovo vam je nezaobilazno štivo.
20) The Mythical Man-Month: Essays on Software Engineering (F.P. Brooks) – Bezvremenski klasik o project menadžmentu i softver inženjeringu. Autor kroz cijelu knjigu provlači nekoliko kontroverznih tema na temu velikih i malih kompanija i zašto su programeri ti koji nose tvrtku naprijed, a ne menadžeri u odijelima koji si isplaćuju ogromne plaće i dividende. Vrlo zanimljiva, esejistička knjiga čovjeka koji je prije 20 godina u IBM-u radio na nekim velikim projektima (na oba radna mjesta – i kao programer i kao dio menadžmenta). Ovo je već drugo izdanje knjige, koje je malo drugačije u odnosu na prvo, odnosno, osvježeno je s nekim novim dijelovima i novim tezama, pa knjigu preporučamo i onima koji su već upoznati sa Brooksovim djelima.
21) Head First Design Patterns (skupina autora) – Head first serija knjiga je jedna od najboljih serija ikada! Riječ je o fantastično koncipiranim knjigama za pojedina područja. Postoji Head First C++, Head First Java … a između ostalog i Head First Design Patterns. Već smo prije spomenuli knjigu koja se bavi sličnom tematikom, no ova nam se puno više sviđa. Zašto? Zato jer su Head First knjige pune raznih crteža, križaljki, slagalica i svega ostaloga što čitatelja drži čvrsto uz knjigu, traži korištenje obje polovice mozga i napisane su da i malo manje pametni ljudi mogu shvatiti što autor zapravo želi reći. Ako ste ikada mislili da nešto ne možete naučiti, uzmite Hrad First knjigu i razuvjeriti će vas u trenu! Svaka pohvala autorima jer su učenje učinili zanimljivim i laganim.
22) User Interface Design for Programmers (J. Spolsky) – Mnogi programeri se boje izrade user interfacea, odnosno grafičkog sučelja. Tipičan programer sebe smatra čovjekom koji zna analizirati problem, sagledati ga iz više kutova, riješiti ga možda i na više načina, no grafički dizajn je samo za one kreativce koji po noći sjede iza računala i nešto crtaju. Jednom riječju, grafički dizajn treba ostaviti umjetnicima. Joel Spolsky se ne slaže s time i na 160 stranica pokušava objasniti zašto baš programer mora raditi grafičko sučelje i kako se uhvatiti u koštac s time. Korisno je, može vam dati dodatno samopouzdanje i nemate što izgubiti ukoliko pročitate ovu knjigu.
23) The Web Startup Success Guide (R. Walsh) – Danas na Internetu možete gotovo na dnevnoj bazi čitati o novim web startupima, o novim „Internet poduzetnicima“ i slično. Ako želite i vi biti jedan od njih ili vas zanima kako uopće izgleda vođenje i pokretanje takvog jednog projekta, ovo je knjiga za vas. Autor Robert Walsh je inače konzultant koji surađuje sa ljudima (poduzetnicima) i informacije su definitivno iz prve ruke i nadasve relevantne. Pisana je vrlo čitko, zanimljivo ali ne ide preduboko u tematiku. Da li se neki savjeti mogu primijeniti i na Hrvatsku? Pa mogu, jer ovakvi startupi nastaju svuda, i nije bitno iz koje zemlje dolazite i kakvi su gospodarski uvjeti u određenoj zemlji, nego je bitna ideja, način provođenja te ideje i ljudi s kojima surađujete.
24) Cloud Computing Bible (B. Sosinsky) – Složiti ćemo se svi da je koncept „oblaka“ (engl. Cloud) budućnost IT-a. Nebitno da li ćete koristiti cloud usluge za smanjivanje troškova poslovanja, za backup ili za programiranje. Spomenuta knjiga govori o potpuno novim i neviđenim konceptima programiranja, o novom načinu razmišljanja, o novim protokolima, dizajnu, potrebama modernih „geekova“. Knjiga koja nije u top 100 popularnih IT knjiga, no definitivno zaslužuje tamo biti. Vjerujemo da je ovo jedan od prvih u nizu knjiga koje će se baviti razvojem usluga u oblaku. Bonus na sve to je poglavlje o tome kako uštedjeti kompaniji novce i što točno prenijeti u oblake kako bi profit bio što veći. Zanimljivo.
25) Peopleware: Productive Projects and Teams (T. DeMarco) – Ovu knjigu bi mogli sažeti u jednu rečenicu, a glavna teza joj je: pametnim ljudima dajte fizički prostor, a intelektualno nadmoćnima odgovornost i strategijski razvoj. Knjiga se ne bavi tehničkom stranom razvoja softvera, nego ljudima, tipovima ljudi i kako prepoznati pojedinca i njegove sposobnosti. Fenomenalna knjiga koja programiranje gleda iz jedne druge perspektivne i govori kako se ponekad bolje povući u stranu i prepustiti „niže rangiranim ljudima“ da vode projekte jer oni znaju što i kako treba projekt napraviti. Vjerujem da bi ova knjiga bila korisna „domaćim“ projekt menadžerima koji „sve znaju i sve mogu“. Zato rijetko i čujemo da je neki projekt uspio.
Naravno da postoji još veliki broj knjiga koje bi trebalo pročitati ili preporučiti ljudima, no ne stane nam sve. Slobodno u komentarima recite koju ste knjigu pročitali, zašto mislite da je korisna i kome je namijenjena.
Piše: B.P.