
Čo v skutočnosti znamená vydanie so 127 commitmi
GeekBye v1.7.0 malo 127 commitov za jedenásť dní. Zvonku to vyzerá ako sto drobností. Zvnútra to boli dve veľké funkcie spletené dokopy — a jednu z nich najprv postavili na nesprávnom mieste, potom ju vytrhli a prestavali uprostred vydania. Tu je anatómia veľkého vydania.
Existuje verzia tohto článku, ktorá len vymenúva všetko v GeekBye v1.7.0 — prepracovanú domovskú obrazovku, proces kalibrácie, zbaliteľný bočný panel, nové nastavenia a tak ďalej. Bola by presná a nič by vás nenaučila. Lebo úprimný príbeh vydania so 127 commitmi nie je zoznam. Je to tvar.
Tu je ten tvar. Sto dvadsaťsedem commitov znie ako sto dvadsaťsedem drobností. Takmer nikdy ním nie je. v1.7.0 boli dve veľké funkcie, budované paralelne na dlho žijúcich vetvách asi jedenásť dní a spletené dokopy na konci. Pochopiť veľké vydanie znamená pochopiť tie dve vlákna — a to jedno miesto, kde sme niečo postavili na zlom bode a museli sme to vytrhnúť za letu.
Vlákno prvé: kalibrácia
Prvým vláknom bola kalibrácia — hlasové AI hodnotenie vašich komunikačných zručností. Začnete živý hovor s AI „kariérnym koučom", prejdete štruktúrovaným súborom fáz (rozohriatie, behaviorálna, technická komunikácia, reakcia pod tlakom, stanovovanie cieľov) a na konci dostanete skóre v šiestich dimenziách: sebadôvera, jasnosť, konkrétnosť, angažovanosť, vyrovnanosť, relevantnosť. Pod povrchom meria aj konkrétne rečové metriky — tempo reči, frekvenciu výplňových slov, či sa vaše pauzy čítajú ako strategické alebo ako neisté.
Výstup nie je známka, je to východiskový bod. Kalibrácia vytvorí vaše silné stránky, oblasti rastu a — čo je kľúčové — odporúčanú náročnosť, na ktorej začať cvičiť. Kalibruje to, kde vás produkt má stretnúť. Každá zručnosť sa vráti ako rozbaliteľná karta so spätnou väzbou, so zhrnutím, konkrétnym návrhom a skutočne citovanou vetou z vášho vlastného hovoru ako príkladom. Je to funkcia, na ktorej je postavený zvyšok cvičebného zážitku.
Vlákno druhé: celé nové okno
Druhým vláknom bol prémiový redizajn — a nazvať to redizajnom ho podceňuje. Nebolo to prekrytie existujúcich obrazoviek novým vzhľadom; bolo to v podstate druhé okno aplikácie, rozvinuté v šiestich explicitných fázach: zbaliteľný bočný panel v štýle Notion, rozbaľovacia ponuka v hlavičke, ktorá nahradila starý zoznam relácií, navigácia v štýle prehliadača s históriou a omrvinkami a prémiové prestavby obrazoviek Home, Profily, Stretnutia a Nastavenia.
Dve veľké funkcie. To bolo naozaj tých 127 commitov. A najťažšou časťou ich dodania nebolo napísanie ani jednej z nich — bolo to spletanie. Obe vetvy boli navzájom závislé; jedna sa zlúčila do druhej a vetva kalibrácie musela stiahnuť hlavnú vetvu štyrikrát samostatne len preto, aby sa nedostala mimo synchronizácie, kým sa redizajn pohyboval pod ňou. Počet commitov nie je cenou veľkého vydania. Cenou sú dlho žijúce vetvy a poradie integrácie.
Časť, ktorá stojí za prečítanie: kalibráciu sme postavili na nesprávnom mieste
Tu je tá chyba, a je dobrá práve preto, že je taká bežná.
GeekBye má pevné architektonické pravidlo: všetky AI operácie žijú na backende. Klient je tenká škrupina, ktorá sa rozpráva so serverom. Všetci to vedeli.
A predsa kalibráciu najprv postavili v lokálnej databáze klienta. Vyhradená tabuľka, migrácia databázy, repozitár na 254 riadkov, IPC handlery a banka hodnotiacich otázok na 515 riadkov — všetko žijúce na stroji používateľa. Fungovalo to. A zároveň to potichu porušovalo zmluvu, na ktorej je postavená celá aplikácia.
O tri dni neskôr jeden commit zmazal 680 riadkov v ôsmich súboroch, aby to všetko presunul na backend, kde sa dáta kalibrácie stali riadnym serverovým modelom a logika otázok a bodovanie sa stali záležitosťou servera. Ďalší commit zmazal klientsku banku otázok na 515 riadkov úplne. Diff je takmer smiešny: jedno vloženie, šesťsto osemdesiat zmazaní.
Nikto sa nechystal napísať 680 riadkov jednorazového kódu. Stalo sa to tak, ako sa to vždy stáva: skratka na strane klienta je rovno tu, prototypovať lokálne je rýchlejšie a „presunieme to na backend neskôr" pôsobí neškodne. Ale keď vám architektúra už hovorí, kde žije zdroj pravdy, postaviť to kdekoľvek inde nie je skratka — je to práca navyše, ktorú ste si sami vopred naplánovali. Ponaučenie, ktoré ostalo: dajte to tam, kde hovorí zmluva, na prvýkrát, aj keď lokálnu verziu postavíte rýchlejšie.
Chyba, ktorú mohla nájsť iba integrácia
Ešte jeden dôkaz, lebo je to charakteristický spôsob zlyhania veľkých vydaní. Len čo sa kalibrácia a nová navigácia prepojili a naozaj bežali, aplikácia začala spúšťať limit počtu požiadaviek — HTTP 429 — bez zjavného dôvodu.
Príčina bola čisto integračná. Stav kalibrácie sa načítaval na úrovni komponentu, takže každá navigácia ho načítala nanovo — a striktný režim React, ktorý zámerne dvakrát vyvolá efekty vo vývoji, aby odhalil chyby, to znásobil ešte raz. Výsledkom boli štyri až osem rovnakých požiadaviek kalibrácie vypálených pri každej zmene obrazovky, dosť na to, aby sa spustil obmedzovač počtu požiadaviek servera. Oprava skonsolidovala načítavanie na pár volaní pri pripojení.
Túto chybu ste nemohli nájsť testovaním samotnej kalibrácie ani samotnej navigácie. Existuje len na šve — tam, kde sa stretávajú dve nezávisle správne funkcie. To je daň, ktorú si veľké vydanie účtuje: posledná míľa nie je stavanie funkcií, je to objavovanie všetkého, čo sa pokazí až vtedy, keď sú konečne v jednej miestnosti.
Tri veci, ktoré naučilo veľké vydanie
- Vydanie so 127 commitmi sú dve alebo tri veľké témy, nie sto malých. Nájdite vlákna. Práca — a riziko — žije v tom, ako sa spletajú, nie v počte.
- Dajte zdroj pravdy tam, kde hovorí zmluva, na prvýkrát. Zmazali sme 680 riadkov pri presúvaní kalibrácie z klienta na backend. Lokálna skratka je práca navyše naplánovaná vopred; architektúra vám už dala odpoveď.
- Integrácia odhalí zlyhania, ktoré izolácia nedokáže. Búrka 429 žila na šve medzi dvomi správnymi funkciami a objavila sa až vtedy, keď bežali spolu. Vyhraďte si rozpočet na integračný prechod, nielen na testovanie jednotlivých funkcií.
Toto je príbuzný z éry v1 príbehu, ktorý by sme rozpovedali znova v oveľa väčšom meradle — pozri čo v skutočnosti vyžaduje verzia dve: 206 commitov úprimných stavov (v2.0.0), kde sa tá istá pravda „veľké číslo je v skutočnosti pár veľkých nápadov" odohráva v celom prepise v2. Pre predchádzajúcu kapitolu príbehu v1 pozri ako streamovať správu naživo bez blikania (v1.6.13); a pre celý oblúk anatómiu dodania softvéru k dokonalosti.