Siguran sam da ste čuli za pruge ili ste koristili aplikaciju s njima. Ali jeste li se ikad zapitali zašto su crte tako popularne i moćne? Pa, očito je da aplikacije žele što je više moguće vaše pažnje, ali osim toga, jeste li znali da kada je popularna aplikacija za učenje Duolingo predstavila iOS widgete za prikaz nizova, predanost korisnika porasla je za 60%. Šezdeset posto velika je promjena u ponašanju i pokazuje kako se obrasci "niza" mogu koristiti za povećanje angažmana i poticanje korištenja. U najosnovnijem smislu, niz je broj uzastopnih dana u kojima korisnik obavlja određenu aktivnost. Neki ljudi to također definiraju kao "gamificiranu" naviku ili metriku osmišljenu za poticanje dosljedne upotrebe. Ali nizovi nadilaze ono što su metrika ili zapis u aplikaciji; više je psihološki od toga. Uz prave faktore lako je utjecati na ljudske instinkte. Pogledajte ova tri faktora: napredak, ponos i strah od propuštanja (obično nazvan FOMO). Što je svima njima zajedničko? Napor. Što više truda uložite u nešto, to više oblikuje vaš identitet, a tako se crtice ukrštaju u svijet bihevioralne psihologije. Sada, s velikom moći dolazi i velika odgovornost, i zbog toga, postoji mračna strana pruga. U ovom članku ćemo se pozabaviti psihologijom, UX-om i principima dizajna koji stoje iza izgradnje učinkovitog streak sustava. Promotrit ćemo (1) zašto naši mozgovi gotovo instinktivno reagiraju na aktivnost niza, (2) kako dizajnirati nizove na načine koji istinski pomažu korisnicima i (3) tehnički rad uključen u izradu uzorka niza. Psihologija u pozadini Da bismo dizajnirali i izgradili učinkovit sustav razvoda, moramo razumjeti kako se on usklađuje s načinom na koji je naš mozak ožičen. Na primjer, što ga čini tako učinkovitim do te mjere da osjećamo toliko intenzivnu predanost zaštiti svojih linija? Postoje tri zanimljiva, dobro dokumentirana psihološka načela koja podupiru ono što čini nizove tako snažnima i zaraznima. Averzija gubitka Ovo je vjerojatno najjača sila iza nizova. Kažem ovo jer ovo u većini slučajeva gotovo ne možete izbjeći u životu. Zamislite to ovako: ako vam prijatelj da 100 dolara, bili biste sretni. Ali da ste izgubili 100 dolara iz novčanika, to bi boljelo mnogo više. Emocionalna težina tih situacija nije jednaka. Gubitak boli mnogo više nego što je dobitak dobar osjećaj. Idemo dalje i recimo da vam dajem 100 dolara i tražim od vas da se kockate. Postoji 50% šanse da osvojite novih 100 USD i 50% šanse da izgubite originalnih 100 USD. Biste li ga uzeli? ne bih. Većina ljudi ne bi. To je averzija gubitka. Kad bolje razmislite, to je logično, to je razumljivo, to je ljudski. Koncept koji stoji iza averzije prema gubitku je da bol zbog gubitka nečega osjećamo dvostruko više od zadovoljstva dobivanja nečega jednake vrijednosti. U psihološkom smislu, gubitak traje više od dobitka. Vjerojatno vidite kako se to odnosi na pruge. Da bi se izgradio zamjetan niz, potreban je napor; kako niz raste, motivacija iza njega počinje blijedjeti; ili točnije, počinje postajati sekundarno. Evo primjera: Recimo da vaš prijatelj ima trodnevni niz zatvaranja svojih “Move Rings” na svom Apple Watchu. Nemaju gotovo ništa za izgubiti osim što žele postići svoj cilj i biti dosljedni. U isto vrijeme, imate impresivan niz od 219 dana. Velike su šanse da ste zarobljeni zbog straha da ćete ga izgubiti. Najvjerojatnije u ovom trenutku ne razmišljate o postignuću; radi se više o zaštiti vašeg uloženog truda, a to je averzija gubitka. Duolingo objašnjava kako averzija prema gubitku doprinosi nevoljkosti korisnika da prekinu dugi niz, čak i u svojim najlijenijim danima. Na neki način, niz se može pretvoriti u naviku kada se naseli averzija prema gubitku. Foggov model ponašanja (B = MAP) Sada kada razumijemo strah od gubitka truda uloženog u dulje nizove, drugo je pitanje: Što nas uopće tjera da to učinimo, dan za danom, čak i prije nego što niz postane velik? O tome govori Foggov model ponašanja. Relativno je jednostavan. Ponašanje (B) događa se samo kada se tri čimbenika — Motivacija (M), Sposobnost (A) i Poticaj (P) — poklope u istom trenutku. Dakle, jednadžba B=MAP. Ako bilo koji od ovih čimbenika, čak i jedan, nedostaje u tom trenutku, ponašanje se neće dogoditi. Dakle, da bi sustav nizova bio učinkovit i ponavljao se, moraju biti prisutna sva tri čimbenika: Motivacija Ovo je krhko i nije nešto što je stalno prisutno. Ima dana kada sinabrijani da naučite španjolski, a danima ne osjećate ni trunku volje da naučite jezik. Motivacija sama po sebi za stvaranje navike je nepouzdana i izgubljena bitka od prvog dana. Sposobnost Za kompenzaciju ograničenja motivacije, sposobnost je kritična. U ovom kontekstu sposobnost znači lakoću djelovanja, tj. napor je toliko lak da je nerealno reći da nije moguć. Većina aplikacija to namjerno koristi. Apple Fitness samo treba da stojite jednu minutu u sat vremena kako biste zaradili oznaku prema svom cilju Stand. Duolingo treba samo jednu završenu lekciju. Ovi zadaci ne zahtijevaju toliko puno truda. Barijera je tako niska da čak i u najgorim danima to možete učiniti. Ali zajednički napor niza koji je u tijeku je mjesto gdje dolazi do ideje o gubitku tog niza. Prompt Ovo je ono što dovršava jednadžbu. Ljudi su prirodno zaboravni, pa da, sposobnost nas može dovesti do toga 90%. Ali poziv nas podsjeća da djelujemo. Pruge su postojane po dizajnu, pa korisnike treba stalno podsjećati da djeluju. Da bi vidio koliko moćan može biti upit, Duolingo je napravio A/B test da vidi povećava li mala crvena značka na ikoni aplikacije dosljednu upotrebu. To je dovelo do povećanja broja dnevnih aktivnih korisnika od 6%. Samo crveni bedž. Ograničenja modela Uz sve ovo rečeno, postoji ograničenje Foggovog modela prema kojem su kritičari i moderna istraživanja primijetili da dizajn koji se previše oslanja na upute, poput agresivnih obavijesti, riskira stvaranje mentalnog zamora. Stalne obavijesti i prekovremeni rad mogu uzrokovati odlazak korisnika. Dakle, pripazite na to. Zeigarnikov efekt Kako se osjećate kada ostavite zadatak projekta napola obavljen? To iritira mnoge ljude jer nedovršeni zadaci zauzimaju više mentalnog prostora nego stvari koje dovršimo. Kada je nešto učinjeno i nestalo, skloni smo to zaboraviti. Kad nešto ostane neučinjeno, to nas opterećuje. Upravo zbog toga digitalni proizvodi koriste umjetne indikatore napretka, poput Upworkove trake za dovršetak profila, kako bi korisnik znao da je njegov profil samo “60% dovršen”. Potiče korisnika da završi ono što je započeo.
Pogledajmo još jedan primjer. Imate pet zadataka u aplikaciji s popisom obveza, a na kraju dana samo četiri od njih provjeravate kao dovršena. Mnogi od nas će se osjećati neostvareno zbog tog jednog nedovršenog zadatka. To je Zeigarnikov efekt. Zeigarnikov učinak demonstrirala je psihologinja Bluma Zeigarnik, koja je opisala da imamo tendenciju zadržati nedovršene zadatke aktivnima u našem sjećanju dulje nego dovršene zadatke. Uzorak pruga prirodno se uklapa u ovo u UX dizajnu. Recimo da ste u 63. danu niza učenja. U tom trenutku nalazite se u stalnom obrascu nedovršenog posla. Vaš bi mozak rijetko zaboravio na to dok sjedi u pozadini vašeg uma. U ovom trenutku vaš mozak postaje taj koji vam šalje obavijesti. Kada spojite te psihološke sile zajedno, počinjete istinski shvaćati zašto pruge nisu samo uobičajena značajka aplikacije; oni su sposobni preoblikovati ljudsko ponašanje. Ali negdje usput - ne mogu točno reći kada, budući da je to različito za svakoga - stvari dosegnu točku u kojoj se niz pomiče sa "zabave" na nešto što smatrate da si ne možete priuštiti da izgubite. Ne želite da 58 dana truda propadne, zar ne? To je ono što čini streak sustav učinkovitim. Ako se napravi kako treba, pruge pomažu korisnicima da steknu zapanjujuće navike koje postižu cilj. To može biti svakodnevno čitanje ili redovito odlazak u teretanu. Ove ponovljene radnje (ponekad male) se s vremenom povećavaju i postaju vidljive u našem svakodnevnom životu. Ali svaki novčić ima dvije strane. Tanka linija između navike i prisile Ako ste nas pratili, već možete reći da postoji tamna strana u sustavima s crtama. Stvaranje navike odnosi se na dosljednost s ciljem koji se ponavlja. Međutim, prisila je dosljednost rada na cilju koji više nije potreban, ali ga se držimo zbog straha ili pritiska. To je linija tanka poput žileta. Svako jutro perete zube bez razmišljanja; automatski je i instinktivan, s jasnim ciljem dobrog daha. To je niz koji čini dobru naviku. Sustav etičkih crta daje korisnicima prostora za disanje. Ako se iz nekog razloga ne operete ujutro, možete četkati u podne. Nesavršenost je dopuštena bez straha od gubitka dugog truda. Prisila ide suprotnim putem, pri čemu vas niz čini tjeskobnim, osjećate se krivima ili čak iscrpljenim, a ponekad vam se čini da niste ništa postigli, unatoč svim svojimraditi. Ne djelujete zato što to želite, već zato što ste podsvjesno prestravljeni da vidite kako se vaš napredak vraća na nulu. Netko je to čak savršeno opisao: "Osjećao sam da varam, ali jednostavno me nije bilo briga. Ja sam ništa bez svoje crte". Ovo pokazuje koliko nizovi ekstremnog utjecaja mogu imati na pojedinca. Do te mjere da korisnici počnu povezivati svoju vlastitu vrijednost s proizvoljnom metrikom, a ne s izvornim ciljem ili razlogom zbog kojeg su uopće započeli niz. Žica postaje ono što jesu, a ne samo ono što rade. Dobro osmišljen sustav etičkih crta korisniku bi trebao djelovati kao poticaj, a ne kao pritisak ili obveza. To se odnosi na ravnotežu intrinzične i ekstrinzične motivacije. Ekstrinzična motivacija (vanjske nagrade, izbjegavanje kazne) mogla bi pokrenuti korisnike, ali intrinzična motivacija (obavljanje zadatka za osobni cilj kao što je učenje španjolskog jer iskreno želite komunicirati s voljenom osobom) jača je za dugoročni angažman. Dobar sustav trebao bi gravitirati unutarnjoj motivaciji uz pažljivo korištenje ekstrinzičnih elemenata, tj. podsjećati korisnike koliko su daleko stigli, a ne prijetiti im onim što bi mogli izgubiti. Opet, to je tanka linija. Jednostavan test pri dizajniranju sustava nizova je uzeti malo vremena i razmisliti zarađuju li vaši proizvodi prodajom rješenja za tjeskobu koju je vaš proizvod stvorio. Ako da, postoji velika vjerojatnost da iskorištavate korisnike. Dakle, sljedeće pitanje postaje, ako odlučim koristiti streak, kako ga dizajnirati na način da doista pomaže korisnicima da ostvare svoje ciljeve? UX dobrog dizajna sustava Streak Vjerujem da je ovo mjesto gdje većina projekata ili postigne učinkovit sustav pruga ili ga potpuno zabrlja. Prođimo kroz neka UX načela dobrog dizajna nizova. Neka bude bez napora Vjerojatno ste ovo već čuli, možda iz knjiga kao što je Atomic Habits, ali vrijedi spomenuti da je jedan od najlakših načina na koji se navike mogu stvoriti taj da radnju učinite sićušnom i jednostavnom. To je slično faktoru sposobnosti o kojem smo govorili u Foggovu modelu ponašanja. Prvo pravilo bilo kakvog dizajna niza trebalo bi učiniti potrebnu radnju što je moguće manjom, a da pritom postignete napredak. Ako je za izvršenje dnevne radnje potrebna snaga volje, ta radnja neće proći pet dana. Zašto? Ne možete biti motivirani pet dana zaredom. Primjer: ako pokrenete aplikaciju za meditaciju, ne morate tjerati korisnike da prolaze kroz 20-minutnu sesiju samo da bi održali niz. Umjesto toga pokušajte s jednom minutom, možda čak i s nečim kratkim poput trideset sekundi. Kako se kaže, male kapi vode čine moćni ocean). Mali napori s vremenom se pretvaraju u velika postignuća. To bi trebao biti cilj: ukloniti trenje, osobito kada bi trenutak mogao biti težak. Kada su korisnici pod stresom ili preopterećeni, dajte im do znanja da se samo pojavljivanje, čak i na nekoliko sekundi, računa kao napor. Pružite jasne vizualne povratne informacije Ljudi su po prirodi vizualni. U većini slučajeva moramo nešto vidjeti da bismo vjerovali; postoji potreba za vizualizacijom stvari kako bismo ih bolje razumjeli i stavili stvari u perspektivu. Zbog toga obrasci nizova često koriste vizualne elemente, kao što su grafikoni, kvačice, prstenovi napretka i mreže, za vizualizaciju napora. Pogledajte GitHubov grafikon doprinosa. To je jednostavna vizualizacija dosljednosti. Ipak, programeri ga udišu poput kisika.
Ključ je u tome da sustav pruga ne djeluje apstraktno. Trebao bi se osjećati pravim i zasluženim. Na primjer, Duolingo i Appleovi prstenovi za fitness aktivnosti koriste jasan dizajn animacije nakon završetka niza, a GitHub prikazuje povijesne podatke o dosljednosti korisnika tijekom vremena.
Koristite dobro vrijeme Ranije sam spomenuo da su ljudi po prirodi općenito zaboravni i da upute mogu pomoći u održavanju zamaha naprijed. Bez upita, većina novih korisnika zaboravi nastaviti. Život može postati zauzet, motivacija nestane, a stvari se dogode. Čak i dugogodišnji korisnici imaju koristi od upita, iako su u većini slučajeva već zaključani u petlji navike. Ipak, čak i najpredanija osoba može slučajno propustiti dan. Vaš sustav nizova definitivno treba podsjetnike. Najčešće korišteni brzi podsjetnici su push obavijesti. Vrijeme je stvarno važno kada radite s push obavijestima. Važna je i vrsta aplikacije. Slanje obavijesti u 9 ujutro s porukom "Danas nisi vježbao" jednostavno je čudno za aplikaciju za učenje jer mnoge imaju stvari koje moraju obaviti dan prije nego što uopće pomisle završiti lekciju. No, ako govorimo o aplikaciji za fitness, to jeje razumno i možda se čak očekuje da će ga se podsjetiti ranije tijekom dana. Push obavijesti značajno se razlikuju ovisno o kategoriji aplikacije. Aplikacije za fitness, na primjer, bilježe veći angažman s ranim jutarnjim obavijestima (7-8 ujutro), dok bi aplikacije za produktivnost mogle bolje raditi u rano podne. Ključno je A/B testiranje vremena vaše aplikacije na temelju ponašanja vaših korisnika, a ne pretpostavke da su stvari jednake za sve. Ono što funkcionira za aplikaciju za meditaciju možda neće funkcionirati za alat za praćenje kodiranja. Druge metode upita su crvene točkice na ikoni aplikacije, pa čak i widgeti aplikacije. Studije se razlikuju, ali prosječna osoba otključa svoj uređaj između 50-150 puta dnevno (PDF). Ako korisnik vidi crvenu točku na aplikaciji ili widgetu koji označava trenutni niz svaki put kad otključa svoj telefon, to povećava obvezu. Samo nemojte pretjerivati; upit bi trebao služiti kao podsjetnik, a ne prigovaranje. Proslavite prekretnice Sustav nizova trebao bi pokušati proslaviti prekretnice kako bi ponovno probudio emocije, posebno za korisnike koji su duboko u nizu. Kada korisnik dosegne dan 7, dan 30, dan 50, dan 100, dan 365, trebali biste od toga napraviti veliku stvar. Priznajte postignuća — posebno za dugogodišnje korisnike.
Kao što smo vidjeli ranije, Duolingo je ovo shvatio i implementirao animiranu grafiku koja slavi prekretnice s konfetima. Neke platforme čak daju značajne bonus nagrade koje potvrđuju trud korisnika. A to može biti korisno za aplikacije, tako da korisnici obično dijele svoje prekretnice javno na društvenim medijima. Još jedna prednost je iščekivanje koje dolazi prije postizanja prekretnica. To nije samo beskrajno održavanje niza živim; korisnici se imaju čemu radovati. Koristite mehanizme milosti Život je nepredvidiv. Ljudi bivaju rastreseni. Svaki dobar sustav pruga trebao bi očekivati nesavršenost. Jedna od najvećih psiholoških prijetnji sustavu nizova je tvrdo vraćanje na nulu nakon samo jednog propuštenog dana. "Etički" sustav nizova trebao bi korisniku pružiti malo opuštenosti. Recimo da imate niz od 90 dana učenja šaha. Bio si dosljedan dobra tri mjeseca, a jednog dana ti telefon crkne na putovanju i tako 90 postane 0 — sve, sav taj trud se briše, a napredak nestaje. Korisnik bi mogao biti potpuno uništen. Pomisao na njegovu ponovnu izgradnju od nule je toliko demoralizirajuća da se trud ne isplati. U najgorem slučaju, korisnik bi mogao napustiti aplikaciju nakon što se osjeća kao neuspjeh. Razmislite o dodavanju "grace" mehanizma svom sustavu nizova:
Streak FreezeOmogućuje korisnicima da namjerno propuste dan bez kazni. Dodatno vrijeme Dopustite nekoliko sati (2–3) nakon uobičajenog roka prije pokretanja resetiranja. Modeli opadanja Umjesto tvrdog resetiranja, niz se smanjuje za malu količinu, npr. 10 dana se oduzima od niza po propuštenom danu.
Koristite ohrabrujući ton Usporedimo dvije poruke koje se prikazuju korisnicima kada se niz prekine:
"Izgubili ste svoj niz od 42 dana. Počnite ispočetka." "Pojavljivali ste se 42 dana uzastopno. To je nevjerojatan napredak! Želite li pokušati još jednom?"
Oba prenose iste informacije, ali emocionalni učinak je različit. Prva bi poruka najvjerojatnije demoralizirala korisnika i natjerala ga da odustane. Druga poruka slavi ono što je već postignuto i nježno potiče korisnika da pokuša ponovno. Izazovi dizajna Streak sustava Prije nego što uđemo u tehničke specifičnosti izgradnje streak sustava, trebali biste biti svjesni izazova s kojima biste se mogli suočiti. Stvari se mogu zakomplicirati, kao što možete i očekivati. Rukovanje vremenskim zonama Postoji razlog zašto je rukovanje vremenom i datumom među najtežim konceptima s kojima se programeri bave. Treba uzeti u obzir formatiranje, internacionalizaciju i još mnogo toga. Dopustite mi da vas pitam ovo: Što se računa kao dan? Znamo da je svijet u različitim vremenskim zonama, a kao da to nije dovoljno, neke regije imaju ljetno računanje vremena (DST) koje se događa dva puta godišnje. Gdje uopće početi rukovati ovim rubnim slučajevima? Što se računa kao "početak" sutrašnjice? Neki programeri to pokušavaju izbjeći korištenjem jedne središnje vremenske zone, poput UTC-a. Za neke korisnike ovo bi dalo ispravne rezultate, ali za neke bi moglo biti isključeno za sat, dva sata ili više. Ova nedosljednost uništava korisničko iskustvo. Korisnike je manje briga kako se nosite s vremenom iza scene; sve što očekuju je da ako izvedu akciju niza u 23:40, onda bi se ona trebala registrirati u to točno vrijeme, u njihovom kontekstu. Trebali biste definirati "jedan dan" na temelju korisnikove lokalne vremenske zone, a ne vremena poslužitelja. Naravno, možete polakousmjerite i poništite nizove globalno za sve korisnike u ponoć UTC, ali uvelike stvarate nepravedno. Netko u Kaliforniji uvijek ima osam sati više da obavi svoj zadatak nego netko tko živi u Londonu. To je nepravedna greška u dizajnu koja kažnjava određene korisnike zbog njihove lokacije. A što ako je ta osoba u Londonu samo u posjetu, dovrši zadatak, a zatim se vrati u drugu vremensku zonu? Jedno učinkovito rješenje za sve to je tražiti od korisnika da eksplicitno postave svoju vremensku zonu tijekom integracije (po mogućnosti nakon prve autentifikacije). Bilo bi dobro uključiti suptilnu napomenu da se pružanje informacija o vremenskoj zoni koristi samo za točnu praćenje napretka aplikacije, a ne kao podaci koji otkrivaju identitet. Još je jedna dobra ideja da to bude promjenjiva postavka. Predlažem da svi izbjegavaju izravno rukovanje logikom vremenske zone u aplikaciji. Koristite provjerene biblioteke datuma, poput Moment.js ili pytz (Python), itd. Nema potrebe ponovno izmišljati kotač za nešto ovako složeno. Propušteni dani i rubni slučajevi Još jedan izazov o kojem biste se trebali brinuti su nekontrolirani rubni slučajevi kao što su korisnici koji spavaju, prekid rada poslužitelja, kašnjenje, mrežni kvarovi i tako dalje. Korištenje ideje o mehanizmima milosti, poput onih o kojima smo ranije govorili, može pomoći. Grace window od dva sata mogao bi pomoći i korisniku i programeru, u smislu da se korisnici ne kažnjavaju strogo za nekontrolirane životne okolnosti. Programerima su grace prozori od pomoći u onim nekontroliranim trenucima kada poslužitelj padne usred noći. Iznad svega, nikada ne vjerujte klijentu. Uvijek provjerite na strani poslužitelja. Poslužitelj bi trebao biti jedini izvor istine. Prevencija varanja Opet, ne mogu ovo dovoljno naglasiti: Pobrinite se da potvrdite sve na strani poslužitelja. Korisnici su ljudi, a ljudi bi mogli varati ako im se pruži prilika. To je neizbježno. Možete pokušati:
Pohranjivanje svih radnji s UTC vremenskim oznakama. Klijent može poslati svoje lokalno vrijeme, ali poslužitelj to može odmah pretvoriti u UTC i provjeriti u odnosu na vrijeme poslužitelja. Na taj način, ako je vremenska oznaka klijenta sumnjivo daleko, sustav to može odbaciti kao pogrešku, a korisničko sučelje može odgovoriti u skladu s tim. Korištenje praćenja temeljenog na događajima. Drugim riječima, pohranite zapis svake radnje s metapodacima uključujući informacije poput ID-a korisnika, vrste izvršene radnje te vremenske oznake i vremenske zone. Ovo pomaže kod provjere valjanosti.
Izrada Streak System Enginea Ovo nije vodič za kodiranje, pa ću izbjeći da vam bacim hrpu koda. Zadržat ću ovo praktičnim i opisat ću kako stvari općenito funkcioniraju s motorom streak sustava što se tiče arhitekture, protoka i pouzdanosti. Osnovna arhitektura Kao što sam već nekoliko puta rekao, neka poslužitelj bude jedini izvor istine za podatke niza. Arhitektura na poslužitelju može izgledati ovako:
Pohranite podatke svakog korisnika u bazu podataka. Pohrani trenutnu pohranu nizova (zadano kao 0) kao cijeli broj. Pohranite postavke vremenske zone, tj. niz IANA vremenske zone (bilo implicitno iz lokalne vremenske oznake ili eksplicitno traženjem od korisnika da odabere svoju vremensku zonu). Na primjer, "Amerika/New_York". Obradite svu logiku kako biste utvrdili nastavlja li se niz ili prekida, uz provjeru vremenske zone koja je u odnosu na lokalnu vremensku zonu korisnika.
U međuvremenu, na strani klijenta:
Prikaži trenutni niz, koji se obično dohvaća s poslužitelja. Pošaljite izvršenu radnju u obliku metapodataka na poslužitelj kako biste provjerili je li korisnik stvarno izvršio kvalificirajuću radnju niza. Osigurajte vizualnu povratnu informaciju na temelju odgovora poslužitelja.
Dakle, ukratko, mozak je na poslužitelju, a klijent za potrebe prikaza i slanja događaja. Ovo vas štedi mnogo kvarova i rubnih slučajeva, plus olakšava ažuriranja i popravke. Logički tok Idemo simulirati prolazak o tome kako bi išao minimalno učinkovit motor sustava nizova kada korisnik dovrši radnju:
Korisnik dovrši radnju kvalificirajućeg niza. Klijent šalje događaj poslužitelju kao metapodatke. To može biti "Korisnik X je izvršio radnju Y u vremenskoj oznaci Z". Poslužitelj prima ovaj događaj i obavlja osnovnu provjeru valjanosti. Je li ovo pravi korisnik? Jesu li autentificirani? Je li akcija važeća? Je li vremenska zona dosljedna? Ako ovo prođe, poslužitelj dohvaća podatke o korisnikovim nizovima iz baze podataka. Zatim pretvorite primljenu vremensku oznaku radnje u lokalnu vremensku zonu korisnika. Neka poslužitelj usporedi kalendarske datume (ne vremenske oznake) u lokalnoj vremenskoj zoni korisnika: Ako je isti dan, radnja je suvišna i nema promjene unizati. Ako je sljedeći dan, tada se niz produžuje i povećava za 1. Ako postoji razlika veća od jednog dana, niz se prekida. Međutim, ovdje možete primijeniti mehaniku milosti. Ako se propusti mehanizam milosti, tada resetirajte niz na 1.
Ako odlučite spremiti povijesne podatke za postignuća prekretnica, ažurirajte varijable poput "najduži niz" ili "ukupno aktivnih dana". Poslužitelj tada ažurira bazu podataka i odgovara klijentu. Nešto ovako:
{ "trenutni_niz": 48, "najdulji_niz": 50, "ukupno_aktivnih_dana": 120, "streak_extended": točno, }
Kao daljnju mjeru, poslužitelj bi trebao pokušati ponovno ili odbiti i obavijestiti klijenta kada bilo što ne uspije tijekom procesa. Izgradnja za otpornost Kao što je prije spomenuto, gubitak niza korisnika zbog grešaka ili prekida rada poslužitelja je užasan UX, a korisnici ne očekuju da će biti krivi za to. Stoga bi vaš sustav nizova trebao imati zaštitu za te scenarije. Ako je poslužitelj nedostupan zbog održavanja (ili bilo kojeg drugog razloga), razmislite o dopuštanju privremenog vremenskog okvira dodatnih sati da se to popravi kako bi se radnje mogle podnijeti kasno i još uvijek se računati. Također možete odabrati da obavijestite korisnike, posebno ako situacija može utjecati na niz koji je u tijeku. Napomena: Uspostavite admin backdoor gdje se podaci mogu ručno vratiti. Greške su neizbježne, a neki bi korisnici pozvali vašu aplikaciju ili se obratili za podršku da je njihov niz prekinut iz razloga na koji nisu mogli utjecati. Trebali biste moći ručno vratiti pruge ako je, nakon istrage, korisnik u pravu. Zaključak Jedna stvar ostaje jasna: pruge su stvarno moćne zbog načina na koji ljudska psihologija funkcionira na temeljnoj razini. Najbolji sustav nizova je onaj o kojem korisnici ne razmišljaju svjesno. To je postala rutina trenutnih rezultata ili vidljivog napretka, poput pranja zubi, što postaje redovita navika. I samo ću reći: Ne trebaju svi proizvodi sustav pruga. Trebate li doista forsirati dosljednost samo zato što želite dnevne aktivne korisnike? Odgovor bi mogao biti "ne".