5 szakkönyv, amit minden fejlesztőnek el kell(ene) olvasnia
Sajnálatos tény, hogy felmérések alapján a legtöbb szoftverfejlesztő évente átlagosan kevesebb, mint egy szakkönyvet olvas el. Bár egyszerű a lustaságra fogni az egészet, a dolog ennél azért bonyolultabb. A legtöbb programozással, szoftvertervezéssel foglalkozó könyv egyszerűen nem túl jó, és ez főleg annak fényében rossz hír, hogy a választék emellett igen nagy. Így ha még rendelkezünk is a megfelelő ambícióval, hogy képezzük magunkat (ne feledjük: évi egy könyv elolvasása már jelentős versenyelőnyhöz juttathat az előbbiek alapján), a könyvek óriási óceánjában gyorsan elmehet a kedvünk az egésztől. Ez a poszt ismert fejlesztők blogjai, fórumbejegyzései mentén próbál egy listát összeállítani azokról az alapkönyvekről, amik kezdő és haladó programozóknak egyaránt hasznosak lehetnek.
Code Complete (második kiadás)
Steve McConnell Code Complete névre keresztelt könyve körülbelül olyan alapmű, mint Horváth Ilona klasszikus Szakácskönyv című eposza a magyar konyhákban. Rengeteg témát körbejárva gyakorlati példákon (és ellenpéldákon) keresztül mutatja be a programozás eszközeinek helyes használatát — Joel Spolsky egyenesen a helyes programozási gyakorlat enciklopédiájának nevezi. Különösebben nincs mit ragozni a dolgon, mindenkinek el kell olvasnia, és ha lehet, rendszeresen visszatérni rá.
The Pragmatic Programmer
Míg az előző könyv gyakran a konkrét gyakorlati problémákra összpontosít, Andrew Hunt és David Thomas könyve sokkal inkább szól a programozás mesterségéről: a részletek egybegyúrásáról, nem pedig közvetlenül a programkóddal kapcsolatos problémákról.
Ez egy kiváló könyv azoknak, akik a programozás technikai részleteit már jól elsajátították (például az egyetemen), de nem túl magabiztosak abban, hogy a megtanult eszköztárból mikor mit kéne használniuk. A fő témák a hatékony, magas minőségű szoftvertervezés, specifikáció-készítés, vevőkapcsolatok, team menedzsment, bevett tervezési gyakorlatok, fejlesztői eszközök, illetve tesztelési elvek, folyamatok.
The Mythical Man-Month
Jeff Atwood szerint ez a szoftvertervezési irodalom egyetlen valódi klasszikusa. Frederick P. Brooks könyve elsősorban a szoftverfejlesztés emberi aspektusaira helyezi a hangsúlyt, és saját tapasztalatokon keresztül (elsősorban az IBM System/360 rendszer és azt követően a hozzá tartozó masszív operációs rendszer, az OS/360 létrehozása) oszt meg rengeteg tanácsot és véleményt komplex projektek menedzselésével kapcsolatban.
A könyv nagyszerűségét jelzi, hogy a szinte évente változó szoftveriparban egy harmincéves rendszer építéséből levont tapasztalatokból ma is rengeteget tanulhatunk. Főleg azért, mert a gépek változnak, de az emberek nem.
The Art of Computer Programming
Egy kicsit félve tettem fel a listára Donald Knuth mára óriási méretűre hízott művét, hiszen az előző könyvekkel ellentétben ez inkább egyfajta enciklopédia, mintsemhogy az elejétől a végéig olvasandó írás. De mivel az American Scientiest az előző évszázad száz legnagyobb hatású könyvei közé választotta, úgy gondoltam, mindenképp helye van a listán, már csak a Knuth által beleölt emberfeletti munka miatt is. Fontos megjegyezni, hogy ez egy jelenleg is folyamatosan bővülő szerzemény, jelenleg négy kötete van, az ötödik 2020-ra van tervbe véve.
Ez a kötetsorozat tulajdonképpen rengeteg különféle algoritmust és azok elemzését tartalmazza, jól átgondolt fejezetekre bontva. Az algoritmusok egy pszeudo-assembly nyelven vannak leírva, amit Knuth MIX-nek keresztelt el. Ez a tény önmagában rengeteg olvasót eltántorít a könyv olvasásától, de a szerző szükségesnek tartja ahhoz, hogy azonos összehasonlítási alapot képezzen a különböző módszerekhez. A mű nehéz emészthetőségét fémjelzi a Bill Gatestől származó idézet is: "Ha jó programozónak gondolod magad, olvasd el Knuth Art of Computer Programming című könyvét, és ha képes voltál az egészet felfogni, mindenképp küldd el nekem az önéletrajzodat."
Structure and Interpretation of Computer Programs
Szintén egy kicsit nehezebben befogadható klasszikussal állunk szemben, amikor kezünkbe vesszük Abelson és Sussmann könyvét, de a plusz erőfeszítés bőségesen megtérül.
Ez a könyv megtanít értékelni a jól megírt programokat, segít megtalálni a szépséget a programozásban, és mindenekelőtt arra ösztökél, hogy még többet tanulj. A magvas gondolatok mellett olyan gyakorlati témákat érint, mint a funkcionális programozás, a metaprogramozás, virtuális gépek, interpreterek, compilerek.
Egyébként ez a könyv a MIT híres 6.001 programozási alapok kurzusához íródott, és már csak azért is érdemes belelapozni, mert ma már ingyenesen elérhető az interneten.