Să fim sinceri, ne-am săturat cu toții de aceleași recomandări obosite pe care le vezi pe orice blog de tech. „Clean Code” și „Pragmatic Programmer” sunt bune când ești la început, dar după câțiva ani în industrie încep să devină doar niște lozinci pe care le aruncă lumea în code review-uri ca să pară deșteaptă.
Pe mine m-au ajutat mult mai mult cărțile care nu mi-au explicat unde să pun acoladele, ci cum să gândesc. Am adunat trei titluri care mi-au schimbat radical perspectiva când aveam deja vreo 6 ani de experiență și simțeam că m-am plafonat în rutina de zi cu zi.
Designing Data-Intensive Applications (Martin Kleppmann)
Cartea asta este, fără exagerare, biblia sistemelor moderne. Am dat de ea când lucram la o platformă cu vreo 18.000 de utilizatori activi concurenți și baza de date începea să dea semne de oboseală cruntă. Până atunci, pentru mine bazele de date erau niște cutii negre în care aruncam query-uri SQL și speram să vină înapoi repede.
Kleppmann îți desface totul în bucăți: de la cum se scriu biții pe disc într-un index LSM-tree, până la de ce replicarea master-slave îți poate distruge consistența datelor când te aștepți mai puțin.
Trade-off-ul: Nu e o lectură ușoară. Nu o citești la plajă. Sunt capitole, mai ales cele despre consens distribuit și tranzacții, unde trebuie să citești aceeași pagină de trei ori ca să înțelegi ceva. Dar după ce o termini, nu mai vezi niciun sistem la fel. Începi să înțelegi de ce unele baze de date NoSQL mint când promit performanțe magice.
Peopleware: Productive Projects and Teams (Tom DeMarco & Timothy Lister)
Când ești dev junior sau mid, crezi că toate problemele din proiecte se rezolvă cu tehnologie mai bună. „Dacă rescriem microserviciul ăsta în Go, scăpăm de probleme”. Ei bine, „Peopleware” vine și îți dă o palmă peste ceafă.
Autorii demonstrează, cu date și studii concrete de acum zeci de ani (care încă se aplică perfect), că majoritatea eșecurilor din IT sunt de fapt probleme de dinamică umană, nu de tehnologie. Am citit-o când am trecut prima dată într-un rol de tech lead pentru o echipă de 6 oameni. M-a învățat cum să protejez timpul echipei de ședințe inutile și de birourile de tip open-space care distrug complet capacitatea de concentrare.
Am aplicat ce scrie acolo și am implementat un sistem de „focus time” de 4 ore pe zi fără meetinguri sau ping-uri pe Slack. Rezultatul? Am redus timpul de livrare a feature-urilor cu aproape 30% în doar trei luni, pur și simplu pentru că oamenii chiar aveau timp să scrie cod fără să fie întrerupți la fiecare 15 minute.
Thinking in Systems: A Primer (Donella Meadows)
Asta nu are nicio legătură directă cu programarea, dar este probabil cartea care m-a ajutat cel mai mult la debugging-ul sistemelor complexe. Te învață să vezi lumea prin prisma buclelor de feedback, a stocurilor și a fluxurilor.
Când ai un sistem cu 15 microservicii și apare un bottleneck ciudat în producție doar miercuri la prânz, degeaba cauți bug-ul într-o singură linie de cod. Problema e de obicei o interacțiune ciudată între sisteme care se amplifică una pe alta. Meadows îți oferă un vocabular mental ca să poți analiza aceste interdependențe și să nu mai repari doar simptomele, ci cauza reală.
Voi ce cărți aveți în bibliotecă care v-au schimbat modul de lucru, dar care nu apar de obicei în listele clasice?