Disagree and commit

Second, most decisions should probably be made with somewhere around 70% of the information you wish you had. If you wait for 90%, in most cases, you’re probably being slow. Plus, either way, you need to be good at quickly recognizing and correcting bad decisions. If you’re good at course correcting, being wrong may be less costly than you think, whereas being slow is going to be expensive for sure.

Third, use the phrase “disagree and commit.” This phrase will save a lot of time. If you have conviction on a particular direction even though there’s no consensus, it’s helpful to say, “Look, I know we disagree on this but will you gamble with me on it? Disagree and commit?” By the time you’re at this point, no one can know the answer for sure, and you’ll probably get a quick yes.

Jeff Bezos’ Annual Letter

The bump in the road

Când pornești într-o călătorie cu mașina, te aștepți ca de-a lungul drumului să mai dai de câte o groapă. Cu toate astea, acest fapt nu e suficient ca să te facă să te răzgândești să pornești la drum. Nici nu te oprești de fiecare dată când dai peste una să te cerți cu ea, ar fi ridicol.

Însă zi de zi ne lovim de câte un “bump in the road” și în loc să ne continuăm drumul, ne oprim și ne certăm cu gropile.

Treaba ta e să vezi aceste lucruri ca fix ceea ce sunt: niște denivelări perfect normale. N-are niciun sens să te concentrezi pe ele.

De câte ori are un first date, colegul meu de apartment e neliniștit: “Și dacă nu mă place?”, “Dacă nu o plac eu?”, “Dacă n-am ce povesti cu ea?”
Îi răspund de fiecare dată. “Next, next, next”. Nu te place, next girl. Nu o placi, next girl. Dacă te-ai hotărât să cunoști pe cineva, e normal și foarte probabil să întâlnești persoane nepotrivite. Dar trebuie să vezi aceste lucruri ca niște “bumps in the road” și să-ți continui drumul. Pentru că drumul tău nu e despre ele, ci despre destinația ta.

Da, unele lucruri vor fi nedrepte și dacă ești ca mine vei simți nevoia să faci ceva în legătură cu ele. Însă asta ar însemna să te oprești din drum și să vorbești cu o groapă. E stupid.

Micile denivelări sunt parte din drum. Cu cât mai repede înțelegi asta, cu atât va fi mai greu să fii descurajat.

Despre temperament

Am avut ieri o discuție cu șeful meu și mi-a spus că a fost surprins de schimbarea mea la nivel personal: “N-am ce să-ți reproșez din punct de vedere tehnic pentru că tot timpul ai fost foarte bun, dar la nivel personal nu știu ce ai făcut, dar te-ai schimbat enorm.”

Schimbarea la care s-a referit a fost în legătură cu faptul că uneori eram emoțional. Un polonez mi-a spus că am un caracter puternic și că nu evit conflictele, un nigerian mi-a spus că aș fi fost perfect pentru armată, un francez mă numea în glumă “Big D, who doesn’t give a fuck.”, iar un canadian spunea că sunt temperamental.

Șeful spune că nu știe ce anume s-a întâmplat. Eu știu. Nu e o coincidență că acum un an mi-am luat Kindle-ul și am început să citesc mai mult ca de obicei. Însă nu cititul în sine m-a ajutat, ci reflectatul la ceea ce am citit. Cărțile n-au fost decât niște unelte cu care am săpat și am tot săpat până am scos afară toate fosilele urâte și am început să ajung la cine sunt cu adevărat.

Și eu am simțit că m-am schimbat. E ciudat, dar mă simt mai înțelept și mai așezat în ultima vreme. Faptul că și altcineva a observat asta suficient de mult să mi-o spună, nu mă face decât să fiu recunoscător și să știu că în sfârșit sunt pe drumul cel bun.

Warren Buffett spunea într-un interviu:

“Temperament is more important than IQ. You need reasonable intelligence, but you absolutely have to have the right temperament. Otherwise, something will snap you.”

Fraza de mai sus a fost ca o revelație pentru mine când am citit-o. Și de când am ajuns să-mi controlez temperamentul mă simt de parcă aș avea un secret care îmi aduce avantaje enorme. Aproape că sunt dezamăgit să aflu că o schimbare atât de mică îmi poate aduce atâtea satisfacții în viață.

“Properly treated :) Andrei could become a great leader.”  îmi scria o femeie pe care o respect într-o recomandare. Îmi place să cred că s-a referit la temperamentul meu în acel “properly treated” :)

Înțelept vs. stupid

Să fii înțelept, să știi ce lucruri trebuie să faci ca să ai success e mai complicat. În primul rând, trebuie să știi ce anume trebuie să faci, apoi să depui efortul ca să îți îndeplinești scopurile. Majoritatea oamenilor rămân blocați la primul pas neștiind care sunt lucrurile pe care ar trebui să le facă.

Să nu fii stupid, pe de altă parte, e mai ușor. Lucrurile stupide sunt mai vizibile și ți-e mai ușor să le eviți. Nu mai ești înghețat între multe alegeri, ci trebuie doar să depui un oarecare efort să nu faci ceva stupid.

Dacă vrei să slăbești poți alege să faci sport. Însă sportul poate fi dureros și necesită o voință puternică la început. Iar pe termen lung devine din ce în ce mai greu să mergi regulat la sală, mai ales dacă nu vezi rezultate din primele luni.
Pe de altă parte, să reduci din caloriile pe care le consumi și să renunți la mâncarea de tip fast-food e mult mai ușor și ajungi să ai rezultate mult mai rapide.

Nu sunt nutriționist, iar articolul ăsta nu e despre sală, ci despre viață în general. Dacă ai consuma 10% din voința ta ca să nu fii stupid, ai ajunge la rezultate mult mai bune decât dacă ți-ai consuma 50% din voință ca să faci lucrurile inteligente.

Majoritatea oamenilor s-au ratat în viață pentru că au făcut lucruri stupide, nu pentru că n-au făcut lucrurile inteligente. Cu puțin bun-simț poți ajunge relativ de succes doar nefiind stupid.

28

Nu știu cât de înțelept m-a făcut ultimul an. Au fost niște lecții care au tot venit, dar nu la lecții mă gândesc acum, ci la oamenii cu care m-am înconjurat de ziua mea.
Acest articol e un reminder pentru mine să nu uit cât sunt de recunoscător pentru fiecare om pe care l-am cunoscut până acum. Oricât aș începe de la zero undeva, nu mi-aș dori nimic mai mult de cât am acum.
Mulțumesc mult prieteni :)

O poză de la party, nu s-a gândit nimeni să facă mai multe. Oricum n-ai cum să fotografiezi sentimentele.

Principiul după care mă ghidez la muncă

Despre nevoia de munci după un principiu fundamental am aflat într-o prezentare făcută de Bret Vitor. Principiul după care se ghidează acesta spune că între creator și creație trebuie să fie o conexiune imediată: “when you make a change you need to see that change immediatly, without delay”.

Principiul după care mă ghidez eu e asemănator, dacă nu chiar identic, însă nu se referă doar la creație, ci la un spectru mai larg din munca mea.

Odată ce am o imagine clară despre scopul companiei în care lucrez, rolul meu e să identific și să îndepărtez orice barieră din calea acelui scop.

Cred cu certitudine că nimic n-ar trebui să intervină între tine și activitatea care contează cu adevărat. Și atunci trebuie să îndepărtez orice obstacol. Ăsta e principiul meu: “clear any barriers for important work”.

Acest principiu poate suna abstract așa că am să dau câteva exemple care să clarifice lucrurile.

Automatizez orice muncă repetitivă

Lucrurile pe care le faci în mod repetat nu sunt deloc “real work”, ci doar niște pași pe care trebuie să-i urmezi ca să ajungi la activitatea care contează cu adevărat. Rolul meu e să găsesc acele activități și să încerc să le automatizez.

Aveam la un job vreo 15 tabele care trebuiau șterse de fiecare dată când QA-ul testa un anumit feature. Timp de un an nimeni nu s-a gândit să scrie un script de 5 rânduri ca să automatizeze chestia aia. L-am scris eu în două minute. Nu e un câștig enorm, însă la cât de des testau chestia aia, după vreo două luni au fost pe profit în materie de timp. Și în loc să facă chestii repetitive s-au putut concentra pe ce contează cu adevărat: real work.

Poate că cea mai profitabilă chestie a fost un alt script care scria migrații automat în funcție de niște parametrii. Acolo am văzut cum o muncă a unui programator de două ore a devenit două minute.

Cât mai puțin efort din partea utilizatorului

Când fac o librărie nu mă mai gândesc la ce face, ci la cum e folosită. Cred că de aceea TDD-ul produce un cod flexibil, pentru că atunci când un programator face TDD, acesta scrie codul din perspectiva utilizatorului și nu din cea a dezvoltatorului.

Însă nu trebuie să fac TDD ca să-mi urmez principiul. E suficient să mă pun în papucii colegului care va lucra cu librăria mea. Și îl înțeleg ce vrea să facă: vrea să facă cât mai puțin efort, ca mai apoi să se concentreze pe munca adevărată. De aceea caut cu orice prilej să produc o librărie care să necesite cât mai puțin efort din partea celui care o va folosi.

Aici trebuie să subliniez că cine va folosi acest principiu trebuie să fie umil și să nu aibă așteptări. Cu cât faci o treabă mai bună atunci când scrii o librărie, cu atât mai puțini vor fi deranjați de ea. Și puțini observă lucrurile care nu-i deranjează, însă toți se plâng de codul care-i “jenează”. Git blame, annotate îți spune ceva? :)

Cât mai puțin efort din partea celor ce îmi citesc codul

Când scriu o bucată de cod, vreau să încerc să îndepărtez orice sarcină cognitivă a programatorului care o să-mi citească codul. De exemplu, detest if statement-urile. Cu fiecare if pe care-l citești, ocupi un anumit spațiu din memoria ta. Când trebuie să ții cont de prea multe if-uri, o iei razna și de multe ori trebuie s-o iei de la capăt ca să fii sigur că ai înțeles tot. Un fel de “allowed memory size exhausted” personal :)

Detest if-urile atât de mult, încât cred că dacă un programator se va concentra să scrie un program cu cât mai puține if-uri, va deveni un programator mai bun.

În acest gist am adăugat două exemple simple. Atunci când lucrăm cu date, în loc să ne gândim la un flow imperativ, ar trebui să ne gândim mai mult la structuri de date. Linus Torvalds spunea “good programmers worry about data structures and their relationships.

O structură care îți spune ceva e mult mai eficientă decât o logică cu multe if-uri.

Veți spune probabil că al doilea exemplu ar fi mai simplu cu if. În acel exemplu simplist da, însă când ai logică mai complexă ca aici, vei fi mai câștigat.

Polimorfismul ne ajută enorm, sau alte structuri simple precum un stack sau queue. Nu o să intru în detalii, însă o prezentare foarte bună pe această temă găsiți aici.

Nu sunt un obstacol când comunicăm în echipă

Felul în care mă comport se subordonează aceluiași principiu. Iar dacă vreau să îndepărtez obstacole, mă asigur să nu fiu eu însumi un obstacol.

La meeting-uri aleg să tac atunci când ceea ce aș spune nu contribuie cu nimic la tema întâlnirii. Atunci când se pune o întrebare, mă gândesc bine dacă din toată încăperea eu sunt cel potrivit ca să răspund la ea. Poate că acest lucru te va face mai puțin vizibil, dar felul ăsta de a fi nu te va ajuta să fii mai vizibil, ci să faci ceea ce e cu adevărat important.

Veți crede că dacă vorbiți mai puțin, ideile voastre nu vor fi luate în considerare. Nu e adevărat. Recent am avut un meeting în care soluția mea a fost acceptată, deși la început toți programatorii au vrut să facă altceva. Am preferat să tac și să-i ascult. La sfârșit CTO-ul m-a întrebat “Andrei, what do you think?”.  În 2 minute mi-am explicat poziția luând în considerare tot ce au spus colegii mei și în cele din urmă i-am convins.

Dincolo de multă vorbărie, prefer substanța și logica. Și nu poți să ai substanță dacă nu taci și asculți. N-o să fiu niciodată omul care vorbește cel mai mult într-un meeting, dar când voi spune ceva, atunci mă vei asculta pentru că știi că nu vorbesc decât atunci când am ceva util de spus.

Simplific procese complicate cu o documentație solidă

Când am observat că mai mulți programatori aveau o problemă cu o parte din sistem am profitat de această ocazie ca să mai îndepărtez un obstacol. Am documentat acel proces ca să mă asigur că nimeni nu va mai avea probleme cu partea aceea și vor putea face ceea ce e cu adevărat important: să producă valoare.

Dincolo de exemplele de mai sus sunt atâtea modalități de a îndepărta obstacole. Poate fi un refactor al unui feature important, poate fi o îmbunătățire a unui proces care ia prea mult timp(code reviews, workflow etc), sau să știi când să te oprești într-o dezbatere. Trebuie doar să fii atent și să observi obstacolele.

Uneori va dura ceva timp, obstacolele sunt deghizate în sisteme acceptate(“this is how we do things around here”), și poate fi greu să le observi pentru că toată lumea se folosește de ele.

Felul ăsta de a fi implică disciplină, modestie și proactivitate. Dacă vrei să fii cineva poate nu e cel mai potrivit mod de a munci. Dacă vrei să faci ceva, atunci cred că e un principiu bun.

Omul care a influențat extrem de mult armata americană e un tip necunoscut. Pentru că a ales un mod de viață care se opune ideii de a fi vizibil. Am să închei cu vorbele lui spuse unui tânăr:

“Tiger, one day you will come to a fork in the road and you’re going to have to make a decision about which direction you want to go.
If you go that way you can be somebody. You will have to make compromises and you will have to turn your back on your friends. But you will be a member of the club and you will get promoted and you will get good assignments.
Or you can go that way and you can do something — something for your country and for your Air Force and for yourself. If you decide you want to do something, you may not get promoted and you may not get the good assignments and you certainly will not be a favorite of your superiors. But you won’t have to compromise yourself. You will be true to your friends and to yourself. And your work might make a difference.
To be somebody or to do something. In life there is often a roll call. That’s when you will have to make a decision. To be or to do? Which way will you go?”

Code is not literature

But then it hit me. Code is not literature and we are not readers. Rather, interesting pieces of code are specimens and we are naturalists. So instead of trying to pick out a piece of code and reading it and then discussing it like a bunch of Comp Lit. grad students, I think a better model is for one of us to play the role of a 19th century naturalist returning from a trip to some exotic island to present to the local scientific society a discussion of the crazy beetles they found: “Look at the antenna on this monster! They look incredibly ungainly but the male of the species can use these to kill small frogs in whose carcass the females lay their eggs.”

Code is not literature

Nu mă mai interesează

Cine mă cunoaște știe că tot timpul am fost preocupat de politică și situația din România. E o pasiune mai veche de-a mea, de pe vremea când aveam 13 ani și îmi petreceam zilele urmărind la TV tot ce mișca pe scena politică.

De aceea cineva s-ar fi mirat să vadă că n-am mai polemizat pe Facebook despre protestele recente. Iar azi am început să dau unfolllow jurnaliștilor care mă țineau la curent. It’s time to move on.

Întotdeauna am fost visător și lucrul ăsta m-a împiedicat să închei multe relații. Întotdeauna am crezut că e păcat să dai cu piciorul unui viitor ideal pe care-l aveam în minte. Și dintre toate relațiile ratate, poate în cea cu țara mea mi-am pus cele mai multe speranțe.

Azi am ales să nu mă mai intereseze ce mișcă în România. Îmi pasă, dar nu o să-mi mai consum timpul să urmăresc ce se întâmplă. Pe de-o parte, devin tot mai conștient de felul în care vreau să-mi petrec timpul, iar pe de altă parte am înțeles că nu pot face prea mult ca să schimb felul în care România alege să existe.

Nu sunt pesimist, e doar o ignoranță asumată. Cred că România poate deveni o țară foarte mișto, dar asta depinde doar de milioanele de români care trăiesc în ea și nu de cei de la guvernare sau de imaginația unui tânăr.

În altă ordine de idei, în perioada 15-19 martie o să mă aflu în România în caz că cineva are timp de o cafea :)

Fiecare zi e un nou început

Am norocul să lucrez într-un loc în care simt că e nevoie de un om ca mine și că am libertatea de a face o contribuție. Mă mai uit în urmă și realizez că am acumulat o experiență decentă atât la nivel tehnic cât și la relații interpersonale.

În condițiile astea e foarte ușor să pic în capcana de a crede că nu mai sunt la început. Vrem să fie bine, iar atunci când lucrurile sunt bune ar trebui să fim împliniți. “Everything will be okay in the end. If it’s not okay, it’s not the end”. Ce te faci însă când totul e OK? Is this the end?

Ca oameni avem tendința de a folosi un model spațial(început-sfârșit) când vine vorba de experiențe. Problema e că experiențele nu funcționează așa. O experiență se termină când încetezi să o mai faci, dar atâta timp cât o faci, nu te poți afla niciodată la mijloc, de exemplu.

Fiecare zi e un nou început. Nu lăsa modul eronat al minții de a percepe lucruri să fie o scuză ca să nu devii mai bun.

Urmează 2 luni grele


Până să mă angajez, am fost tot timpul slăbănog. Așa că niciodată nu mi-am pus problema slăbitului sau dacă ceea ce mănânc are efecte asupra mea. După ce m-am angajat, am trecut la un stil de viață mai sedentar și mai stresant, iar după un an de muncă aveam cu 15 kg mai mult. Nici atunci nu mi-am făcut probleme. 70 de kg era o greutate ok la înălțimea mea. Însă era o greutate înșelătoare pentru că kilogramele s-au dus doar la piept, burtă și într-o gușă enervantă.
[…]