
Co ve skutečnosti znamená vydání se 127 commity
GeekBye v1.7.0 bylo 127 commitů za jedenáct dní. Zvenčí to vypadá jako sto drobností. Zevnitř to byly dvě velké funkce spletené dohromady — a jedna z nich vznikla na špatném místě, pak byla vytržena a uprostřed vydání znovu postavena. Tady je anatomie velkého vydání.
Existuje verze tohohle článku, která jen vyjmenuje všechno, co je v GeekBye v1.7.0 — přepracovaná domovská obrazovka, kalibrační tok, sbalitelný postranní panel, nová nastavení a tak dál a tak dál. Byla by přesná a nenaučila by vás nic. Protože upřímný příběh vydání se 127 commity není ten seznam. Je to jeho tvar.
Tady je ten tvar. Sto dvacet sedm commitů zní jako sto dvacet sedm drobností. Skoro nikdy to tak není. v1.7.0 byly dvě velké funkce, budované paralelně na dlouhožijících větvích po dobu asi jedenácti dní a na konci spletené dohromady. Porozumět velkému vydání znamená porozumět těmhle dvěma vláknům — a tomu jednomu místu, kde jsme něco postavili na špatném místě a museli to za letu zase vytrhnout.
Vlákno jedna: kalibrace
Prvním vláknem byla kalibrace — hlasové AI posouzení vašich komunikačních dovedností. Zahájíte živý hovor s AI „kariérním koučem", projdete strukturovanou sadou fází (rozehřátí, behaviorální, technická komunikace, reakce pod tlakem, stanovení cílů) a na konci dostanete skóre v šesti dimenzích: sebejistota, srozumitelnost, konkrétnost, zapojení, rozvaha, relevance. Pod povrchem měří i konkrétní řečové metriky — tempo řeči, četnost výplňkových slov, jestli vaše pauzy působí strategicky, nebo váhavě.
Výstupem není známka, ale výchozí bod. Kalibrace vyprodukuje vaše silné stránky, oblasti k růstu a — což je klíčové — doporučenou obtížnost, na které začít trénovat. Kalibruje, kde by se s vámi měl produkt potkat. Každá dovednost se vrátí jako rozbalitelná karta se zpětnou vazbou, se shrnutím, konkrétním návrhem a skutečně citovanou větou z vašeho vlastního hovoru jako příkladem. Je to funkce, na které je postavený zbytek tréninkového zážitku.
Vlákno dvě: úplně nové okno
Druhým vláknem byl premium redesign — a nazývat to redesignem ho podceňuje. Nebyl to nový vzhled stávajících obrazovek; bylo to fakticky druhé okno aplikace, rozpracované v šesti explicitních fázích: sbalitelný postranní panel ve stylu Notionu, rozbalovací nabídka v hlavičce, která nahradila starý seznam relací, navigace ve stylu prohlížeče s historií a drobečkovou navigací a premium přestavby Domů, Profilů, Schůzek a Nastavení.
Dvě velké funkce. To bylo těch 127 commitů ve skutečnosti. A nejtěžší na jejich dodání nebylo napsat ani jednu z nich — bylo to spletení. Ty dvě větve byly vzájemně závislé; jedna se mergovala do druhé a kalibrační větev musela natáhnout hlavní větev čtyřikrát jenom proto, aby se nedostala z synchronizace, zatímco se pod ní redesign hýbal. Počet commitů není cena velkého vydání. Dlouhožijící větve a pořadí integrace jsou.
Část, která stojí za přečtení: kalibraci jsme postavili na špatném místě
Tady je ta chyba a je dobrá, protože je tak běžná.
GeekBye má pevné architektonické pravidlo: všechny AI operace žijí na backendu. Klient je tenká slupka, která mluví se serverem. Věděli to všichni.
A přesto byla kalibrace nejdřív postavená v lokální databázi klienta. Vyhrazená tabulka, databázová migrace, 254řádkové úložiště, IPC handlery a 515řádková zásoba posuzovacích otázek — všechno žilo na počítači uživatele. Fungovalo to. Zároveň to potichu porušovalo kontrakt, na kterém je celá aplikace postavená.
O tři dny později jeden commit smazal 680 řádků napříč osmi soubory, aby to všechno přesunul na backend, kde se z kalibračních dat stal řádný serverový model a z logiky otázek a bodování se stala serverová záležitost. Další commit smazal 515řádkovou klientskou zásobu otázek úplně. Ten diff je skoro k smíchu: jeden přidaný řádek, šest set osmdesát smazaných.
Nikdo se nechystal napsat 680 řádků kódu na vyhození. Stalo se to tak, jak se to stává vždycky: klientská zkratka je přímo tady, prototypovat lokálně je rychlejší a „přesuneme to na backend později" působí neškodně. Ale když vám architektura už říká, kde žije zdroj pravdy, postavit to kdekoli jinde není zkratka — je to práce navíc, kterou jste si předem naplánovali. Poučení, které utkvělo: dej to tam, kam kontrakt říká, hned napoprvé, i když je lokální verze rychlejší na postavení.
Chyba, kterou mohla najít jen integrace
Ještě jeden doklad, protože je to signaturní způsob selhání velkých vydání. Jakmile byly kalibrace a nová navigace propojené a skutečně běžely, aplikace začala z ničeho nic narážet na rate limit — HTTP 429 — bez zjevného důvodu.
Příčina byla čistě integrační. Stav kalibrace se stahoval na úrovni komponenty, takže každá navigace ho znovu stahovala — a striktní režim Reactu, který záměrně dvakrát vyvolává efekty ve vývoji, aby odhalil chyby, to ještě zdvojil. Výsledkem byly čtyři až osm identických kalibračních požadavků při každé změně obrazovky, dost na to, aby spustily serverový rate limiter. Oprava sloučila stahování do pár volání při mountu.
Tuhle chybu jste nemohli najít testováním samotné kalibrace ani samotné navigace. Existuje jen na švu — tam, kde se dvě nezávisle správné funkce potkávají. To je daň, kterou si velké vydání účtuje: poslední míle není postavit ty funkce, je to objevit všechno, co se rozbije, teprve když jsou konečně ve stejné místnosti.
Tři věci, které velké vydání naučilo
- Vydání se 127 commity jsou dvě nebo tři velká témata, ne sto malých. Najděte ta vlákna. Práce — a riziko — žije v tom, jak se spletou dohromady, ne v počtu.
- Dejte zdroj pravdy tam, kam kontrakt říká, že žije, hned napoprvé. Smazali jsme 680 řádků při přesunu kalibrace z klienta na backend. Lokální zkratka je práce navíc, kterou jste si předem naplánovali; architektura vám odpověď už řekla.
- Integrace odhalí selhání, která izolace nemůže. Bouře 429 žila na švu mezi dvěma správnými funkcemi a objevila se, teprve když běžely společně. Počítejte s časem na integrační průchod, ne jen na testování po jednotlivých funkcích.
Tohle je bratranec z éry v1 příběhu, který bychom vyprávěli znovu v mnohem větším měřítku — viz co ve skutečnosti obnáší verze 2: 206 commitů poctivých stavů (v2.0.0), kde se stejná pravda „velké číslo je ve skutečnosti pár velkých nápadů" odehrává napříč celým přepisem v2. Předchozí kapitolu příběhu v1 najdete v jak streamovat živý report bez blikání (v1.6.13); a celý oblouk v anatomii dodávání softwaru k dokonalosti.