Steven
Steven5 min lasīšana

Mierīga programmatūra: kā nogalināt mirgojošu slēdzi un iemācīt tērzēšanai pateikt, kādā režīmā tā ir

Divi nelieli GeekBye laidieni bez lielām funkcijām — tikai iestatījumu slēdzis, kas beidza mirgot, un tērzēšanas asistents, kas beidzot pasaka, vai atbildēja sapulces režīmā vai kodēšanas režīmā. Lūk, cik patiesībā maksā "mierīga programmatūra", pa vienai detaļai.

Produkts
Dizains
Izstrāde
GeekBye laidieni
Mierīga programmatūra: kā nogalināt mirgojošu slēdzi un iemācīt tērzēšanai pateikt, kādā režīmā tā ir

Ne katrs laidiens ir kara stāsts. Daži ir tikai saraksts ar mazām, gandrīz neredzamām lietām, kas klusi bija nepareizas — tādām, kas neko neieblokē, bet liek lietotnei justies mazliet neuzticamai, mazliet nervozai, mazliet ne-tavai. GeekBye v2.0.3 un v2.0.5 bija tieši tādi. Nekādu jaunu funkciju. Tikai miers.

"Mierīga programmatūra" izklausās kā noskaņojums. Patiesībā tā ir kaudze konkrētu lēmumu. Lūk, trīs no tiem.

Slēdzis, kas nevarēja izlemt

Bija iestatījumu slēdzis — tas, kas vada audio atjaunošanu —, kas mirgoja, kad uz tā noklikšķināji. Pieskaries, lai ieslēgtu, un uz mirkli tas parādīja ieslēgtu, tad atlēca atpakaļ uz izslēgtu, tad nostabilizējās. Sīka vizuāla stostīšanās, bet acs to pamana, un tas nolasās kā lietotne nav pārliecināta, ko dara.

Cēlonis ir klasiska saskarnes sacīkste, ko sauc par optimistisko atjauninājumu. Kad noklikšķini uz slēdža, lietotnei ir divas izvēles: gaidīt, līdz iestatījums patiešām saglabāsies, un tikai tad atjaunināt slēdzi (pareizi, bet jūtas gauži), vai pārslēgt slēdzi nekavējoties un saglabāt fonā (jūtas mirklīgi). GeekBye darīja otro — pārslēdza uzreiz —, bet arī atkārtoti nolasīja saglabāto vērtību, kad tā atgriezās. Tātad secība bija šāda: tu noklikšķini, slēdzis optimistiski pārslēdzas uz ieslēgtu, mirkli vēlāk pienāk īstā saglabātā vērtība, un uz vienu kadru abas nesakrita, un slēdzis redzami atlēca.

Risinājums ir panākt, lai optimistiskā vērtība un apstiprinātā vērtība tīri sakristu — slēdzis apņemas ievērot tavu izvēlēto stāvokli un beidz sevi apšaubīt, kad saglabāšana apstiprinās. Blakus tam v2.0.3 veica neglamūrisku teksta pārstrādi: audio atjaunošanas apraksts tika saīsināts, lai saskaņotos ar tam līdzīgajām rindām, un iestatījumu formulējumi tika padarīti cilvēcīgāki. Nekas no tā nav funkcija. Viss tas ir atšķirība starp iestatījumu paneli, kas jūtas uzkonstruēts, un tādu, kas jūtas rūpīgi izkopts.

Tūre, kas negribēja aiziet

Jauno lietotāju tūres ir noderīgas tieši vienu reizi. Problēma ir tā vienreizība: pēc tam, kad esi to redzējis, ievadapmācības pārklājums, ko nevar aizvērt, kļūst par pārblīvējumu, kas signalizē šī lietotne joprojām domā, ka esi jauns. v2.0.3 salaboja abus galus — produkta tūri tagad var paslēpt, un, ja tu to patiešām gribi atpakaļ, ir poga Atkārtot tūri. Rādi to, kad tā palīdz, atkāpies, kad ne, un ļauj lietotājam to izsaukt pēc paša noteikumiem. Cieņa pret to, ka lietotājs vairs nav jauns, pati par sevi ir neliela miera forma.

Asistents, kas negribēja pateikt, kā domā

Šī ir tā, kam patiešām bija nozīme, un tā saistās ar dziļāku problēmu, ko bijām meklējuši.

GeekBye asistents atbild atšķirīgi atkarībā no konteksta. Sapulcē uz "ko tu par to domā?" vajadzētu saņemt sarunvalodisku, uz sapulci orientētu atbildi. Kodēšanas sesijā tie paši vārdi lai saņem tehnisku. Tāpēc aizmugursistēma izlaiž jautājumu caur pareizo ietvaru — sauc to par sapulces režīmu vai kodēšanas režīmu —, un šis ietvars patiesi maina atbildi, ko saņem.

Ķeza: lietotne nekad nepateica, kurš režīms atbildēja. Tāpēc, kad asistents deva kodēšanas garšas atbildi uz sarunvalodisku jautājumu — vai atbildēja uz koda jautājumu tā, it kā tu tērzētu —, izskatījās, ka mākslīgais intelekts vienkārši kļūdās. Tas nekļūdījās; tas bija otrajā režīmā, un tev nebija iespējas to redzēt. Slēpts stāvoklis lika pareizai uzvedībai izskatīties salauztai. (Pati režīma loģika ir lielāks darbs — orķestrators, kas izlemj, kā kodēšanas sesijas laikā atbildēt uz jautājumiem, kas nav par kodu —, bet nekas no tā tev nelīdz, ja neredzi lēmumu, ko tas pieņēmis.)

v2.0.5 tērzēšanai pievienoja tikai lasāmu režīma žetonu: mazu uzrakstu, kas parāda, vai asistents atbildēja sapulces režīmā vai kodēšanas režīmā. Tikai lasāms ir visa būtība — tas nav vadīklis, ko tu iestati, tas ir logs uz lēmumu, ko sistēma jau pieņēmusi. Tu beidz minēt, kāpēc atbilde šķiet dīvaina; tu redzi ietvaru, no kura tā nāca.

Detaļa, kas padara žetonu godīgu

Lūk, inženiertehniskā izvēle, ko vērts nodot tālāk, jo tā ir tāda lieta, kas atšķir piekabinātu indikatoru no uzticama.

Režīma informācija nāk no aizmugursistēmas kā daļa no straumētās atbildes — mazs mode kadrs servera nosūtīto notikumu straumē. Bet vecāks klients, kas radīts pirms šīs funkcijas, nezinātu, kas ir mode kadrs; labākajā gadījumā tas to ignorē, sliktākajā — attēlo kaut ko sagrozītu. Tāpēc klients paziņo par savu spēju: tas nosūta pieprasījuma galveni, kas saka es protu parādīt režīma žetonu, un aizmugursistēma izlaiž mode kadru tikai tiem klientiem, kas to nosūtīja. Vecie klienti nekad nesaņem signālu, ar ko nespēj tikt galā; jaunie klienti saņem tieši to kadru, ko pieprasīja.

Tā ir vienas galvenes rokasspiediens, un tā ir atšķirība starp "mēs pievienojām funkciju" un "mēs pievienojām funkciju, nesalaužot nevienu, kurš vēl nav atjauninājies." Tā pati pārskatīšanas kārta pievilka pārējo uzvedību: žetons pats notīrās, veicot atiestatīšanu un mainoties sarunas kontekstam (novecojis režīma uzraksts ir savs mazs melis), un tas rādās tikai tērzēšanas skatā, kur tam pieder vieta.

Ko mūs iemācīja divi "bezfunkciju" laidieni

  1. Nervozitāte ir uzticamības signāls. Mirgojošs slēdzis, atlecošs pārslēdzējs, uzraksts, kas kavējas kadru par ilgu — neviens no tiem nav kļūda avārijas nozīmē, bet katrs no tiem čukst šī lietotne nav gluži savā varā. Miers ir šo čukstu neesamība, un tu to nopelni pa vienam sacīkstes stāvoklim.
  2. Slēpts režīms liek pareizai uzvedībai izskatīties kā kļūdai. Asistents darīja pareizo lietu un tika par to vainots tikai tāpēc, ka lietotājs neredzēja ietvaru. Kad tava sistēma pieņem neredzamu lēmumu, kas maina rezultātu, parādi to lēmumu — tikai lasāms žetons bieži ir viss risinājums.
  3. Jaunām funkcijām jābūt neredzamām klientiem, kas tās nevar izmantot. Spēju galvenes rokasspiediens nozīmē, ka režīma signāls sasniedz tikai tos klientus, kas to prot attēlot. Atpakaļsaderība nav versijas pārbaude, kas piekabināta vēlāk; tas ir klients, kas pasaka, ko saprot, un serveris, kas ciena atbildi.

Šie ir laidieni, par kuriem neviens neraksta izmaiņu žurnāla virsrakstus, un tie lielā mērā ir iemesls, kāpēc GeekBye v2 jūtas tā, kā jūtas. Par laidienu, uz kura šis miers tika būvēts, skati ko patiesībā prasa versija 2 (v2.0.0). Par tam blakus veikto uzticamības darbu skati dienu, kad mūsu lietotne DDoS uzbruka pati sev (v2.0.1) un kāpēc tavs AI piezīmju rīks pārstāj ierakstīt sapulces vidū (v2.0.9).

Saistītie raksti

Viens CSS mainīgais, piecas pārskatīšanas kārtas un Swift rīkkopa, kas meloja
Steven
Steven6 min lasīšana

Viens CSS mainīgais, piecas pārskatīšanas kārtas un Swift rīkkopa, kas meloja

GeekBye v2.0.7 padarīja visu pārklājumu regulējami caurspīdīgu — kas izklausās pēc vienas rindas CSS izmaiņas, bet nekādā ziņā tāda nebija. Īstais stāsts ir par to, ko pamanīja koda pārskatīšana: divas virsmas, kas atteicās izbālēt, ierakstīšanas josla, kas pie tās pašas necaurspīdības izskatījās nepareizi, un kompilēts binārais fails, kas mainīja 672 baitus turp un atpakaļ, jo mūsu pašu dokumentācija pārskatītājam pateica nepareizo Swift versiju.

Izstrāde
Dizains
Būvēšana
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
Tava Mac lietotne piešķir mikrofona piekļuvi — un aizmirst to katrā palaišanas reizē
Steven
Steven5 min lasīšana

Tava Mac lietotne piešķir mikrofona piekļuvi — un aizmirst to katrā palaišanas reizē

GeekBye pieprasīja mikrofona atļauju, tu to piešķīri, un viss strādāja. Nākamajā palaišanas reizē — pazudis. Un pati lietotne vispār neparādījās sadaļā Sistēmas iestatījumi → Mikrofons. Vaininieks bija macOS drošības funkcija, kas klusi palaida lietotni no ceļa, kas pazūd — lūk, diagnoze un labojums vienā uzvednē.

macOS
Atļaujas
Inženierija