Codul developerului român, dicționarul româno-corporate și scuzele oficiale

Dor de codul românesc

Dor — cuvântul pe care nu-l putem traduce. Codul — cel pe care nu-l putem lăsa în pace. Un loc pentru developerii români din țară și de prin lume, pentru PM-ii care îi estimează și pentru CTO-ii care îi angajează.

Fără formulare. Fără cookies. Fără recruiteri cu „hi dear”. Promis. Scris de .

Un cod (pește) cusut în cruciulițe roșii și bleumarin, mascota Dor de codul românesc

Ce-i cu dorul ăsta?

România a exportat în ultimii 20 de ani mai mulți developeri decât își poate aminti cineva. Unii au plecat la Zürich, alții la Berlin, alții doar pe un Slack cu fus orar din California. Toți au rămas cu același reflex: când merge, zic „lasă că merge”. Când nu merge, zic „se rezolvă”.

Dor de codul românesc e locul unde ne recunoaștem: cei de aici, cei de acolo, managerii care au învățat să citească printre rânduri și companiile care au aflat că un developer român rezolvă lucruri.

Nu e agenție. Nu e platformă de recrutare. Nu colectăm nimic, nici măcar feedback. E doar adevărul, cu simțul umorului la vedere.

Codul developerului român

Orice popor are un cod. Al nostru nu se aplică, dar se respectă.

  1. Art. 1.Orice bug se manifestă exclusiv în producție, vineri, după 17:00.
  2. Art. 2.„La mine merge” constituie probă legală.
  3. Art. 3.„Lasă că merge” nu este strategie de deploy. (Dar este.)
  4. Art. 4.Comentariile se scriu în engleză, variabilele în română, iar listaClienti2Final este patrimoniu național.
  5. Art. 5.Diacriticele sunt opționale până când ajung în baza de date.
  6. Art. 6.Estimarea se dă în zile și se citește în săptămâni.
  7. Art. 7.Orice TODO mai vechi de doi ani devine documentație.
  8. Art. 8.Cafeaua nu e beneficiu extra-salarial. E infrastructură.
  9. Art. 9.Developerul român rezolvă. Nu știe încă cum, dar se rezolvă.
  10. Art. 10.Ședința de 15 minute durează o oră și se încheie obligatoriu cu „facem un follow-up săptămâna viitoare”.
  11. Art. 11.Parola de la serverul de producție se transmite oral, din generație în generație, ca rețeta de cozonac.
  12. Art. 12.Fiecare proiect are un Gigel care știa tot. Gigel a plecat acum trei ani. Numele lui e încă în crontab.
  13. Art. 13.Documentația oficială a proiectului este un mesaj vocal de patru minute pe grupul echipei, din 2019.
  14. Art. 14.Fișierul config_final_BUN_nu_sterge.json nu se șterge. Nimeni nu știe de ce. Nimeni nu întreabă.
  15. Art. 15.„Cine a scris porcăria asta?” este o întrebare retorică. git blame răspunde întotdeauna: tu, acum opt luni.
  16. Art. 16.Un task „de cinci minute” este, prin definiție, orice task pe care nu l-a deschis încă nimeni.
  17. Art. 17.Testele se scriu după incident, în memoria victimelor.
  18. Art. 18.Singurul laptop de pe care merge deploy-ul aparține unui coleg aflat acum în concediu la mare, fără semnal.
  19. Art. 19.Soluția temporară din 2016 a primit statut de monument istoric și nu mai poate fi atinsă fără aviz.
  20. Art. 20.În lipsa unei specificații, se aplică principiul „știi tu, ca la ăia”.
  21. Art. 21.La daily, camera rămâne închisă. Motivul oficial: „îmi merge prost netul”. Motivul real: pijamaua.
  22. Art. 22.Refactorizarea se programează „când avem timp”, dată fixă din calendar care nu vine niciodată.
  23. Art. 23.De sărbători, bunica te întreabă dacă poți să-i repari imprimanta. Poți. Asta e, de fapt, fișa postului.
  24. Art. 24.Prezentul Cod intră în vigoare la data publicării și se modifică exclusiv prin pull request.

Ai un articol de propus? Deschide un pull request

Generatorul oficial de scuze

Pentru standup, pentru retro, pentru client. Certificat conform Art. 2.

Nu e bug, e un comportament nedocumentat. Îl documentez și devine feature.

Folosire nelimitată. Credibilitatea scade după a treia pe sprint.

Toate scuzele, pentru planificare pe termen lung (16)
  1. Nu e bug, e un comportament nedocumentat. Îl documentez și devine feature.
  2. Întâi a picat netul, apoi curentul, apoi motivația. Doar două au revenit.
  3. Aștept review de la colegul care a zis „mă uit imediat”. Acum două sprinturi.
  4. Era gata, dar am actualizat o dependință și acum nu mai e nimic gata. Nici proiectul, nici eu.
  5. Pe staging merge perfect. Producția are pur și simplu altă personalitate.
  6. Am lucrat săptămâna asta de la bunica, de la țară. Acolo 4G-ul e mai mult un concept.
  7. Codul e gata. Doar că nu compilează încă.
  8. Am găsit exact problema mea pe un forum din 2011. Ultimul răspuns: „rezolvat, mersi”. Fără detalii.
  9. Cerințele s-au schimbat de trei ori. Eu am implementat-o pe a doua, care era cea bună.
  10. Estimarea mea a fost corectă. Realitatea e cea care a întârziat.
  11. Testele trec. Nu le-am rulat, dar au o față de teste care trec.
  12. A fost minivacanța de 1 Mai, care la noi ține cam de pe 28 aprilie până pe 5 mai.
  13. Am rezolvat bug-ul, dar fix-ul a stricat altceva, pe care l-am rezolvat, dar… s-a terminat sprintul.
  14. Pe tichet scria „mică ajustare”. S-a dovedit a fi o migrare de bază de date.
  15. Era de la cache. Am golit cache-ul. Acum nu merge din alt motiv, dar măcar cu cache-ul curat.
  16. Nu e întârziere, e livrare în stil românesc: totul în ultima noapte, dar cu pasiune.

git log --oneline, echipa din Iași

Mesaje reale de commit. Numele au fost schimbate, codul nu.

$ git log --oneline main
d50fca0 fix pentru fix-ul de ieri
77cb603 revert la revert, acum merge pe bune
721b209 am scos console.log-urile (majoritatea)
7b926f2 nu întrebați
ed24841 update final final2 de data asta chiar final
62e298b am mutat bug-ul din backend în frontend, acum e problema altcuiva
262859f wip nu merge dar plec acasă
4659aae am șters codul comentat din 2018. dacă se strică ceva, era important

Dicționar româno-corporate

Pentru managerii străini care lucrează cu developeri români. Traducere contextuală, din experiență, gratuită.

Se spuneSe înțelege
merge și așaacceptable technical debt
se rezolvăunblocked; ETA unknown
hai că-i simpluthree sprints
nu-i nicio problemăthere is a problem
vezi că…critical warning
la mine mergecannot reproduce
îl bag repedehotfix, no tests
mai vedemwon't fix
să nu ne grăbimthey know something you don't
e ok, dar…it is not ok
e doar un ifminor scope adjustment
am pus un try-catchrobust error-handling strategy implemented
l-am testatmanually verified in a representative environment
am vorbit cu ăla de la backendcross-team alignment achieved
facem pe repede, apoi facem binephased delivery approach
ultima modificare, pe bunefinal scope freeze (v4)
las' că văd eu"I'll take ownership of this." (You won't hear of it again until it breaks.)
nu e de la noi"The root cause appears to be upstream."
am înțeles"Fully aligned. Moving to implementation."
ce-a vrut să zică poetul?"We'd like to clarify a few requirements."
cine a scris asta?"Let's run a blameless post-mortem." (It was them.)
Am o întrebare.There's a hole in your architecture. You have about 30 seconds to spot it yourself.
Mă uit diseară.Fixed by morning. Do not ask when they slept.
Păi…Brace for a 20-minute, annoyingly correct explanation of why your plan won't work.
Interesant…Production runs on something nobody understands. Budget accordingly.

Lipsește o expresie? Adaug-o prin pull request

Pentru PM, scrum masteri și administratorii de Jira

Voi țineți proiectul în viață. Noi vă spunem ce se întâmplă de fapt în spatele board-ului.

Jira, tradus

Pe board scrieÎn realitate
In ProgressAm creat branch-ul. Atât. Restul e o stare de spirit.
Story points: 3Am votat 3 ca să se termine odată ședința de planning.
BlockedAștept răspuns de la client din martie. Între timp, refactorizez ceva ce nu mi-a cerut nimeni.
DoneAm dat merge. De-aici încolo e între QA și Dumnezeu.
Code ReviewPR de 2.000 de linii: „LGTM”. PR de 3 linii: 47 de comentarii despre numele unei variabile.
Won't FixDe azi e feature. Îl trecem și în release notes, cu entuziasm.
ReopenedClientul a dat refresh.
Priority: HighestBug-ul l-a găsit fiul directorului. Pe tabletă.
BacklogPodul bunicii: nu mai urcă nimeni acolo, dar nici nu se aruncă nimic.
Assignee: UnassignedToată echipa știe de el, nimeni nu-l atinge. Ca priza din bucătărie care scânteiază.

Convertor de estimări

Developerul ziceTu treci în plan
„Cinci minute”Cinci minute ca să înțeleg problema. Restul nu l-am estimat.
„Două ore”Două ore de cod și două zile de merge conflicts.
„O zi”O zi de lucru. Calendaristic, marțea viitoare.
„Cam 80% gata”Acum încep celelalte 80%.
„Depinde”N-am nicio idee, dar sună a senior.
„Mâine dimineață”Dimineață pe fusul orar al cui? Și care mâine?
„Până la finalul sprintului”Al unui sprint. Nu neapărat ăsta.

Bingo de standup

Bifează ce auzi. Primul care face o linie are voie să închidă camera.

Pentru CTO: ce primești, de fapt

Ați lucrat cu un developer român și ceva s-a reparat ce nu reparase nimeni. Sau n-ați lucrat și ați auzit. Iată documentația pe care n-a scris-o nimeni.

MODEL: RO-DEV · REV. 2026 · MADE IN CLUJ / IAȘI / TIMIȘOARA / BUCUREȘTI

Developer român — specificații tehnice

Temperatură de funcționare
De la open-space cu AC-ul pe 17°C la iulie în Pitești, fără AC. Performanță identică.
Alimentare
Cafea (principal), energizant (backup), sarmale (UPS de sărbători).
Latență
Pe chat: 30 de secunde. Pe email: până vineri. La „ai un minut?”: timeout.
Compatibilitate
Orice stack, orice limbaj, orice framework lansat marțea trecută. Incompatibil cu ședințele care puteau fi un email.
Garanție
Pe viață, dacă nu schimbați cerințele după code freeze. Durata medie a garanției: 11 zile.
Probleme cunoscute
Refactorizează fără ticket. Ocazional rescrie tot, „că era mai simplu așa”.
Mod economisire energie
Se activează în ședințele de peste o oră: camera oprită, „am probleme cu netul”. Pe una dintre cele mai rapide conexiuni din Europa.
Firmware
Actualizat din documentație, forumuri și un comentariu cu 3 like-uri pe un issue din 2014, care chiar a mers.
Capacitate de încărcare
3 proiecte oficial, 5 neoficial, plus site-ul firmei lui nașu'.
Accesorii incluse
Laptop cu 47 de taburi deschise, cană de la un meetup din 2017, termos cu ciorbă de la mama.

Întrebări frecvente de la CTO

Cât de repede se adaptează un developer român la stack-ul nostru?

În prima săptămână îl învață. În a doua vă explică de ce l-ați ales greșit.

Lucrează și în fusul nostru orar?

Lucrează în fusul vostru, dorm în al lor, iar cu o seară înainte de demo trec pe UTC+cafea.

Pot să-i dau un task fără specificații?

Da. Primiți ce ați cerut, ce trebuia să cereți și o întrebare incomodă la standup.

Ce înseamnă când un developer român tace în ședință?

Nu e de acord. Și are deja un branch deschis cu varianta lui.

Au nevoie de micromanagement?

Nu. Încercați și o să primiți voi check-in-uri zilnice: „Și roadmap-ul unde e?”

Cum reacționează la cod legacy?

Un oftat, un „cine a scris asta?”, apoi git blame. Apoi o tăcere lungă: era chiar el, în 2019.

Ce se întâmplă de Crăciun și de Paște?

Deploy-urile îngheață. Developerul ține cozonacul la cameră, ca să știți exact ce pierdeți.

Vorbesc engleză?

Fluent. Plus sarcasm la nivel C2, trecut sub tăcere în CV din modestie.

Care e cel mai mare risc?

Să plece. Nu la concurență, ci să-și facă startup pe ideea pe care i-ați respins-o în Q2.

Ce spun clienții

Recenzii fictive, inspirate din fapte reale.

„A găsit un bug în specificațiile noastre înainte să scriem prima linie de cod. Încă suntem supărați.”
— CTO, fintech, Berlin
„Am cerut un MVP. Am primit o platformă scalabilă și întrebarea «de ce n-ați zis asta de la început?»”
— Fondator, SaaS, Amsterdam
„Standup-ul durează 4 minute. Restul de 11 sunt despre de ce grătarul nostru nu e, de fapt, grătar.”
— VP Engineering, logistică, Copenhaga
„Ne-a tăiat factura de cloud cu 40%. Apoi a întrebat de ce plătim licențe pentru un tool pe care nu-l deschide nimeni.”
— Head of Platform, e-commerce, Dublin
„Cinci stele. Pe a șasea a scos-o la refactorizare, zicea că e redundantă.”
— Engineering Manager, healthtech, Zürich