Carti pentru programatori

Cosmin
Cosmin Negruseri
29 decembrie 2011

Un prieten mi-a cerut recent cateva recomandari de carti de programare. Cresti cel mai rapid atunci cand codezi mult, duci un proiect de la inceput la sfarsit, lucrezi la proiecte variate, inveti de la colegi. Rar ai timp sau chef sa citesti o carte tehnica de la un capat la altul. Dar cum tot am fost intrebat va dau lista mea de recomandari:

Code complete contine multe subiecte care nu sunt abordate prea mult in facultate dar sunt folosite de programatori frecvent cum ar fi unit testing, coding style, software design, debugging etc.. Cartea contine multe reguli de bun simt, dar e bine ca sunt organizate si puse impreuna.E buna pentru un student care a lucrat doar laboratoare sau proiecte mici la scoala si vrea sa se maturizeze putin in plan profesional.
Effective C++ e o carte importanta daca lucrezi in C++ in industrie. Contine o gramada de sfaturi utile si e mult mai scurta decat alte carti care incearca sa faca acelasi lucru cum ar fi Thinking in C++ sau The C++ Programming Language.
Effective Java are multe subiecte din Java detaliate. E scrisa de Joshua Bloch care a facut pachetul de colectii in Java iar acum lucreaza la Google ca Chief Java Architect. Ea aduce cititorul de la incepator competent in Java la un programator avansat. Mi se pare mai la obiect decat Thinking in Java care foloseste destul de mult text ca sa explice o idee.
Design Patterns e o carte importanta pe care multi programatori o au pe raft, dar putini reusesc sa o citeasca. E greoaie, dar are concepte interesante. Eu am reusit sa parcurg mare parte din ea facand un curs de Desing Patterns la servici, unde impreuna cu alti colegi trebuia sa citim cate un capitol si sa il discutam. Astfel recomand sa incercati sa o parcurgeti in grup. Pe langa ideile din carte, dintre care unele nu sunt foarte complicate, ea ofera programatorilor un limbaj comun.
Cerintele unui proiect de cateva luni se schimba in mod continuu. Astfel o mare parte a muncii unui programator e sa refactorizeze codul. Refactoring: Improving the Design of Existing Code contine multe sabloane care fac partea de modificare si rescriere usoara. Pe langa asta contine o lista de asa numite "code smells", niste sabloane care iti spun ca ai putea imbunatati calitatea codului pe unele locuri. Multe din acestea sunt evidente, dar din nou, cartea ofera un limbaj comun pentru programatori.
Programming pearls e o carte foarte buna pe subiectul algoritmica in industrie. Stilul explicatiilor este foarte clar si curat.Se discuta probleme frumoase si nu exagerat de dificile. Are cateva capitole alocate structurilor de date si compelxitatii algoritmilor precum si unul despre "back of the envelope computations". Este foarte abordabila de incepatori si are destule trucuri si pentru avansati.
Introduction to algorithms sau Cormen cum ii zic romanii, e biblia algoritmilor. Contine material mult, tratat bine. Astfel parcurgerea ei poate dura multa vreme. Unele demonstratii sunt ceva mai lungi decat ar trebui, iar accentul e pus mai mult pe rigoarea matematica decat pe intuitia din spatele demonstratiilor. As recomanda oricui parcurgerea problemelor, si este cartea de baza pentru pregatirea la olimpiade.
The art of computer programming e probabil cea mai cunoscuta carte de informatica. Are un continut foarte misto, dar poate prea orientat matematic. Ea din nou e o carte pe care multi programatori o au pe raft dar nu o citesc. Eu mi-am petrecut bucata buna din timpul liber in liceu uitandu-ma peste probleme, dar acum nu cred ca as mai avea timpul liber si setea de cunoastere sa o parcurg.
The non-designer`s design book e carte scurta si la subiect pe tema designului. E plina principii de design fundamentale. Expuse frumos si cu exemple. Cunostintele de design sunt foarte utile pentru programatori pentru ca ai frecvent nevoie de interfetele web sau desktop adresate utilizatorilor.
The mythical man-month e o carte clasica despre managementului proiectelor software. Contine mai multe principii si discutii in jurul acestui domeniu. Un principiu interesant porneste de la ideea ca, cu 9 femei nu poti face un copil in o luna. Aplicat la proiecte software, ideea evidenteaza ca adaugarea de ingineri la un proiect care e pe cale sa nu isi atinga termenul limita nu ajuta proiectul.
Cracking the code interview e cea mai buna carte de pregatire pentru interviuri. V-am mai recomandat-o si in Sfaturi pentru interviuri de programare Descrie procesul interviurilor si are o gramada de probleme cu solutii. Ele sunt la nivelul de dificultate al interviurilor din Bay Area. Alte carti ca Programming Interviews Exposed au probleme ceva mai banale.

Voi ce parere aveti despre cartile de mai sus si ce alte carti ati recomanda unui student la info ce e la inceput de drum?

Categorii:
remote content