
Rahulik tarkvara: vilkuva lüliti tapmine ja vestlusele õpetamine ütlema, mis režiimis ta on
Kaks väikest GeekBye väljalaset, ilma suurte funktsioonideta — lihtsalt seadete lüliti, mis lakkas vilkumast, ja vestlusassistent, mis lõpuks ütleb, kas ta vastas koosolekurežiimis või koodirežiimis. Nii palju "rahulik tarkvara" tegelikult maksab, üks detail korraga.
Iga väljalase ei ole sõjalugu. Mõned on lihtsalt loend väikestest, peaaegu nähtamatutest asjadest, mis vaikselt olid valed — sellised, mis midagi kokku ei jooksuta, kuid panevad rakenduse tunduma veidi ebausaldusväärne, veidi närviline, veidi mitte-sinu-oma. GeekBye v2.0.3 ja v2.0.5 olid kaks sellist. Ei mingeid uusi funktsioone. Ainult rahu.
"Rahulik tarkvara" kõlab nagu meeleolu. Tegelikult on see hunnik konkreetseid otsuseid. Siin on kolm neist.
Lüliti, kes ei suutnud otsustada
Oli seadete lüliti — see, mis juhib heli taastamist —, mis vilkus, kui sa sellel klõpsasid. Puuduta seda sisse ja hetkeks näitas see sees, siis kargas tagasi välja, siis rahunes. Pisike visuaalne kogelemine, kuid silm püüab selle kinni, ja see loeb kui rakendus ei ole kindel, mida ta teeb.
Põhjus on klassikaline kasutajaliidese võidujooks nimega optimistlik uuendus. Kui klõpsad lülitil, on rakendusel kaks valikut: oodata, kuni seade tegelikult salvestub, ja alles siis lüliti uuendada (õige, aga tundub loid), või pöörata lüliti kohe ja salvestada taustal (tundub hetkeline). GeekBye tegi teist — pööras kohe —, kuid luges tagasi tuleva salvestatud väärtuse ka uuesti. Nii oli järjekord selline: sa klõpsad, lüliti pöördub optimistlikult sisse, hetk hiljem saabub tegelik salvestatud väärtus, ja ühe kaadri jooksul olid need kaks eriarvamusel ning lüliti kargas nähtavalt.
Lahendus on panna optimistlik väärtus ja kinnitatud väärtus puhtalt kokku sobima — lüliti pühendub olekule, mille sina valisid, ja lakkab ennast kahtluse alla seadmast, kui salvestamine kinnitub. Selle kõrval tegi v2.0.3 ebaglamuurse tekstiläbimängu: heli taastamise kirjeldust kärbiti, et see joonduks oma kõrvalridadega, ja seadete sõnastus muudeti inimlikumaks. Miski sellest pole funktsioon. Kõik see on vahe seadete paneeli vahel, mis tundub konstrueeritud, ja sellise vahel, mis tundub hoolikalt viimistletud.
Tuur, mis ei tahtnud lahkuda
Uue kasutaja tuurid on kasulikud täpselt üks kord. Probleem on selles ühekordsuses: pärast seda, kui oled selle näinud, muutub sissejuhatav kate, mida ei saa sulgeda, segaduseks, mis annab märku see rakendus arvab endiselt, et oled uus. v2.0.3 parandas mõlemad otsad — tooteturri saab nüüd peita, ja kui sa selle tõesti tagasi tahad, on nupp Mängi tuur uuesti. Näita seda, kui see aitab, tagane, kui ei aita, ja lase kasutajal see oma tingimustel esile kutsuda. Austus selle vastu, et kasutaja pole enam uus, on omaette väike rahu vorm.
Assistent, kes ei tahtnud öelda, kuidas ta mõtles
See on see, mis tegelikult luges, ja see seostub sügavama probleemiga, mida olime jälitanud.
GeekBye assistent vastab kontekstist sõltuvalt erinevalt. Koosolekul peaks "mida sa sellest arvad?" saama vestleva, koosolekuteadliku vastuse. Koodisessioonis peaksid samad sõnad saama tehnilise. Nii et tagarakendus jooksutab küsimuse läbi õige raami — nimeta seda koosolekurežiimiks või koodirežiimiks —, ja see raamistus muudab tõepoolest vastust, mille saad.
Häda: rakendus ei öelnud kunagi, kumb režiim vastas. Nii et kui assistent andis sulle koodimaitselise vastuse vestlevale küsimusele — või vastas koodiküsimusele, nagu sa vestleksid —, nägi see välja, nagu tehisintellekt lihtsalt eksiks. Ta ei eksinud; ta oli teises režiimis ja sul polnud võimalust seda näha. Peidetud olek pani õige käitumise katki näima. (Režiimiloogika ise on suurem töö — orkestraator, mis otsustab, kuidas koodisessiooni ajal vastata mittekoodiküsimustele —, kuid miski sellest ei aita sind, kui sa ei näe otsust, mille ta tegi.)
v2.0.5 lisas vestlusesse ainult loetava režiimimärgise: väikese sildi, mis näitab, kas assistent vastas koosolekurežiimis või koodirežiimis. Ainult loetav on kogu mõte — see pole juhtnupp, mille sa sead, see on aken otsusesse, mille süsteem on juba teinud. Sa lakkad aimamast, miks vastus tundub vale; sa näed raami, kust see tuli.
Detail, mis teeb märgise ausaks
Siin on insenertehniline valik, mida tasub edasi anda, sest see on sedasorti asi, mis eristab külgepoogitud näidiku usaldusväärsest.
Režiimiteave tuleb tagarakendusest osana voogedastatud vastusest — väike mode kaader serveri saadetud sündmuste voos. Kuid vanem klient, mis eelneb sellele funktsioonile, ei teaks, mis on mode kaader; parimal juhul ta ignoreerib seda, halvimal juhul kuvab midagi moonutatut. Nii et klient teatab oma võimekusest: ta saadab päringu päise, mis ütleb ma oskan režiimimärgist kuvada, ja tagarakendus edastab mode kaadri ainult klientidele, kes selle saatsid. Vanad kliendid ei saa kunagi signaali, millega nad hakkama ei saa; uued kliendid saavad täpselt selle kaadri, mida palusid.
See on ühe päise käepigistus, ja see on vahe "me lisasime funktsiooni" ja "me lisasime funktsiooni, ilma et lõhuksime kellelegi, kes pole veel uuendanud." Sama ülevaatusring pingutas ülejäänud käitumist: märgis puhastab end lähtestamisel ja vestluskonteksti muutumisel (aegunud režiimisilt on omaette väike vale), ja see kuvatakse ainult vestlusvaates, kuhu see kuulub.
Mida kaks "funktsioonita" väljalaset meile õpetasid
- Närvilisus on usalduse signaal. Vilkuv lüliti, kargav lülitusnupp, silt, mis viibib kaadri liiga kaua — mitte ükski neist pole viga kokkujooksmise mõttes, kuid iga üks neist sosistab see rakendus ei ole päris kontrolli all. Rahu on nende sosinate puudumine, ja sa teenid selle ühe võidujooksu kaupa.
- Peidetud režiim paneb õige käitumise veana näima. Assistent tegi õiget asja ja sai selle eest süüdistuse üksnes seetõttu, et kasutaja ei näinud raami. Kui su süsteem teeb nähtamatu otsuse, mis muudab väljundit, näita otsust — ainult loetav märgis on sageli kogu lahendus.
- Uued funktsioonid peaksid olema nähtamatud klientidele, kes neid kasutada ei saa. Võimekuse päise käepigistus tähendab, et režiimisignaal jõuab ainult klientideni, kes oskavad seda kuvada. Tagasiühilduvus ei ole hiljem külge poogitud versioonikontroll; see on klient, kes ütleb, mida ta mõistab, ja server, kes vastust austab.
Need on väljalasked, millele keegi muudatuste logi pealkirju ei kirjuta, ja need on suur osa põhjusest, miks GeekBye v2 tundub nii, nagu ta tundub. Väljalaske kohta, millele see rahu ehitati, vaata mida versioon 2 tegelikult nõuab (v2.0.0). Selle kõrval tehtud usaldusväärsuse töö kohta päev, mil meie rakendus DDoS-is iseennast (v2.0.1) ja miks su AI märkmete tegija lõpetab salvestamise keset koosolekut (v2.0.9).