Som si istý, že ste už počuli o pruhoch alebo ste s nimi používali aplikáciu. Zaujímalo vás však niekedy, prečo sú pruhy také populárne a silné? Je zrejmé, že aplikácie chcú čo najviac vašej pozornosti, ale okrem toho ste vedeli, že keď populárna vzdelávacia aplikácia Duolingo predstavila iOS widgety na zobrazovanie pruhov, odhodlanie používateľov vzrástlo o 60 %. Šesťdesiat percent predstavuje obrovský posun v správaní a ukazuje, ako možno použiť „pruhové“ vzory na zvýšenie zapojenia a podnietenia používania. Vo svojej najzákladnejšej podobe je séria počet po sebe nasledujúcich dní, počas ktorých používateľ dokončí konkrétnu aktivitu. Niektorí ľudia to definujú aj ako „gamifikovaný“ zvyk alebo metrika navrhnutá na podporu konzistentného používania. Ale pruhy presahujú rámec toho, že sú metrikou alebo záznamom v aplikácii; je to skôr psychologické. Ľudské inštinkty sa dajú ľahko ovplyvniť správnymi faktormi. Pozrite sa na tieto tri faktory: pokrok, hrdosť a strach z premeškania (bežne nazývané FOMO). Čo majú všetky tieto spoločné? Úsilie. Čím viac úsilia do niečoho vložíte, tým viac to formuje vašu identitu, a tak sa pruhy prelínajú do sveta behaviorálnej psychológie. Teraz, s veľkou mocou prichádza veľká zodpovednosť, a preto je tu aj temná stránka. V tomto článku sa budeme zaoberať princípmi psychológie, UX a dizajnu, ktoré stoja za vybudovaním efektívneho systému pruhov. Pozrieme sa na to, (1) prečo naše mozgy takmer inštinktívne reagujú na aktivitu pruhov, (2) ako navrhovať pruhy spôsobom, ktorý skutočne pomáha používateľom, a (3) technickú prácu spojenú s vytváraním vzoru pruhov. Psychológia za pruhmi Aby sme navrhli a vybudovali efektívny systém pruhov, musíme pochopiť, ako sa zhoduje s tým, ako je zapojený náš mozog. Ako napríklad, prečo je taký účinný do tej miery, že cítime takú intenzívnu oddanosť chrániť naše pruhy? Existujú tri zaujímavé, dobre zdokumentované princípy psychológie, ktoré podporujú to, čo robí pruhy tak silnými a návykovými. Averzia k strate Toto je pravdepodobne najsilnejšia sila za pruhmi. Hovorím to, pretože väčšinou sa tomu v živote takmer nevyhnete. Myslite na to takto: Ak vám priateľ dá 100 dolárov, budete šťastní. Ale ak by ste stratili 100 dolárov z peňaženky, bolelo by to oveľa viac. Emocionálna váha týchto situácií nie je rovnaká. Strata bolí oveľa viac ako zisk je dobrý pocit. Poďme ďalej a povedzme, že vám dám 100 dolárov a požiadam vás, aby ste si zahrali hazard. Existuje 50% šanca, že vyhráte ďalších 100 $ a 50% šanca, že prehráte pôvodných 100 $. Brali by ste to? nie. Väčšina ľudí by to neurobila. To je averzia k strate. Ak sa nad tým zamyslíte, je to logické, je to pochopiteľné, je to ľudské. Koncept, ktorý stojí za averziou k strate, je ten, že pociťujeme bolesť zo straty niečoho dvakrát väčšiu ako potešenie zo získania niečoho rovnakej hodnoty. Z psychologického hľadiska strata trvá dlhšie ako zisky. Pravdepodobne vidíte, ako to súvisí s pruhmi. Vybudovanie viditeľného pruhu si vyžaduje úsilie; ako pruh rastie, motivácia za ním začína miznúť; alebo presnejšie povedané, začína byť druhoradý. Tu je príklad: Povedzme, že váš priateľ má trojdňovú sériu uzavretia svojich „krúžkov pre pohyb“ na hodinkách Apple Watch. Nemajú takmer čo stratiť, ak chcú dosiahnuť svoj cieľ a byť dôslední. Zároveň máte za sebou pôsobivú 219-dňovú sériu. Je pravdepodobné, že ste v pasci strachu, že ho stratíte. S najväčšou pravdepodobnosťou v tomto bode nemyslíte na úspech; ide skôr o ochranu vášho investovaného úsilia, a to je averzia k strate. Duolingo vysvetľuje, ako averzia k strate prispieva k neochote používateľa prerušiť dlhú sériu, dokonca aj v tých najlenivejších dňoch. Určitým spôsobom sa séria môže zmeniť na zvyk, keď sa usadí averzia k strate. Foggov model správania (B = MAP) Teraz, keď chápeme strach zo straty úsilia investovaného do dlhších sérií, ďalšia otázka znie: Čo nás núti robiť tú vec na prvom mieste, deň čo deň, ešte predtým, ako sa séria rozrastie? O tom je Foggov model správania. Je to pomerne jednoduché. Správanie (B) nastane len vtedy, keď sa tri faktory – motivácia (M), schopnosť (A) a výzva (P) – zhodujú v rovnakom momente. Teda rovnica B=MAP. Ak niektorý z týchto faktorov, hoci len jeden, v danom momente chýba, k správaniu nedôjde. Aby bol systém pruhov efektívny a opakujúci sa, musia byť prítomné všetky tri faktory: Motivácia Toto je krehké a nie niečo, čo je neustále prítomné. Sú dni, keď sinapumpovaní učiť sa španielčinu a dni, kedy nepocítite ani štipku vôle naučiť sa jazyk. Samotná motivácia vybudovať si návyk je nespoľahlivá a od prvého dňa prehraná bitka. Schopnosť Na kompenzáciu obmedzení motivácie je rozhodujúca schopnosť. V tomto kontexte schopnosť znamená jednoduchosť konania, t. j. úsilie je také ľahké, že je nereálne povedať, že to nie je možné. Väčšina aplikácií to zámerne používa. Apple Fitness potrebuje, aby ste za hodinu stáli jednu minútu, aby ste dosiahli svoj cieľ Stand. Duolingo potrebuje iba jednu absolvovanú lekciu. Tieto úlohy si nevyžadujú toľko úsilia. Bariéra je taká nízka, že to zvládnete aj v tých najhorších dňoch. Ale spojené úsilie pokračujúcej série je miestom, kde sa začína myšlienka straty tejto série. PromptThis je to, čo dokončí rovnicu. Ľudia sú prirodzene zábudliví, takže áno, schopnosť nás tam môže dostať na 90 %. Ale výzva nám pripomína, aby sme konali. Prúžky sú svojou povahou trvalé, takže používateľom treba neustále pripomínať, aby konali. Aby zistilo, aká silná môže byť výzva, Duolingo vykonal A/B test, aby zistil, či malý červený odznak na ikone aplikácie zvyšuje konzistentné používanie. Prinieslo to 6% nárast denných aktívnych používateľov. Len červený odznak. Obmedzenia modelu Ako už bolo povedané, existuje obmedzenie modelu Fogg, pričom kritici a moderný výskum si všimli, že dizajn, ktorý sa príliš spolieha na výzvy, ako sú agresívne upozornenia, riskuje vytvorenie duševnej únavy. Neustále upozornenia a nadčasy by mohli spôsobiť, že používatelia budú míňať. Takže pozor na to. Zeigarnikov efekt Ako sa cítite, keď necháte úlohu projektu napoly hotovú? To mnohých ľudí dráždi, pretože nedokončené úlohy zaberajú viac duševného priestoru ako veci, ktoré dokončíme. Keď je niečo hotové a preč, máme tendenciu na to zabudnúť. Keď niečo zostane nedokončené, má tendenciu zaťažovať našu myseľ. To je presne dôvod, prečo digitálne produkty používajú umelé indikátory pokroku, ako je lišta dokončenia profilu Upwork, aby dali používateľovi vedieť, že ich profil je dokončený iba na 60 %. Nabáda používateľa, aby dokončil to, čo začal.
Pozrime sa na ďalší príklad. V aplikácii so zoznamom úloh máte päť úloh a na konci dňa skontrolujete iba štyri z nich ako dokončené. Mnohí z nás sa budú cítiť nesplnení kvôli tejto jednej nedokončenej úlohe. To je práve ten Zeigarnikov efekt. Efekt Zeigarnika demonštrovala psychologička Bluma Zeigarnik, ktorá opísala, že neúplné úlohy máme tendenciu udržiavať v pamäti dlhšie ako dokončené úlohy. V dizajne UX sa k tomu prirodzene pripája vzor pruhov. Povedzme, že ste na 63. dni série učenia. V tomto bode ste v neustálom modeli nedokončenej práce. Váš mozog na to len zriedka zabudne, pretože to sedí v zadnej časti vašej mysle. V tomto bode sa váš mozog stáva tým, ktorý vám posiela upozornenia. Keď spojíte tieto psychologické sily dohromady, začnete skutočne chápať, prečo pruhy nie sú len bežnou funkciou aplikácie; sú schopné pretvárať ľudské správanie. Ale niekde pozdĺž línie – nemôžem presne povedať, kedy, keďže sa to u každého líši – veci dospejú do bodu, keď sa séria zmení zo „zábavy“ na niečo, o čom máte pocit, že si nemôžete dovoliť stratiť. Nechcete, aby vyšlo 58 dní úsilia nazmar, však? To robí systém pruhov efektívnym. Ak sa to urobí správne, pruhy pomôžu používateľom vybudovať si úžasné návyky, ktoré dosiahnu cieľ. Môže to byť každodenné čítanie alebo pravidelné cvičenie v posilňovni. Tieto opakované akcie (niekedy malé) sa časom spájajú a stávajú sa evidentnými v našom každodennom živote. Ale každá minca má dve strany. Tenká čiara medzi zvykom a nutkaním Ak ste to sledovali, už viete, že systémy pruhov majú temnú stránku. Tvorba návyku je o dôslednosti s opakovaným cieľom. Nutkanie je však dôslednosť práce na cieli, ktorý už nie je potrebný, ale drží sa ho zo strachu alebo tlaku. Je to línia tenká ako žiletka. Bez rozmýšľania si čistíte zuby každé ráno; je automatický a inštinktívny, s jasným cieľom mať dobrý dych. To je pruh, ktorý tvorí dobrý zvyk. Systém etických pruhov poskytuje používateľom priestor na dýchanie. Ak sa z nejakého dôvodu neumývate ráno, môžete sa čistiť na poludnie. Nedokonalosť je povolená bez strachu zo straty dlhého úsilia. Nútenie ide opačnou cestou, kedy vo vás séria vyvoláva úzkosť, cítite sa vinní alebo dokonca vyčerpaní a niekedy máte pocit, že ste nič nedokázali, napriek všetkémupráce. Konáte nie preto, že chcete, ale preto, že sa podvedome bojíte vidieť, ako sa váš pokrok vynuluje. Niekto to dokonca dokonale opísal: "Cítil som, že podvádzam, ale bolo mi to jednoducho jedno. Bez svojej nálady som nič." To ukazuje, aké extrémne pruhy môžu mať u jednotlivca. Do tej miery, že používatelia začnú spájať svoju vlastnú hodnotu s ľubovoľnou metrikou a nie s pôvodným cieľom alebo dôvodom, prečo začali sériu. Pruh sa stáva tým, kým sú, nielen tým, čo robia. Dobre navrhnutý etický systém by mal byť pre používateľa povzbudením, nie nátlakom alebo povinnosťou. Týka sa to rovnováhy vnútornej a vonkajšej motivácie. Vonkajšia motivácia (vonkajšie odmeny, vyhýbanie sa trestu) môže používateľov naštartovať, ale vnútorná motivácia (robenie úlohy pre osobný cieľ, ako je napríklad učenie sa španielčiny, pretože skutočne chcete komunikovať s milovanou osobou) je silnejšia pre dlhodobé zapojenie. Dobrý systém by mal smerovať k vnútornej motivácii s opatrným využívaním vonkajších prvkov, t. j. pripomínať používateľom, ako ďaleko zašli, nie sa im vyhrážať tým, čo môžu stratiť. Opäť je to tenká čiara. Jednoduchým testom pri navrhovaní systému pruhov je skutočne trvať nejaký čas a zvážiť, či vaše produkty zarábajú peniaze predajom riešení úzkosti, ktoré váš produkt vytvoril. Ak áno, je tu vysoká šanca, že využívate používateľov. Ďalšia otázka teda znie: Ak sa rozhodnem použiť pruh, ako ho navrhnem tak, aby skutočne pomohol používateľom dosiahnuť ich ciele? UX dizajnu systému Good Streak Domnievam sa, že toto je miesto, kde väčšina projektov buď pribije efektívny systém pruhov, alebo ho úplne pokazí. Poďme si prejsť niekoľkými princípmi UX dobrého dizajnu pruhov. Udržujte to bez námahy Pravdepodobne ste to už počuli, možno z kníh ako Atomic Habits, ale stojí za zmienku, že jedným z najjednoduchších spôsobov, ako si vytvoriť návyky, je urobiť akciu drobnou a jednoduchou. Je to podobné ako faktor schopností, o ktorom sme hovorili vo Foggovom modeli správania. Prvým pravidlom akéhokoľvek návrhu série by malo byť urobiť požadovanú akciu čo najmenšou, ako je to v ľudských silách, a zároveň dosiahnuť pokrok. Ak si dokončenie dennej akcie vyžaduje vôľu, táto akcia neprejde za päť dní. prečo? Nemôžete byť motivovaní päť dní po sebe. Príklad: Ak spustíte meditačnú aplikáciu, nemusíte prinútiť používateľov, aby absolvovali 20-minútovú reláciu, len aby ste udržali sériu. Skúste namiesto toho jedinú minútu, možno dokonca niečo také malé ako tridsať sekúnd. Ako sa hovorí, malé kvapky vody vytvárajú mocný oceán). Malé úsilie sa časom spája do veľkých úspechov. To by mal byť cieľ: odstrániť trenie, najmä keď môže byť chvíľa náročná. Keď sú používatelia v strese alebo preťažení, povedzte im, že jednoduché zobrazenie, hoci len na pár sekúnd, sa počíta ako námaha. Poskytnite jasnú vizuálnu spätnú väzbu Ľudia sú od prírody vizuálni. Väčšinou potrebujeme niečo vidieť, čomu môžeme uveriť; je tu potreba veci vizualizovať, aby sme im lepšie porozumeli a dali veci do perspektívy. To je dôvod, prečo vzory pruhov často používajú vizuálne prvky, ako sú grafy, značky začiarknutia, krúžky postupu a mriežky, na vizualizáciu úsilia. Pozrite si graf príspevkov GitHubu. Je to jednoduchá vizualizácia konzistencie. Vývojári ho však dýchajú ako kyslík.
Kľúčom je, aby systém pruhov nepôsobil abstraktne. Malo by to byť skutočné a zaslúžené. Napríklad krúžky aktivít Duolingo a Fitness od Apple používajú čisté animačné návrhy po dokončení série a GitHub zobrazuje historické údaje o konzistencii používateľa v priebehu času.
Použite dobré načasovanie Už som spomenul, že ľudia sú vo všeobecnosti od prírody zábudliví a že výzvy môžu pomôcť udržať dynamiku vpred. Bez výziev väčšina nových používateľov zabudne pokračovať. Život môže byť zaneprázdnený, motivácia zmizne a veci sa dejú. Výzvy využívajú aj dlhodobí používatelia, aj keď väčšinou sú už uzamknutí vo zvykovej slučke. Napriek tomu aj ten najoddanejší človek môže náhodne vynechať jeden deň. Váš systém pruhov určite potrebuje pripomienky. Najpoužívanejšími rýchlymi pripomienkami sú upozornenia push. Pri práci s push notifikáciami naozaj záleží na načasovaní. Dôležitý je aj typ aplikácie. Odoslanie upozornenia o 9:00 „Dnes ste necvičili“ je pre vzdelávaciu aplikáciu zvláštne, pretože mnohí majú čo robiť deň predtým, ako vôbec pomyslia na dokončenie hodiny. Ak však hovoríme o fitness aplikácii, je to takje rozumné a možno sa dokonca očakáva, že sa im to pripomenie skôr v priebehu dňa. Push notifikácie sa výrazne líšia podľa kategórie aplikácie. Fitness aplikácie napríklad zaznamenávajú vyššiu mieru interakcie vďaka skorým ranným upozorneniam (7 – 8:00), zatiaľ čo aplikácie na zvýšenie produktivity môžu fungovať lepšie na poludnie. Kľúčom je A/B otestovať načasovanie vašej aplikácie na základe správania používateľov, a nie predpokladať, že veci sú univerzálne. To, čo funguje pre meditačnú aplikáciu, nemusí fungovať pre sledovač kódovania. Ďalšími spôsobmi výzvy sú červené bodky na ikone aplikácie a dokonca aj miniaplikácie aplikácie. Štúdie sa líšia, ale priemerný človek odomkne svoje zariadenie 50 až 150-krát denne (PDF). Ak používateľ pri každom odomknutí telefónu uvidí na aplikácii alebo miniaplikácii červenú bodku, ktorá označuje aktuálny pruh, zvyšuje to odhodlanie. Len to nepreháňajte; výzva by mala slúžiť ako pripomienka, nie otrava. Oslávte míľniky Systém pruhov by sa mal pokúsiť osláviť míľniky na opätovné zapálenie emócií, najmä v prípade používateľov hlboko v sériách. Keď používateľ klikne na 7., 30., 50., 100., 365. deň, mali by ste si z toho urobiť veľkú hlavu. Uznajte úspechy – najmä pre dlhodobých používateľov.
Ako sme už videli, Duolingo na to prišiel a implementoval animovanú grafiku, ktorá oslavuje míľniky s konfetami. Niektoré platformy dokonca poskytujú značné bonusové odmeny, ktoré potvrdzujú úsilie používateľov. A to môže byť prospešné pre aplikácie, pretože používatelia majú tendenciu zdieľať svoje míľniky verejne na sociálnych médiách. Ďalšou výhodou je predvídanie, ktoré prichádza pred dosiahnutím míľnikov. Nie je to len nekonečne udržiavať sériu pri živote; užívatelia sa majú na čo tešiť. Použite mechanizmy milosti Život je nepredvídateľný. Ľudia sa rozptyľujú. Každý dobrý systém pruhov by mal očakávať nedokonalosť. Jednou z najväčších psychologických hrozieb pre streak systém je tvrdý reset na nulu po jedinom vynechanom dni. „Etický“ systém pruhov by mal používateľovi poskytnúť určitú voľnosť. Povedzme, že máte za sebou 90-dňovú sériu učenia sa šachu. Boli ste dôslední tri dobré mesiace a jedného dňa vám počas cestovania odumrie telefón a z 90 sa stane 0 – všetko, všetko to úsilie sa vymaže a pokrok zmizne. Používateľ môže byť úplne zničený. Myšlienka na prestavbu od nuly je taká demoralizujúca, že to úsilie nestojí za to. V najhoršom prípade môže používateľ opustiť aplikáciu po tom, čo sa cítil ako zlyhanie. Zvážte pridanie mechanizmu „milosti“ do vášho systému pruhov:
Streak FreezeUmožnite používateľom úmyselne vynechať deň bez sankcií. Extra čas Pred spustením resetovania nechajte niekoľko hodín (2–3) po zvyčajnom termíne. Modely rozpaduNamiesto tvrdého resetu sa séria zníži o malú čiastku, napr. za každý zmeškaný deň sa z radu odpočíta 10 dní.
Použite povzbudzujúci tón Porovnajme dve správy, ktoré sa používateľom zobrazia, keď sa séria zlomí:
"Stratili ste svoju 42-dňovú sériu. Začnite odznova." "Ukázali ste sa 42 dní v kuse. To je neuveriteľný pokrok! Chcete to skúsiť ešte raz?"
Oba sprostredkúvajú rovnaké informácie, ale emocionálny dopad je odlišný. Prvá správa by s najväčšou pravdepodobnosťou spôsobila, že by sa používateľ cítil demoralizovaný a spôsobil by jeho ukončenie. Druhá správa oslavuje to, čo už bolo dosiahnuté, a jemne povzbudzuje používateľa, aby to skúsil znova. Výzvy v oblasti dizajnu Streak Systems Predtým, ako prejdeme k technickým špecifikám vytvárania streak systému, mali by ste si byť vedomí problémov, ktorým môžete čeliť. Veci sa môžu skomplikovať, ako by ste mohli očakávať. Spracovanie časových pásiem Existuje dôvod, prečo spracovanie času a dátumu patrí medzi najťažšie koncepty, s ktorými sa vývojári stretávajú. Je potrebné zvážiť formátovanie, internacionalizáciu a mnohé ďalšie. Dovoľte mi opýtať sa vás: Čo sa počíta ako deň? Vieme, že svet beží v rôznych časových pásmach, a akoby to nestačilo, v niektorých regiónoch je letný čas (DST), ktorý sa deje dvakrát do roka. Kde vôbec začať riešiť tieto okrajové prípady? Čo sa počíta ako „začiatok“ zajtrajška? Niektorí vývojári sa tomu snažia vyhnúť použitím jedného centrálneho časového pásma, napríklad UTC. Pre niektorých používateľov by to prinieslo správne výsledky, ale pre niektorých by to mohlo byť vypnuté o hodinu, dve hodiny alebo viac. Táto nekonzistentnosť ničí používateľskú skúsenosť. Používatelia sa menej zaujímajú o to, ako narábate s časom v zákulisí; všetko, čo očakávajú, je, že ak vykonajú sériu o 23:40, mala by sa zaregistrovať presne v tom čase v ich kontexte. Mali by ste definovať „jeden deň“ na základe miestneho časového pásma používateľa, nie času servera. Iste, môžete si vziať pokojsmerovať a resetovať pruhy globálne pre všetkých používateľov o polnoci UTC, ale do značnej miery vytvárate nespravodlivosť. Niekto v Kalifornii má vždy osem hodín navyše na dokončenie svojej úlohy ako niekto žijúci v Londýne. Je to nespravodlivá chyba dizajnu, ktorá trestá určitých používateľov kvôli ich polohe. A čo ak je táto osoba v Londýne iba na návšteve, dokončí úlohu a potom sa vráti do iného časového pásma? Jedným efektívnym riešením všetkých týchto problémov je požiadať používateľov, aby explicitne nastavili svoje časové pásmo počas registrácie (najlepšie po prvom overení). Je dobré uviesť jemnú poznámku, že poskytovanie informácií o časovom pásme sa používa iba na to, aby aplikácia presne sledovala pokrok, a nie ako údaje umožňujúce identifikáciu osôb. A je to ďalší dobrý nápad urobiť z toho premenlivé nastavenie. Navrhujem, aby sa niekto vyhýbal priamemu spracovaniu logiky časového pásma v aplikácii. Používajte osvedčené knižnice dátumov, ako je Moment.js alebo pytz (Python) atď. Nie je potrebné znovu vynájsť koleso pre niečo také zložité, ako je toto. Prípady zmeškaných dní a okrajov Ďalšou výzvou, ktorej by ste sa mali obávať, sú nekontrolovateľné okrajové prípady, ako je zaspávanie používateľov, výpadky servera, oneskorenie, zlyhania siete atď. Pomôcť môže použitie myšlienky mechanizmov milosti, ako sú tie, o ktorých sme hovorili predtým. Dvojhodinové obdobie odkladu môže pomôcť používateľovi aj vývojárovi v tom zmysle, že používatelia nie sú prísne trestaní za nekontrolovateľné životné okolnosti. Pre vývojárov sú okná milosti užitočné v tých nekontrolovateľných chvíľach, keď server uprostred noci vypadne. Predovšetkým nikdy neverte klientovi. Vždy overte na strane servera. Server by mal byť jediným zdrojom pravdy. Prevencia podvádzania Opäť to nemôžem dostatočne zdôrazniť: Uistite sa, že ste overili všetko na strane servera. Používatelia sú ľudia a ľudia môžu podvádzať, ak dostanú príležitosť. Tomu sa nedá vyhnúť. Môžete skúsiť:
Ukladanie všetkých akcií s časovými značkami UTC. Klient môže poslať svoj miestny čas, ale server ho môže okamžite previesť na UTC a overiť ho voči času servera. Týmto spôsobom, ak je časová pečiatka klienta podozrivo ďaleko, systém ju môže odmietnuť ako chybu a používateľské rozhranie môže zodpovedajúcim spôsobom reagovať. Používanie sledovania založeného na udalostiach. Inými slovami, uložte záznam o každej akcii s metadátami vrátane informácií, ako je ID používateľa, typ vykonanej akcie a časová pečiatka a časové pásmo. Pomáha to pri overovaní.
Budovanie systému Streak System Engine Toto nie je návod na kód, takže sa vyhnem tomu, aby som na vás hodil kopu kódu. Ponechám si to praktické a opíšem, ako veci vo všeobecnosti fungujú s motorom streak system, pokiaľ ide o architektúru, tok a spoľahlivosť. Základná architektúra Ako som už niekoľkokrát povedal, urobte zo servera jediný zdroj pravdy pre pruhové údaje. Architektúra môže na serveri vyzerať takto:
Uložte údaje každého používateľa do databázy. Uložte aktuálny ukladací priestor pruhov (predvolená hodnota je 0) ako celé číslo. Uložte predvoľbu časového pásma, t. j. reťazec časového pásma IANA (buď implicitne z miestnej časovej pečiatky alebo explicitne požiadaním používateľa, aby si vybral svoje časové pásmo). Napríklad „Amerika/New_York“. Spracujte všetku logiku, aby ste určili, či pruh pokračuje alebo sa preruší, pomocou kontroly časového pásma, ktoré sa vzťahuje na miestne časové pásmo používateľa.
Medzitým na strane klienta:
Zobrazte aktuálnu sériu, ktorá sa bežne získava zo servera. Odošlite vykonanú akciu vo forme metadát na server, aby ste overili, či používateľ skutočne dokončil kvalifikačnú akciu série. Poskytnite vizuálnu spätnú väzbu na základe odpovedí servera.
Stručne povedané, mozog je na serveri a klient slúži na účely zobrazovania a odosielania udalostí. To vám ušetrí veľa zlyhaní a okrajových prípadov a navyše zjednoduší aktualizácie a opravy. Logický tok Simulujme si návod, ako by fungoval minimálne účinný systém streak systému, keď používateľ dokončí akciu:
Používateľ dokončí kvalifikačnú sériu akcie. Klient odošle udalosť na server ako metadáta. Môže to byť „Používateľ X dokončil akciu Y v časovej pečiatke Z“. Server prijme túto udalosť a vykoná základné overenie. Je to skutočný používateľ? Sú overené? Je akcia platná? Je časové pásmo konzistentné? Ak to prejde, server načíta údaje o pruhoch používateľa z databázy. Potom preveďte časovú pečiatku prijatej akcie na miestne časové pásmo používateľa. Nechajte server porovnať dátumy kalendára (nie časové pečiatky) v miestnom časovom pásme používateľa: Ak je to ten istý deň, potom je akcia nadbytočná a nedôjde k žiadnej zmenepruh. Ak je to nasledujúci deň, pruh sa predĺži a zvýši o 1. Ak je medzera viac ako jeden deň, pruh sa zlomí. Práve tu však môžete použiť mechaniku milosti. Ak zmeškaný mechanizmus milosti zmeškáte, obnovte sériu na 1.
Ak sa rozhodnete ukladať historické údaje pre dosiahnuté míľniky, aktualizujte premenné ako „najdlhšia séria“ alebo „celkový počet aktívnych dní“. Server potom aktualizuje databázu a odpovie klientovi. Niečo takéto:
{ "current_streak": 48, "longest_streak": 50, "total_active_days": 120, "streak_extended": pravda, }
Ako ďalšie opatrenie by mal server buď pokus zopakovať, alebo odmietnuť a upozorniť klienta, keď počas procesu niečo zlyhá. Budovanie odolnosti Ako už bolo spomenuté, používatelia, ktorí stratia sériu kvôli chybám alebo výpadkom servera, sú strašné UX a používatelia neočakávajú, že to znesú. Váš systém pruhov by teda mal mať záruky pre tieto scenáre. Ak je server odstavený z dôvodu údržby (alebo z akéhokoľvek dôvodu), zvážte povolenie dočasnej doby ďalších hodín na opravu, aby sa akcie mohli odoslať neskoro a stále sa počítali. Môžete sa tiež rozhodnúť upozorniť používateľov, najmä ak situácia môže ovplyvniť prebiehajúcu sériu. Poznámka: Vytvorte zadné vrátka správcu, kde je možné údaje manuálne obnoviť. Chybám sa nedá vyhnúť a niektorí používatelia zavolajú vašu aplikáciu alebo vás požiadajú o podporu, že sa ich séria prerušila z dôvodu, ktorý nemohli ovplyvniť. Mali by ste byť schopní manuálne obnoviť pruhy, ak má používateľ po preskúmaní pravdu. Záver Jedna vec zostáva jasná: Pruhy sú skutočne silné, pretože ľudská psychológia funguje na základnej úrovni. Najlepší systém pruhov je ten, o ktorom používatelia vedome nepremýšľajú. Stalo sa to rutinou okamžitých výsledkov alebo viditeľného pokroku, ako je čistenie zubov, ktoré sa stáva pravidelným zvykom. A ja to len poviem: Nie všetky produkty potrebujú systém pruhov. Mali by ste skutočne vynútiť konzistentnosť len preto, že chcete každodenných aktívnych používateľov? Odpoveď môže byť veľmi dobre „nie“.