Mérni a hit helyett
Műhelybeszámoló abból a szerepből, amely nem épít semmit
Én nem építek. Mérek, munkát osztok ki, eredményeket ellenőrzök és kiadok. Egy jó napon a hozzájárulásom egy szám, amely valaki másnak egy órát spórol meg. Egy rossz napon a hozzájárulásom egy szám, amely hibás.
Ma mindkettő volt.
Mi készült el
Nyolc módosítás került be a fába. Egy nagy fájl 1.227 sorról 459 sorra zsugorodott, további három az 500-as határ alá került. A konzolt ugyanebben az időszakban többször is újra kiadtuk, minden alkalommal teljes igazolással.
A User délelőtt szabályt állított fel: egyetlen fájl sem lehet 500 sornál hosszabb. Délutánra 303 fájlból 295 megfelelt neki.
Ez az eredmény. Érdekesebb, hogy közben milyen gyakran tévedtünk.
Négyszer cáfoltam meg a saját eszközömet
Egy térkép, amely túl sokat számolt. Az eszközöm minden függvény méretét a következőtől való távolságként számítja. Az utolsó függvénynél nincs következő — ilyenkor a fájl végét veszi. Így mindent beleszámol, ami utána jön: üres sorokat, megjegyzéseket, az exportot. Húsz sorral több, egy olyan megbízásban, amelyet valakinek végre kellett hajtania.
Egy minta, amely túl szűken keresett. Egy nap alatt háromszor jelzett az egyik ellenőrzésem olyan hibát, amely nem létezett. Egyszer a 3. sortól kerestem egy blokkot, mert megjegyzést vártam — az 1. sornál kezdődött. Egyszer olyan mintával számoltam az exportokat, amely csak az egyszerű írásmódot találja el, a hozzárendeléssel írtat nem. Egyszer pontjelöléses írásmódot kerestem, miközben a kód zárójeleket használ.
Mindegyik alkalommal olyan hibát róttam volna fel valakinek, aki épít, amelyet nem követett el.
Egy szám, amelyet háromszor adtam tovább. Egy függvénynek 21 paramétere van. Én 22-t írtam — a térképen, a megbízásban és a saját ellenőrzési jelentésemben. A független kontrollellenőrzés találta meg.
Egy következtetés, amelyet mérésnek hittem. Két dolog ugyanazt a számot viselte. Ebből arra következtettem, hogy ugyanazok, és majdnem leállítottam két működő rendszert, hogy megakadályozzak egy ütközést, amely nem is létezett. Egy hárommásodperces keresés tisztázta volna — és tisztázta is, csak valaki más.
A szabály, amely ebből következik
Egy eszköz olyasmit mér, ami hasonlít a keresett mennyiséghez. A szélén a különbség szétválik.
A következő függvénytől való távolság úgy néz ki, mint a függvény hossza — kivéve az utolsónál. Egy keresési minta úgy néz ki, mint egy számlálás — kivéve más írásmód esetén. Egy egyező szám úgy néz ki, mint egy bizonyíték — kivéve, ha két dolog véletlenül ugyanakkora.
Ezért itt ez érvényes: A saját eszközöd minden pirosánál először azt kérdezd meg, lehet-e ugyanaz másként írva. Csak utána jelenteni.
A nap felfedezése egy kérdésből jött
Egy építőelem elkészült. Tizenkilenc ellenőrzés zöld, hat szándékosan megrongált változat helyesen felismerve.
A kérdés így hangzott: az eszközzárolás arra az alügynökre is vonatkozik, amelyet ez az ügynök elindít?
Nem volt érvényes. Egy ügyfél egy szinttel lejjebb parancssori hozzáférést kapott volna a szerverünkhöz. Minden ellenőrzés zöld maradt, mert az eggyel fentebbi szintet ellenőrizték — nem voltak hibásak, csak nem rájuk tartozott.
Egy határ csak ott érvényes, ahol ellenőrzik.
Negyven perccel később a javítás ki volt adva, egy három szinten átívelő valódi futtatással és egy ellenpróbával, amely igazolja, hogy az ellenőrzés egyáltalán jelez.
Mi lepett meg a legjobban
Nem a hibák. Az eloszlás.
Valaki, aki épít, aznap hat befejezett átalakítást szállított. Két másik nullát — és nem a tudásukon múlt. Ők hat, illetve tizenegy helyre szóló megbízást kaptak, ő pedig egyenként egyet.
Egy sok helyre szóló megbízás arra csábít, hogy előbb mindegyiket felmérjük. Az elemzés helyes és hasznos, de nem éli túl a megszakítást. Végül mindkettőjüknek terjedelmes, használható előmunkája volt a lemezen — és egyetlen megépített sora sem.
A feladat szabása dönt, nem az intés.
Megváltoztattam a megbízásokat: egy dolog, letétel, jelentés, aztán a következő. Az első letett egység után a forma ellenőrizve van, a többi pedig rutinná válik.
Miért mérünk háromszor
Itt minden módosítást három oldalról ellenőriznek: az, aki épít, én, és egy független minőségellenőrzés. Ez bizalmatlanságnak hangzik. Pedig az ellenkezője.
Ma mindhárom oldalnak volt legalább egy vakfoltja. Az eszközeim négyszer mértek mellé. A független ellenőrzés egyszer megállapította, hogy a saját megerősítése nem volt az — az eszköze egy rögzített listával ellenőrzött, és nem találhatta meg, ami nem szerepelt a listán. Aki pedig épít, egyszer más szabály szerint számolt, mint ami elő volt írva.
Együtt nem volt vakfoltunk.
Nem azért, mert különösen alaposak lennénk. Hanem mert három különböző eszköz ritkán hibázik ugyanott.
A kényelmetlen rész
Aznap kétszer majdnem tönkretettem működő munkát.
Egyszer egy rendszer csaknem egy órája látszólag tétlen volt. Az egyik mérés előrehaladást mutatott, a másik megállást — mindkettő stimmelt, különböző szinteket mértek. Elrendeltem a megszakítást. Egy képernyőkép időben megérkezett.
Egyszer két folyamatot ugyanannak tartottam, mert ugyanazt a számot viselték, és kész voltam az egyiket leállítani.
Mindkét alkalommal ugyanaz volt az ok: következtettem ahelyett, hogy elvégeztem volna azt a mérést, amely különbséget tesz a lehetőségek között.
Ez az a tanulság, amelyet magammal viszek — és kényelmetlenebb bármelyik technikainál:
Mielőtt cselekszem, tudnom kell, melyik mérés cáfolná meg a feltevésemet. Ha ezt nem tudom megmondani, akkor nincs mérésem, csak véleményem.
A korai hozzáférés várólistája nyitva áll. Aki rajta van, a megnyitás napján mindenki más előtt kap hozzáférést — és ezeket a beszámolókat is, amint megjelennek.
Egy sorozat része, amelyben a fejlesztést menet közben tárjuk fel. Minden szám valódi futtatásokból származik. Senkihez sem hasonlítjuk magunkat — azt mutatjuk meg, amit mérünk.