Siguran sam da ste čuli za trake ili ste koristili aplikaciju s njima. Ali da li ste se ikada zapitali zašto su trake tako popularne i moćne? Pa, očito je da aplikacije žele što više vaše pažnje, ali osim toga, da li ste znali da kada je popularna aplikacija za učenje Duolingo uvela iOS widgete za prikaz nizova, posvećenost korisnika porasla je za 60%. Šezdeset posto je ogromna promjena u ponašanju i pokazuje kako se obrasci "crta" mogu koristiti za povećanje angažmana i povećanje upotrebe. U osnovi, niz je broj uzastopnih dana u kojima korisnik završi određenu aktivnost. Neki ljudi to također definiraju kao "gamificiranu" naviku ili metriku dizajniranu da potakne dosljednu upotrebu. Ali nizovi prevazilaze to što su metrika ili zapis u aplikaciji; više je psihološki od toga. Na ljudske instinkte je lako uticati sa pravim faktorima. Pogledajte ova tri faktora: napredak, ponos i strah od propuštanja (koji se obično naziva FOMO). Šta sve ovo ima zajedničko? Napor. Što više truda uložite u nešto, to više oblikuje vaš identitet, a tako se crte prelaze u svijet bihejvioralne psihologije. Sada, uz veliku moć dolazi i velika odgovornost, i zbog toga postoji tamna strana crta. U ovom članku ćemo se baviti psihologijom, UX-om i principima dizajna koji stoje iza izgradnje efikasnog sistema niza. Pogledat ćemo (1) zašto naš mozak gotovo instinktivno reagira na aktivnost niza, (2) kako dizajnirati pruge na način koji istinski pomaže korisnicima i (3) tehnički rad uključen u izgradnju obrasca pruga. Psihologija iza traka Da bismo dizajnirali i izgradili efikasan sistem niza, moramo razumjeti kako je on usklađen s načinom na koji je naš mozak povezan. Na primjer, šta ga čini tako djelotvornim do te mjere da osjećamo toliko intenzivne posvećenosti zaštiti svojih linija? Postoje tri zanimljiva, dobro dokumentirana psihologijska principa koji podržavaju ono što čini crte tako moćnim i zaraznim. Loss Aversion Ovo je vjerovatno najjača sila iza nizova. Kažem ovo jer većinu puta ovo skoro ne možete izbjeći u životu. Razmislite o tome ovako: ako vam prijatelj da 100 dolara, bili biste sretni. Ali ako izgubite 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 kažemo da vam dajem 100 dolara i tražim da se kockate. Postoji 50% šanse da osvojite još 100 dolara i 50% šanse da izgubite originalnih 100 dolara. Da li biste ga uzeli? ne bih. Većina ljudi ne bi. To je averzija prema gubitku. Ako razmislite, logično je, razumljivo je, ljudski je. Koncept koji stoji iza averzije prema gubitku je da osjećamo bol zbog gubitka nečega dvostruko više od zadovoljstva da dobijemo nešto jednake vrijednosti. U psihološkom smislu, gubitak traje više nego dobici. Vjerovatno vidite kako se ovo odnosi na pruge. Da bi se izgradio uočljiv niz, potreban je napor; kako niz raste, motivacija iza njega počinje da blijedi; ili tačnije, počinje da postaje sekundarno. Evo primjera: Recimo da vaš prijatelj ima trodnevni niz zatvaranja svojih "Move Rings" na Apple Watchu. Nemaju gotovo ništa za izgubiti osim želje da ostvare svoj cilj i budu dosljedni. U isto vrijeme, imate impresivan niz od 219 dana. Velike su šanse da ste zarobljeni strahom da ćete ga izgubiti. Najvjerovatnije u ovom trenutku ne razmišljate o postignuću; više se radi o zaštiti vašeg uloženog truda, a to je averzija prema gubitku. Duolingo objašnjava kako averzija prema gubitku doprinosi nespremnosti korisnika da prekine dug niz, čak i u najlijenijim danima. Na neki način, niz može prerasti u naviku kada se ustali averzija prema gubitku. Foggov model ponašanja (B = MAP) Sada kada razumemo strah od gubitka truda uloženog u duže nizove, drugo pitanje je: šta nas uopšte tera da to uradimo, dan za danom, čak i pre nego što niz postane veliki? To je ono o čemu govori Foggov model ponašanja. To je relativno jednostavno. Ponašanje (B) se javlja samo kada se tri faktora — Motivacija (M), Sposobnost (A) i Podsticanje (P) — usklade u istom trenutku. Dakle, jednačina B=MAP. Ako bilo koji od ovih faktora, čak i jedan, nedostaje u tom trenutku, ponašanje se neće dogoditi. Dakle, da bi sistem niza bio efikasan i da se ponavlja, moraju biti prisutna sva tri faktora: Motivacija Ovo je krhko i nije nešto što je stalno prisutno. Ima dana kada jesinapumpan da naučiš španski, a danima kada ne osećaš ni mrvicu volje da naučiš jezik. Motivacija za stvaranje navike sama po sebi 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-u samo treba da stojite jednu minutu u satu kako biste zaradili kvačicu prema svom Stand cilju. Duolingu je potrebna samo jedna završena lekcija. Ovi zadaci ne zahtijevaju toliko truda. Barijera je toliko niska da čak i u najgorim danima to možete učiniti. Ali zajednički napor kontinuiranog niza je mjesto gdje počinje ideja gubitka tog niza. PromptOvo je ono što upotpunjuje jednačinu. Ljudi su prirodno zaboravni, pa da, sposobnost nas može dovesti do 90% tamo. Ali poziv nas podsjeća da djelujemo. Trake su po dizajnu postojane, tako da korisnike treba stalno podsjećati da djeluju. Kako bi vidio koliko moćan upit može biti, Duolingo je napravio A/B test kako bi vidio da li mala crvena značka na ikoni aplikacije povećava dosljednu upotrebu. To je dovelo do povećanja od 6% dnevno aktivnih korisnika. Samo crvena značka. Ograničenja modela Uzimajući u obzir sve ovo, postoji ograničenje za model Fogga prema kojem su kritičari i moderna istraživanja primijetili da dizajn koji se previše oslanja na upute, poput agresivnih obavijesti, rizikuje stvaranje mentalnog umora. Stalna obavještenja i prekovremeni rad mogu uzrokovati odustajanje korisnika. Dakle, pazite na to. Zeigarnikov efekat Kako se osjećate kada napola odradite zadatak projekta? To mnoge ljude iritira jer nedovršeni zadaci zauzimaju više mentalnog prostora od stvari koje završavamo. Kada se nešto uradi i nestane, skloni smo da to zaboravimo. Kada nešto ostane neurađeno, ima tendenciju da opterećuje naše umove. Upravo zbog toga digitalni proizvodi koriste vještačke indikatore napretka, poput Upwork-ove trake za završetak profila, kako bi korisniku dali do znanja da je njihov profil samo “60% završen”. Podstiče korisnika da završi ono što je započeo.
Pogledajmo još jedan primjer. Imate pet zadataka u aplikaciji za listu obaveza, a na kraju dana samo četiri od njih provjerite kao dovršene. Mnogi od nas će se osjećati neostvareno zbog tog jednog nedovršenog zadatka. To je, upravo tamo, Zeigarnikov efekat. Zeigarnikov efekat demonstrirala je psihologinja Bluma Zeigarnik, koja je opisala da smo skloni da nedovršene zadatke držimo aktivnim u svom pamćenju duže od završenih zadataka. U UX dizajnu se to prirodno uklapa u šarenu šaru. Recimo da ste na 63. danu niza učenja. U tom trenutku nalazite se u stalnom obrascu nedovršenog posla. Vaš mozak bi rijetko zaboravio na to jer se nalazi u pozadini vašeg uma. U ovom trenutku, vaš mozak postaje taj koji vam šalje obavijesti. Kada spojite ove psihološke sile zajedno, počinjete istinski shvaćati zašto nizovi nisu samo obična funkcija aplikacije; oni su sposobni da preoblikuju ljudsko ponašanje. Ali negde na liniji – ne mogu tačno da kažem kada, pošto se to razlikuje za svakoga – stvari dostižu tačku u kojoj se niz prelazi sa „zabavne“ na nešto za šta smatrate da ne možete da priuštite da izgubite. Ne želite da 58 dana truda propadne, zar ne? To je ono što sistem niza čini efikasnim. Ako se rade kako treba, pruge pomažu korisnicima da izgrade zapanjujuće navike koje postižu cilj. To može biti svakodnevno čitanje ili dosljedan odlazak u teretanu. Ove ponovljene radnje (ponekad male) se vremenom povećavaju i postaju očigledne u našem svakodnevnom životu. Ali postoje dvije strane svakog novčića. Tanka linija između navike i prisile Ako ste ih pratili, već možete reći da postoji tamna strana sistema niza. Formiranje navike se odnosi na dosljednost s ponovljenim ciljem. Prinuda je, međutim, dosljednost rada na cilju koji više nije potreban, ali se drži iz straha ili pritiska. To je linija kao žilet. Svako jutro perete zube bez razmišljanja; automatski je i instinktivan, sa jasnim ciljem dobrog daha. To je niz koji stvara dobru naviku. Sistem etičkih linija daje korisnicima prostor za disanje. Ako iz nekog razloga ne perete ujutru, možete četkati u podne. Nesavršenost je dozvoljena bez straha od gubitka dugog truda. Kompulzija ide suprotnim putem, pri čemu vas niz čini tjeskobnim, osjećate se krivim ili čak iscrpljenim, a ponekad vam se čini da niste ništa postigli, uprkos svim svojimrad. Ponašate se ne zato što to želite, već zato što se podsvjesno plašite da vidite kako se vaš napredak vraća na nulu. Neko je to čak savršeno opisao: "Osjećao sam da varam, ali jednostavno me nije bilo briga. Ja sam ništa bez svog niza". Ovo pokazuje ekstremne linije koje može imati pojedinca. U meri u kojoj korisnici počinju da vezuju svoju sopstvenu vrednost za proizvoljni pokazatelj, a ne za prvobitni cilj ili razlog zašto su započeli niz. Niz postaje ono što jesu, a ne samo ono što rade. Dobro osmišljen sistem etičkih linija treba da se oseća kao ohrabrenje za korisnika, a ne kao pritisak ili obaveza. Ovo se odnosi na ravnotežu unutrašnje i ekstrinzične motivacije. Ekstrinzična motivacija (vanjske nagrade, izbjegavanje kazne) može pokrenuti korisnike, ali intrinzična motivacija (obavljanje zadatka za lični cilj kao što je učenje španjolskog jer iskreno želite komunicirati s voljenom osobom) je jača za dugotrajni angažman. Dobar sistem treba da gravitira ka unutrašnjoj motivaciji uz pažljivu upotrebu ekstrinzičnih elemenata, odnosno da podsjeća korisnike dokle su stigli, a ne da im prijeti onim što mogu izgubiti. Opet, to je tanka linija. Jednostavan test prilikom dizajniranja sistema niza je da zapravo odvojite malo vremena i razmislite da li vaši proizvodi zarađuju novac prodajom rješenja za anksioznost koju je vaš proizvod stvorio. Ako da, postoji velika šansa da iskorištavate korisnike. Dakle, sljedeće pitanje glasi, ako odlučim da koristim streak, kako da ga dizajniram na način koji istinski pomaže korisnicima da postignu svoje ciljeve? UX dizajna sistema Good Streak Vjerujem da je to mjesto gdje većina projekata ili postigne efikasan sistem niza ili ga potpuno zabrlja. Prođimo kroz neke UX principe dobrog dizajna niza. Držite ga bez napora Vjerovatno ste ovo već čuli, možda iz knjiga poput Atomic Habits, ali vrijedi spomenuti da je jedan od najlakših načina na koji se navike mogu formirati tako da se radnja učini sićušnom i lakom. Ovo je slično faktoru sposobnosti o kojem smo raspravljali iz Foggovog modela ponašanja. Prvo pravilo svakog dizajna pruga trebalo bi da bude što je moguće manja potrebna radnja, a da se i dalje postiže napredak. Ako je za svakodnevnu radnju potrebna snaga volje, ta radnja neće proći pet dana. Zašto? Ne možete biti motivisani pet dana zaredom. Primjer: ako pokrenete aplikaciju za meditaciju, ne morate tjerati korisnike da prolaze kroz 20-minutnu sesiju samo da biste održali niz. Umjesto toga, pokušajte s jednom minutom, možda čak i sa tridesetak sekundi. Kako se kaže, male kapi vode čine moćni okean). Mali napori se vremenom pretvaraju u velika dostignuća. To bi trebao biti cilj: ukloniti trenje, posebno kada bi trenutak mogao biti težak. Kada su korisnici pod stresom ili preopterećeni, dajte im do znanja da se jednostavno pojavljivanje, čak i na nekoliko sekundi, računa kao napor. Obezbedite jasne vizuelne povratne informacije Ljudi su po prirodi vizuelni. U većini slučajeva moramo da vidimo nešto u šta možemo da verujemo; postoji potreba za vizualizacijom stvari kako bi ih bolje razumjeli i stavili stvari u perspektivu. Zbog toga obrasci pruga često koriste vizualne elemente, kao što su grafikoni, kvačice, prstenovi napretka i mreže, kako bi vizualizirali napor. Pogledajte grafikon doprinosa GitHub-a. To je jednostavna vizualizacija konzistentnosti. Ipak, programeri ga udišu kao kiseonik.
Ključ nije u tome da sistem pruga izgleda apstraktno. Trebalo bi se osjećati stvarno i zasluženo. Na primjer, Duolingo i Apple-ovi prstenovi za fitnes aktivnosti koriste čist dizajn animacije po završetku niza, a GitHub prikazuje povijesne podatke o konzistentnosti korisnika tijekom vremena.
Koristite dobar tajming Ranije sam spomenuo da su ljudi općenito zaboravni po prirodi i da upute mogu pomoći u održavanju zamaha naprijed. Bez upita, većina novih korisnika zaboravlja da nastavi. Život može postati zauzet, motivacija nestaje i stvari se dešavaju. Čak i dugogodišnji korisnici imaju koristi od upita, iako su oni u većini slučajeva već zaključani unutar petlje navika. Ipak, čak i najposvećenija osoba može slučajno propustiti dan. Vašem sistemu niza svakako su potrebni podsjetnici. Najkorišteniji podsjetnici su push obavijesti. Tajming je zaista važan kada radite s push obavijestima. Bitna je i vrsta aplikacije. Slanje obavještenja u 9 sati u kojem piše "Nisi vježbao danas" je jednostavno čudno za aplikaciju za učenje jer mnogi imaju stvari koje treba obaviti dan prije nego što i pomisle da završe lekciju. Međutim, ako govorimo o aplikaciji za fitnesje razumno i možda se čak očekuje da će ga podsjetiti ranije u toku dana. Push obavijesti se značajno razlikuju po kategoriji aplikacije. Fitnes aplikacije, na primjer, ostvaruju veći angažman s ranim jutarnjim obavještenjima (7-8 ujutro), dok bi aplikacije za produktivnost mogle bolje raditi u rano podne. Ključ je u A/B testiranju vremena za vašu aplikaciju na osnovu ponašanja vaših korisnika, a ne pod pretpostavkom da su stvari jedinstvene za sve. Ono što radi za aplikaciju za meditaciju možda neće raditi za praćenje kodiranja. Druge metode za prompt su crvene tačke na ikoni aplikacije, pa čak i widgeti aplikacije. Studije se razlikuju, ali prosječna osoba otključava svoj uređaj između 50-150 puta dnevno (PDF). Ako korisnik vidi crvenu tačku na aplikaciji ili widgetu koja označava trenutni niz svaki put kada otključa svoj telefon, to povećava posvećenost. Samo nemojte pretjerivati; upit bi trebao služiti kao podsjetnik, a ne zanovijetanje. Slavite prekretnice Sistem niza bi trebao pokušati proslaviti prekretnice kako bi ponovo razbuktao emocije, posebno za korisnike koji su duboko u nizu. Kada korisnik pogodi Dan 7, Dan 30, Dan 50, Dan 100, Dan 365, trebali biste napraviti veliku stvar od toga. Priznajte dostignuća — posebno za dugogodišnje korisnike.
Kao što smo ranije vidjeli, Duolingo je to shvatio i implementirao animiranu grafiku koja slavi prekretnice uz konfete. Neke platforme čak daju značajne bonus nagrade koje potvrđuju napore korisnika. A to može biti od koristi za aplikacije, tako da korisnici imaju tendenciju da dijele svoje prekretnice javno na društvenim medijima. Još jedna prednost je iščekivanje koje dolazi prije dostizanja prekretnica. To nije samo beskrajno održavanje niza; korisnici imaju čemu da se raduju. Koristite Grace mehanizme Život je nepredvidiv. Ljudi se ometaju. Svaki dobar sistem traka treba očekivati nesavršenost. Jedna od najvećih psiholoških prijetnji sistemu niza je hard reset na nulu nakon samo jednog propuštenog dana. Sistem „etičkih linija“ trebao bi korisniku pružiti malo zastoja. Recimo da imate 90-dnevni niz učenja šaha. Dosljedni ste tri dobra mjeseca, i jednog dana vaš telefon umire dok ste na putovanju, i samo tako, 90 postaje 0 — sve, sav taj trud se briše, a napredak nestaje. Korisnik bi mogao biti potpuno uništen. Pomisao na obnovu od nule je toliko demoralizirajuća da trud nije vrijedan toga. U najgorem slučaju, korisnik može napustiti aplikaciju nakon što se osjeća kao neuspjeh. Razmislite o dodavanju „grace” mehanizma vašem sistemu niza:
Streak FreezeOmogućite korisnicima da namjerno propuste dan bez kazni. Extra Time Pustite nekoliko sati (2–3) nakon uobičajenog roka prije nego što pokrenete resetiranje. Modeli propadanja Umjesto hard resetiranja, niz se smanjuje za malu količinu, npr. 10 dana se oduzima od niza po propuštenom danu.
Koristite ohrabrujući ton Uporedimo 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 nevjerovatan napredak! Želite li još jednom pokušati?"
Oba prenose iste informacije, ali je emocionalni uticaj drugačiji. Prva poruka bi najvjerovatnije natjerala korisnika da se osjeća demoralizirano i navela ga da odustane. Druga poruka slavi ono što je već postignuto i nježno podstiče korisnika da pokuša ponovo. Izazovi dizajna sistema Streak Prije nego što uđemo u tehničke specifičnosti izgradnje streak sistema, trebali biste biti svjesni izazova s kojima se možete suočiti. Stvari se mogu zakomplikovati, kao što možete 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 razmotriti formatiranje, internacionalizaciju i još mnogo toga. Dozvolite mi da vas pitam ovo: šta se računa kao dan? Znamo da se svijet kreće u različitim vremenskim zonama, a kao da to nije dovoljno, u nekim regijama postoji ljetno računanje vremena (DST) koje se dešava dva puta godišnje. Gdje uopće početi rješavati ove rubne slučajeve? Šta se računa kao „početak“ sutrašnjeg dana? Neki programeri pokušavaju izbjeći ovo korištenjem jedne centralne vremenske zone, kao što je UTC. Za neke korisnike to 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. Korisnicima je manje stalo kako se nosite sa vremenom iza kulisa; sve što očekuju je da ako izvedu akciju u nizu u 23:40, onda bi se ona trebala registrirati u to točno vrijeme, u njihovom kontekstu. Trebali biste definirati "jedan dan" na osnovu lokalne vremenske zone korisnika, a ne vremena servera. Naravno, možete olakorute i resetirajte nizove globalno za sve korisnike u ponoć UTC, ali vi u velikoj mjeri stvarate nepravednost. Neko u Kaliforniji uvek ima osam sati viška da završi svoj zadatak nego neko ko živi u Londonu. To je nepravedna greška u dizajnu koja kažnjava određene korisnike zbog njihove lokacije. A šta ako je ta osoba u Londonu samo u posjeti, završi zadatak, a zatim se vrati u drugu vremensku zonu? Jedno efikasno rešenje za sve ovo je da zamolite korisnike da eksplicitno postave svoju vremensku zonu tokom onboardinga (po mogućnosti nakon prve autentifikacije). Dobra je ideja uključiti suptilnu napomenu da se pružanje informacija o vremenskoj zoni koristi samo za aplikaciju za precizno praćenje napretka, umjesto da se koristi kao lični podaci. I još je jedna dobra ideja da to učinite promjenjivom postavkom. Predlažem da svako izbjegava direktno rukovanje logikom vremenske zone u aplikaciji. Koristite isprobane biblioteke datuma, poput Moment.js ili pytz (Python), itd. Nema potrebe da izmišljate točak za nešto tako složeno kao što je ovo. Propušteni dani i rubni slučajevi Još jedan izazov o kojem biste trebali brinuti su nekontrolisani rubni slučajevi kao što su korisnici koji spavaju, zastoji servera, kašnjenje, kvarovi na mreži itd. Korištenje ideje mehanizama milosti, poput onih o kojima smo ranije govorili, može pomoći. Grace prozor od dva sata može pomoći i korisniku i programeru, u smislu da korisnici nisu strogo kažnjeni zbog nekontrolisanih životnih okolnosti. Za programere, grace windows su od pomoći u onim nekontrolisanim trenucima kada se server pokvari usred noći. Iznad svega, nikada nemojte vjerovati klijentu. Uvijek provjerite valjanost na strani servera. Server bi trebao biti jedini izvor istine. Prevencija varanja Opet, ne mogu dovoljno naglasiti ovo: Obavezno provjerite sve na strani servera. Korisnici su ljudi, i ljudi bi mogli varati ako im se pruži prilika. To je neizbježno. Možete pokušati:
Pohranjivanje svih akcija sa UTC vremenskim oznakama. Klijent može poslati svoje lokalno vrijeme, ali server to može odmah pretvoriti u UTC i provjeriti u odnosu na vrijeme servera. Na taj način, ako je vremenska oznaka klijenta sumnjivo daleka, sistem to može odbiti kao grešku, a korisničko sučelje može odgovoriti u skladu s tim. Korištenje praćenja zasnovanog na događaju. Drugim riječima, pohranite zapis o svakoj radnji s metapodacima uključujući informacije kao što su ID korisnika, vrsta izvršene radnje i vremenska oznaka i vremenska zona. Ovo pomaže kod validacije.
Izgradnja motora sistema Streak Ovo nije vodič za kodiranje, pa ću izbjeći da vam bacam gomilu koda. Zadržat ću ovo praktičnim i opisati kako stvari općenito rade na sistemu streak system što se tiče arhitekture, protoka i pouzdanosti. Core Architecture Kao što sam rekao nekoliko puta, učinite server jedinim izvorom istine za niz podataka. Arhitektura na serveru može izgledati ovako:
Pohranite podatke svakog korisnika u bazu podataka. Spremite trenutno skladište niza (zadano kao 0) kao cijeli broj. Spremite željenu vremensku zonu, tj. niz IANA vremenske zone (bilo implicitno iz lokalne vremenske oznake ili eksplicitno tražeći od korisnika da odabere svoju vremensku zonu). Na primjer, “America/New_York”. Obradite svu logiku kako biste utvrdili nastavlja li se niz ili prekida, uz provjeru vremenske zone koja je relativna u odnosu na lokalnu vremensku zonu korisnika.
U međuvremenu, na strani klijenta:
Prikažite trenutni niz, koji se obično preuzima sa servera. Pošaljite radnju urađenu u obliku metapodataka na server da potvrdi da li je korisnik zaista izvršio kvalifikujuću radnju niza. Dajte vizuelnu povratnu informaciju na osnovu odgovora servera.
Dakle, ukratko, mozak je na serveru, a klijent je za potrebe prikazivanja i slanja događaja. Ovo vam štedi mnogo kvarova i rubnih slučajeva, plus olakšava ažuriranja i popravke. Logički tok Hajde da simuliramo korak kroz koji bi se odvijao minimalno efikasan motor sistema niza kada korisnik završi radnju:
Korisnik završava radnju kvalifikacionog niza. Klijent šalje događaj serveru kao metapodatke. Ovo može biti „Korisnik X je završio radnju Y u vremenskoj žigi Z“. Server prima ovaj događaj i vrši osnovnu provjeru valjanosti. Je li ovo pravi korisnik? Jesu li autentificirani? Da li je akcija važeća? Da li je vremenska zona konzistentna? Ako ovo prođe, server preuzima podatke o nizu korisnika iz baze podataka. Zatim pretvorite primljenu vremensku oznaku radnje u lokalnu vremensku zonu korisnika. Neka server uporedi kalendarske datume (ne vremenske oznake) u lokalnoj vremenskoj zoni korisnika: Ako je isti dan, tada je radnja suvišna i nema promjene ustreak. Ako je to sljedeći dan, niz se produžava i povećava za 1. Ako postoji razmak duži od jednog dana, niz se prekida. Međutim, ovdje možete primijeniti mehaniku milosti. Ako je propušten mehanizam grace, onda resetirajte niz na 1.
Ako odaberete da sačuvate istorijske podatke za prekretnice, ažurirajte varijable kao što su "najduži niz" ili "ukupno aktivnih dana". Server zatim ažurira bazu podataka i odgovara klijentu. nesto ovako:
{ "current_streak": 48, "najduži niz": 50, "total_active_days": 120, "streak_extended": istina, }
Kao dalju mjeru, server bi trebao ili ponovo pokušati ili odbiti i obavijestiti klijenta kada bilo šta ne uspije tokom procesa. Izgradnja za otpornost Kao što je već spomenuto, korisnici koji gube niz zbog grešaka ili zastoja servera je užasan UX, a korisnici ne očekuju da će prihvatiti pad zbog toga. Stoga bi vaš sistem niza trebao imati zaštitne mjere za te scenarije. Ako server ne radi zbog održavanja (ili bilo kojeg drugog razloga), razmislite o tome da dozvolite privremeni period od dodatnih sati kako biste ga popravili kako bi se radnje mogle poslati kasno i i dalje računati. Također možete odabrati da obavijestite korisnike, posebno ako situacija može utjecati na kontinuirani niz. Napomena: Uspostavite backdoor administratora gdje se podaci mogu ručno vratiti. Greške su neizbježne, a neki korisnici bi pozvali vašu aplikaciju ili zatražili podršku da je njihov niz prekinut iz razloga koji nisu mogli kontrolirati. Trebali biste moći ručno vratiti nizove ako je, nakon istrage, korisnik u pravu. Zaključak Jedna stvar ostaje jasna: pruge su zaista moćne zbog načina na koji ljudska psihologija funkcioniše na fundamentalnom nivou. Najbolji sistem traka na svijetu je onaj o kojem korisnici ne razmišljaju svjesno. To je postala rutina trenutnih rezultata ili vidljivog napretka, poput pranja zuba, što postaje redovna navika. I samo ću to reći: ne trebaju svi proizvodi sistem traka. Treba li zaista forsirati dosljednost samo zato što želite svakodnevno aktivne korisnike? Odgovor bi mogao biti “ne”.