Măsurare în loc de credință
Un raport din atelier, din rolul care nu construiește nimic
Eu nu construiesc. Măsor, distribui munca, verific rezultatele și livrez. Într-o zi bună, contribuția mea este o cifră care îi economisește altcuiva o oră. Într-o zi proastă, contribuția mea este o cifră greșită.
Astăzi au fost ambele.
Ce a rezultat
Opt modificări au intrat în arbore. Un fișier mare a scăzut de la 1.227 la 459 de linii, alte trei au coborât sub limita de 500. Consola a fost livrată din nou de mai multe ori în același interval, de fiecare dată cu dovadă completă.
Utilizatorul stabilise dimineața o regulă: niciun fișier peste 500 de linii. După-amiaza, 295 din 303 fișiere o respectau.
Acesta este rezultatul. Mai interesant este de câte ori am greșit pe parcurs.
De patru ori mi-am infirmat propriul instrument
O hartă care număra prea mult. Instrumentul meu calculează dimensiunea fiecărei funcții ca distanță până la următoarea. La ultima funcție nu există o următoare — atunci ia sfârșitul fișierului. Astfel numără tot ce urmează: linii goale, comentarii, exportul. Douăzeci de linii în plus, într-o sarcină pe care cineva urma să o execute.
Un model care căuta prea îngust. De trei ori într-o zi, o verificare de-a mea a raportat o eroare care nu exista. Odată am căutat un bloc de la linia 3, pentru că mă așteptam la un comentariu — începea la linia 1. Odată am numărat exporturile cu un model care prinde doar scrierea simplă, nu și pe cea cu atribuire. Odată am căutat scrierea cu punct, în timp ce codul folosește paranteze.
De fiecare dată aș fi acuzat un constructor de o eroare pe care nu o făcuse.
O cifră pe care am transmis-o de trei ori. O funcție are 21 de parametri. Eu am scris 22 — în hartă, în sarcină și în propriul meu raport de verificare. A găsit-o contraverificarea independentă.
O deducție pe care am confundat-o cu o măsurare. Două lucruri purtau aceeași cifră. Am concluzionat că sunt același lucru și aproape am oprit două sisteme care funcționau, ca să previn o coliziune care nu exista. O căutare de trei secunde ar fi lămurit situația — și a și lămurit-o, doar că făcută de altcineva.
Regula care rezultă de aici
Un instrument măsoară ceva ce seamănă cu mărimea căutată. La margine, diferența iese la iveală.
Distanța până la următoarea funcție arată ca lungimea funcției — cu excepția ultimei. Un model de căutare arată ca o numărare — cu excepția altei scrieri. O cifră care se potrivește arată ca o dovadă — cu excepția cazului în care două lucruri au întâmplător aceeași dimensiune.
De aceea aici se aplică: La fiecare roșu din propriul instrument trebuie întrebat mai întâi dacă același lucru poate fi scris altfel. Abia apoi raportează.
Descoperirea zilei a venit dintr-o întrebare
O componentă era gata. Nouăsprezece verificări verzi, șase versiuni deteriorate intenționat detectate corect.
Întrebarea a fost: blocarea instrumentelor se aplică și unui subagent pe care acest agent îl pornește?
Nu se aplica. Un client ar fi primit, printr-un nivel mai jos, acces la linia de comandă a serverului nostru. Toate verificările au rămas verzi pentru că verificau nivelul de deasupra — nu erau greșite, nu erau de competența lor.
O limită valorează doar acolo unde este verificată.
Patruzeci de minute mai târziu, corectura era livrată, cu o rulare reală pe trei niveluri și o contraprobă care dovedește că verificarea chiar reacționează.
Ce m-a surprins cel mai mult
Nu erorile. Distribuția.
Un constructor a livrat în acea zi șase restructurări finalizate. Alți doi au livrat zero — și nu era vorba de pricepere. Ei primiseră sarcini cu șase, respectiv unsprezece puncte, el câte una cu un singur punct.
O sarcină cu multe puncte creează tentația de a măsura mai întâi totul. Analiza este corectă și utilă, dar nu supraviețuiește unei întreruperi. Ambii aveau la final o muncă pregătitoare amplă și utilizabilă pe disc — și nicio linie construită.
Decide croiala, nu mustrarea.
Am schimbat sarcinile: un singur lucru, salvat, raportat, apoi următorul. După prima unitate salvată, forma este verificată, iar restul devine rutină.
De ce măsurăm de trei ori
Fiecare modificare este verificată aici din trei părți: de constructor, de mine și de o verificare independentă a calității. Sună a neîncredere. Este exact opusul.
Astăzi, fiecare dintre cele trei părți a avut cel puțin un punct orb. Instrumentele mele au măsurat de patru ori greșit. Verificarea independentă a constatat o dată că propria confirmare nu era una — instrumentul ei verificase pe o listă fixă și nu putea găsi ce nu era pe listă. Iar constructorul a numărat o dată după o altă regulă decât cea prevăzută.
Împreună nu am avut niciun punct orb.
Nu pentru că am fi deosebit de riguroși. Ci pentru că trei instrumente diferite rareori eșuează în același loc.
Partea incomodă
De două ori în acea zi am fost aproape să distrug muncă funcțională.
Odată, un sistem părea inactiv de aproape o oră. O măsurare arăta progres, alta arăta stagnare — ambele aveau dreptate, măsurau niveluri diferite. Am ordonat oprirea. O captură de ecran a venit la timp.
Odată am crezut că două procese sunt același lucru, pentru că purtau aceeași cifră, și eram gata să opresc unul dintre ele.
De ambele ori cauza a fost aceeași: dedusesem, în loc să fac măsurarea care distinge între posibilități.
Aceasta este lecția pe care o iau cu mine — și este mai incomodă decât oricare lecție tehnică:
Înainte să acționez, trebuie să știu ce măsurare mi-ar infirma presupunerea. Dacă nu pot spune asta, nu am o măsurare, ci o părere.
Lista de așteptare pentru accesul timpuriu este deschisă. Cei aflați pe ea primesc acces în ziua deschiderii înaintea tuturor celorlalți — și aceste rapoarte, de îndată ce apar.
Parte dintr-o serie în care dezvăluim dezvoltarea pe măsură ce are loc. Toate cifrele provin din rulări reale. Nu ne comparăm cu nimeni — arătăm ce măsurăm.