Steven
Steven5 min lasīšana

Kas patiesībā ir 127 komitu laidiens

GeekBye v1.7.0 bija 127 komiti vienpadsmit dienās. No malas tas izskatās pēc simts sīkumiem. No iekšpuses tie bija divi lieli funkcionāli bloki, savīti kopā — un viens no tiem tika uzbūvēts nepareizajā vietā, tad izrauts un pārbūvēts laidiena vidū. Lūk, liela laidiena anatomija.

Inženierija
Laidiens
Arhitektūra
GeekBye laidieni
Kas patiesībā ir 127 komitu laidiens

Ir tāda šī bloga ieraksta versija, kas vienkārši uzskaita visu, kas ir GeekBye v1.7.0 — pārveidots sākumekrāns, kalibrācijas plūsma, saliekams sānu panelis, jauni iestatījumi un tā tālāk. Tā būtu precīza un tā tev neko neiemācītu. Jo godīgais stāsts par 127 komitu laidienu nav saraksts. Tā ir forma.

Lūk, forma. Simts divdesmit septiņi komiti izklausās pēc simts divdesmit septiņiem sīkumiem. Gandrīz nekad tā nav. v1.7.0 bija divas lielas funkcijas, būvētas paralēli ilgdzīvojošos zaros aptuveni vienpadsmit dienu laikā, savītas kopā beigās. Saprast lielu laidienu nozīmē saprast tos divus pavedienus — un to vienu vietu, kur mēs uzbūvējām kaut ko nepareizajā vietā un mums nācās to izraut atpakaļ pusceļā.

Pirmais pavediens: kalibrācija

Pirmais pavediens bija kalibrācija — AI balss novērtējums tavām komunikācijas prasmēm. Tu sāc dzīvu sarunu ar AI "karjeras treneri", izej cauri strukturētam fāžu kopumam (iesildīšanās, uzvedības, tehniskā komunikācija, reakcija zem spiediena, mērķu izvirzīšana), un beigās saņem vērtējumu sešās dimensijās: pārliecība, skaidrība, konkrētība, iesaiste, savaldība, atbilstība. Zem virsmas tas mēra arī konkrētus runas rādītājus — tavu runas tempu, aizpildījuma vārdu biežumu, to, vai tavas pauzes lasās kā stratēģiskas vai neizlēmīgas.

Rezultāts nav atzīme, tas ir sākumpunkts. Kalibrācija atklāj tavas stiprās puses, tavas izaugsmes jomas un — pats galvenais — ieteikto grūtības pakāpi, ar kuru sākt praktizēties. Tā kalibrē kur produktam vajadzētu tevi sagaidīt. Katra prasme atgriežas kā izvēršama atsauksmes kartīte ar kopsavilkumu, konkrētu ieteikumu un patiesu citātu no tavas paša sarunas kā piemēru. Tā ir funkcija, uz kuras balstās viss pārējais prakses pieredzē.

Otrais pavediens: pilnīgi jauns logs

Otrais pavediens bija premium pārveidojums — un saukt to par pārveidojumu nozīmē to novērtēt par zemu. Tas nebija esošo ekrānu jauna āda; tas faktiski bija otrs lietotnes logs, izbūvēts sešās skaidri definētās fāzēs: saliekams Notion stila sānu panelis, galvenes nolaižamā izvēlne, kas aizstāja veco sesiju sarakstu, pārlūka stila navigācija ar vēsturi un maizes drupatām, un premium pārbūves sadaļām Sākums, Profili, Sanāksmes un Iestatījumi.

Divas lielas funkcijas. Lūk, kas patiesībā bija tie 127 komiti. Un grūtākā daļa to piegādē nebija nevienas no tām rakstīšana — tā bija savīšana. Abi zari bija savstarpēji atkarīgi; viens tika sapludināts otrā, un kalibrācijas zaram nācās ievilkt sevī main zaru četras atsevišķas reizes, lai vienkārši nesāktu novirzīties no sinhronizācijas, kamēr pārveidojums kustējās zem tā. Komitu skaits nav liela laidiena cena. Ilgdzīvojoši zari un integrācijas secība ir.

Daļa, kuras dēļ vērts lasīt: mēs uzbūvējām kalibrāciju nepareizajā vietā

Lūk, kļūda, un tā ir laba, jo tā ir tik izplatīta.

GeekBye ir stingrs arhitektūras noteikums: visas AI operācijas dzīvo backend. Klients ir plāns apvalks, kas sarunājas ar serveri. Visi to zināja.

Un tomēr kalibrācija sākotnēji tika uzbūvēta klienta lokālajā datubāzē. Atsevišķa tabula, datubāzes migrācija, 254 rindu repozitorijs, IPC apstrādātāji un 515 rindu novērtējuma jautājumu banka — viss dzīvojot lietotāja mašīnā. Tas strādāja. Tas arī klusi pārkāpa līgumu, uz kura balstās visa lietotne.

Trīs dienas vēlāk viens komits izdzēsa 680 rindas astoņos failos, lai to visu pārceltu uz backend, kur kalibrācijas dati kļuva par pienācīgu servera puses modeli, un jautājumu loģika un vērtēšana kļuva par servera rūpi. Cits komits pilnībā izdzēsa 515 rindu klienta jautājumu banku. Diff ir gandrīz smieklīgs: viena pievienošana, seši simti astoņdesmit dzēsumu.

Neviens neplānoja uzrakstīt 680 rindas izmetama koda. Tas notika tā, kā tas vienmēr notiek: klienta īsceļš ir tepat, ir ātrāk prototipēt lokāli, un "vēlāk to pārcelsim uz backend" šķiet nekaitīgi. Bet, kad tava arhitektūra tev jau saka, kur dzīvo patiesības avots, būvēt to jebkur citur nav īsceļš — tā ir pārstrāde, ko esi ieplānojis pats sev iepriekš. Mācība, kas paliek: liec to tur, kur līgums saka, jau pirmajā reizē, pat ja lokālā versija ir ātrāk uzstādāma.

Kļūda, ko varēja atrast tikai integrācija

Vēl viens pierādījums, jo tas ir lielo laidienu raksturīgais kļūmes veids. Kad kalibrācija un jaunā navigācija tika savienotas kopā un patiešām darbojās, lietotne sāka iedarbināt ātruma limitu — HTTP 429 — bez acīmredzama iemesla.

Cēlonis bija tīra integrācija. Kalibrācijas statuss tika ielādēts komponentu līmenī, tāpēc katra navigācija to ielādēja no jauna — un React stingrais režīms, kas apzināti divkārši izsauc efektus izstrādē, lai atklātu kļūdas, dubultoja to vēlreiz. Rezultāts bija četri līdz astoņi identiski kalibrācijas pieprasījumi katrā ekrāna maiņā, pietiekami, lai iedarbinātu servera ātruma limitētāju. Labojums konsolidēja ielādi uz pāris izsaukumiem montēšanas brīdī.

Šo kļūdu nevarēja atrast, testējot kalibrāciju atsevišķi vai navigāciju atsevišķi. Tā pastāv tikai savienojuma vietā — kur satiekas divas neatkarīgi pareizas funkcijas. Tas ir nodoklis, ko iekasē liels laidiens: pēdējais posms nav funkciju būvēšana, tas ir atklāt visu, kas salūst tikai tad, kad tās beidzot ir vienā telpā.

Trīs lietas, ko iemācīja liels laidiens

  1. 127 komitu laidiens ir divas vai trīs lielas tēmas, nevis simts sīku. Atrodi pavedienus. Darbs — un risks — dzīvo tajā, kā tie savijas kopā, nevis skaitā.
  2. Liec patiesības avotu tur, kur līgums saka, ka tas dzīvo, jau pirmajā reizē. Mēs izdzēsām 680 rindas, pārceļot kalibrāciju no klienta uz backend. Lokālais īsceļš ir pārstrāde, ko esi ieplānojis iepriekš; arhitektūra tev jau pateica atbildi.
  3. Integrācija atklāj kļūmes, ko izolācija nespēj. 429 vētra dzīvoja savienojuma vietā starp divām pareizām funkcijām un parādījās tikai tad, kad tās darbojās kopā. Ieplāno integrācijas caurskatīšanu, nevis tikai katras funkcijas testēšanu.

Šis ir v1 laikmeta radinieks stāstam, ko mēs stāstītu vēlreiz daudz lielākā mērogā — skati ko patiesībā prasa otrā versija: 206 godīgu stāvokļu komiti (v2.0.0), kur tā pati "liels skaitlis patiesībā ir dažas lielas idejas" patiesība izspēlējas cauri visai v2 pārrakstīšanai. Iepriekšējai nodaļai v1 stāstā, kā straumēt dzīvu atskaiti bez mirgošanas (v1.6.13); un visai lokai, programmatūras piegādes līdz pilnībai anatomija.

Saistītie raksti

Mēs izdzēsām 5,000 rindiņu audio koda — un transkripti sāka parādīties divreiz
Steven
Steven5 min lasīšana

Mēs izdzēsām 5,000 rindiņu audio koda — un transkripti sāka parādīties divreiz

GeekBye v1.6 izrāva ārā divus ierīcē strādājošus Swift transkribētājus un aizstāja tos ar vienu vienotu cauruļvadu — neto dzēsums vairāk nekā 5,000 rindiņu, veikts, kamēr cilvēki bija tiešsaistē sanāksmes vidū. Tad transkripti sāka parādīties divreiz, jo kļūda pārcēlās uz to vienīgo slāni, kurš joprojām domāja, ka ir divi dzinēji.

Inženierija
Transkripcija
Arhitektūra
Ko patiesībā prasa otrā versija: 206 komiti godīgu stāvokļu
Steven
Steven6 min lasīšana

Ko patiesībā prasa otrā versija: 206 komiti godīgu stāvokļu

GeekBye v2 nebija funkciju laidiens. Tie bija 206 komiti, kas tēmēti uz vienu ideju: lietotne nekad nedrīkst melot par savu paša stāvokli. Lūk, ko tas maksā — ieskaitot vienas rindas bloķēšanas faila kļūdu, kas gandrīz liedza mums to visu izlaist.

Uzticamība
Inženierija
Laidiens
Programmatūras piegādes līdz pilnībai anatomija: kā koda pārskatīšana atklāja to, ko testi nespēja
Steven
Steven5 min lasīšana

Programmatūras piegādes līdz pilnībai anatomija: kā koda pārskatīšana atklāja to, ko testi nespēja

Visā GeekBye v2 sērijā atkārtojas viena un tā pati lieta: labojums iztur katru testu izstrādātāja datorā, un tad koda pārskatīšana pierāda, ka gandrīz visiem citiem tas būtu izgāzies. Šī ir darbplūsma, kas ir deviņu laidienu pamatā — pārskatīšanas vārti, vispirms-labojuma atklājumi un testē-pirms-piegādes disciplīna, kas pārvērš "man tas strādā" par "tas strādā".

Inženierija
Process
Koda pārskatīšana