De câte ori aud pe cineva recomandând „Clean Code” ca fiind biblia absolută a programării, îmi vine să dau ochii peste cap. Nu pentru că ar fi o carte proastă, ci pentru că e un clișeu obosit care nu te învață cum să gândești, ci doar cum să formatezi codul. În cei 12 ani de când scriu cod, cărțile care mi-au schimbat cu adevărat perspectiva au fost fie non-tehnice, fie extrem de pragmatice pe arhitectură, nu pe detalii de sintaxă.
Vreau să vă las trei titluri care pe mine m-au ajutat să trec de la nivelul de „scriitor de cod” la cel de inginer care rezolvă probleme de business.
1. „Designing Data-Intensive Applications” – Martin Kleppmann
Dacă lucrezi cu baze de date, API-uri sau microservicii și nu ai citit-o, oprește-te din ce faci și cumpăr-o. Nu e o lectură ușoară. Am pățit să citesc același capitol de trei ori ca să înțeleg cum funcționează de fapt replicarea master-slave sau de ce tranzacțiile ACID sunt atât de greu de implementat în sisteme distribuite.
Trade-off-ul sincer: Cartea asta nu te ajută să scrii un query SQL mai rapid mâine dimineață. În schimb, te ajută să nu mai alegi tehnologii doar pentru că sunt la modă. După ce am citit-o, am salvat cam 30% din costurile de infrastructură la un proiect cu vreo 15k utilizatori activi, pur și simplu pentru că am înțeles că nu aveam nevoie de o bază de date NoSQL complexă, ci doar de un Postgres bine configurat.
2. „The Phoenix Project” – Gene Kim, Kevin Behr, George Spafford
Este un roman. Da, ați auzit bine, o ficțiune despre IT. Povestea urmărește un manager de IT promovat peste noapte care trebuie să salveze un proiect dezastruos pentru companie.
Când am citit-o, m-am simțit atacat personal. Am văzut acolo toate greșelile pe care le făceam: de la „eroul” echipei care lucrează noaptea și devine singurul care știe cum funcționează deploy-ul, până la task-uri începute și neterminate care blocau tot fluxul. M-a învățat că dezvoltarea software nu e doar despre cod, ci despre fluxul de lucru. Dacă tu scrii cod super rapid, dar QA-ul stă două săptămâni să-l testeze, ai creat un blocaj, nu valoare.
3. „Thinking, Fast and Slow” – Daniel Kahneman
Asta nu are nicio legătură directă cu programarea, dar are legătură cu creierul nostru. Kahneman explică cum avem două sisteme de gândire: unul rapid, intuitiv și unul lent, analitic.
Ca devi, suntem extrem de predispuși la „optimism bias”. Am avut un caz la un proiect unde a trebuit să estimez o migrare de date. Creierul meu „rapid” a zis: „Ah, e simplu, scriem un script, durează trei zile”. Creierul lent, dacă l-aș fi activat, ar fi calculat cazurile excepționale, conexiunile instabile și testarea. Evident, proiectul a durat trei săptămâni. Cartea asta m-a învățat să fiu sceptic cu propriile mele estimări și să pun întrebări mai bune înainte să mă apuc de tastat.
Voi ce cărți aveți pe noptieră care nu sunt despre sintaxă sau framework-uri, dar v-au făcut programatori mai buni?