Ik weet zeker dat je wel eens van strepen hebt gehoord of er een app mee hebt gebruikt. Maar heb je je ooit afgevraagd waarom streaks zo populair en krachtig zijn? Welnu, het ligt voor de hand dat apps zoveel mogelijk aandacht van je willen, maar wist je daarnaast dat toen de populaire leerapp Duolingo iOS-widgets introduceerde om strepen weer te geven, de betrokkenheid van gebruikers met 60% steeg. Zestig procent is een enorme gedragsverandering en laat zien hoe ‘streak’-patronen kunnen worden gebruikt om de betrokkenheid te vergroten en het gebruik te stimuleren. In essentie is een streak het aantal opeenvolgende dagen dat een gebruiker een specifieke activiteit voltooit. Sommige mensen definiëren het ook als een ‘gamified’ gewoonte of een maatstaf die is ontworpen om consistent gebruik aan te moedigen. Maar strepen gaan verder dan alleen maar een meetwaarde of een record in een app; het is meer psychologisch dan dat. Menselijke instincten zijn gemakkelijk te beïnvloeden met de juiste factoren. Kijk naar deze drie factoren: vooruitgang, trots en de angst om iets te missen (ook wel FOMO genoemd). Wat hebben deze allemaal gemeen? Poging. Hoe meer moeite je ergens in steekt, hoe meer het je identiteit vormt, en zo dringen strepen door in de wereld van de gedragspsychologie. Nu gaat met grote macht een grote verantwoordelijkheid gepaard, en daarom zit er een donkere kant aan streaks. In dit artikel gaan we in op de psychologie, UX en ontwerpprincipes achter het bouwen van een effectief streak-systeem. We zullen kijken naar (1) waarom onze hersenen bijna instinctief reageren op streak-activiteit, (2) hoe je streaks kunt ontwerpen op een manier die gebruikers echt helpt, en (3) het technische werk dat betrokken is bij het bouwen van een streak-patroon. De psychologie achter Streaks Om een effectief streak-systeem te ontwerpen en te bouwen, moeten we begrijpen hoe het aansluit bij hoe onze hersenen zijn aangesloten. Wat maakt het bijvoorbeeld zo effectief dat we zoveel intense toewijding voelen om onze strepen te beschermen? Er zijn drie interessante, goed gedocumenteerde psychologische principes die ondersteunen wat streaks zo krachtig en verslavend maakt. Verliesaversie Dit is waarschijnlijk de sterkste kracht achter streaks. Ik zeg dit omdat je dit in het leven meestal bijna niet kunt vermijden. Zie het zo: als een vriend je €100,- geeft, ben je blij. Maar als u €100,- uit uw portemonnee verliest, zou dat veel meer pijn doen. Het emotionele gewicht van deze situaties is niet gelijk. Verlies doet veel meer pijn dan winst goed voelt. Laten we nog verder gaan en zeggen dat ik u $ 100 geef en u vraag een gok te spelen. Er is een kans van 50% dat u nog eens € 100 wint en een kans van 50% dat u de oorspronkelijke € 100 verliest. Zou jij het aannemen? Ik zou het niet doen. De meeste mensen zouden dat niet doen. Dat is verliesaversie. Als je erover nadenkt, is het logisch, begrijpelijk, het is menselijk. Het concept achter verliesaversie is dat we de pijn voelen van het verliezen van iets twee keer zoveel als het plezier van het verkrijgen van iets van gelijke waarde. In psychologische termen blijft verlies langer hangen dan winst. Je ziet waarschijnlijk hoe dit verband houdt met strepen. Om een ​​opvallende streak op te bouwen, is inspanning nodig; naarmate een reeks groeit, begint de motivatie erachter te vervagen; of beter gezegd, het begint secundair te worden. Hier is een voorbeeld: stel dat uw vriend drie dagen lang zijn 'Move Rings' op zijn Apple Watch sluit. Ze hebben bijna niets te verliezen, behalve dat ze hun doel willen bereiken en consistent willen zijn. Tegelijkertijd heb je een indrukwekkende reeks van 219 dagen. De kans is groot dat je gevangen zit in de angst om het te verliezen. Waarschijnlijk denk je op dit moment niet aan de prestatie; het gaat meer om het beschermen van uw geïnvesteerde inspanningen, en dat is verliesaversie. Duolingo legt uit hoe verliesaversie bijdraagt ​​aan de onwil van een gebruiker om een ​​lange reeks te doorbreken, zelfs op de meest luie dagen. In zekere zin kan een streak een gewoonte worden als de afkeer van verlies de overhand krijgt. Het Fogg-gedragsmodel (B = MAP) Nu we de angst begrijpen om de moeite die we in langere streaks hebben geïnvesteerd te verliezen, is een andere vraag: wat zorgt ervoor dat we dat ding eigenlijk doen, dag in dag uit, zelfs voordat de streak groot wordt? Dat is waar het Fogg-gedragsmodel over gaat. Het is relatief eenvoudig. Gedrag (B) treedt alleen op als drie factoren – motivatie (M), bekwaamheid (A) en prompt (P) – op hetzelfde moment op één lijn liggen. Dus de vergelijking B=MAP. Als een van deze factoren, zelfs al is het maar één, op dat moment ontbreekt, zal het gedrag niet plaatsvinden. Om een streak-systeem efficiënt en terugkerend te laten zijn, moeten dus alle drie de factoren aanwezig zijn: MotivatieDit is kwetsbaar en niet iets dat consequent aanwezig is. Er zijn dagen waarop je dat bentGepompt om Spaans te leren, en dagen dat je niet eens een greintje wilskracht voelt om de taal te leren. Motivatie op zichzelf om een ​​gewoonte aan te leren is onbetrouwbaar en vanaf de eerste dag een verloren strijd. VermogenOm de beperkingen van motivatie te compenseren, is vermogen van cruciaal belang. In deze context betekent bekwaamheid het gemak van handelen, dat wil zeggen dat de inspanning zo gemakkelijk is dat het onrealistisch is om te zeggen dat dit niet mogelijk is. De meeste apps maken hier bewust gebruik van. Voor Apple Fitness hoef je alleen maar één minuut per uur te staan ​​om een ​​tikje te verdienen voor je Stand-doel. Duolingo heeft slechts één voltooide les nodig. Deze taken vergen niet zoveel inspanning. De barrière is zo laag dat je het zelfs op je slechtste dagen kunt doen. Maar door de gecombineerde inspanning van een aanhoudende streak ontstaat het idee om die streak te verliezen. PromptDit maakt de vergelijking compleet. Mensen zijn van nature vergeetachtig, dus ja, vaardigheid kan ons daar voor 90% brengen. Maar een prompt herinnert ons eraan om te handelen. Strepen zijn van nature hardnekkig, dus gebruikers moeten er voortdurend aan worden herinnerd actie te ondernemen. Om te zien hoe krachtig een prompt kan zijn, heeft Duolingo een A/B-test uitgevoerd om te zien of een kleine rode badge op het app-pictogram het consistente gebruik verhoogt. Het zorgde voor een toename van 6% in het aantal dagelijks actieve gebruikers. Gewoon een rood kenteken. Modelbeperkingen Dit alles gezegd hebbende, is er een beperking aan het Fogg-model waarbij critici en modern onderzoek hebben opgemerkt dat een ontwerp dat te sterk afhankelijk is van aanwijzingen, zoals agressieve meldingen, het risico loopt mentale vermoeidheid te creëren. Voortdurende meldingen en overuren kunnen ervoor zorgen dat gebruikers gaan churnen. Let daar dus op. Het Zeigarnik-effect Hoe voel jij je als je een taak of project half afgemaakt achterlaat? Dat irriteert veel mensen omdat onafgemaakte taken meer mentale ruimte in beslag nemen dan de dingen die we voltooien. Als iets klaar en weg is, zijn we geneigd het te vergeten. Wanneer iets ongedaan wordt gemaakt, heeft dit de neiging om op onze gedachten te wegen. Dit is precies de reden waarom digitale producten kunstmatige voortgangsindicatoren gebruiken, zoals de profielaanvullingsbalk van Upwork, om een ​​gebruiker te laten weten dat zijn profiel slechts “60% compleet” is. Het spoort de gebruiker aan om af te maken waar hij aan begonnen is.

Laten we naar een ander voorbeeld kijken. Je hebt vijf taken in een takenlijst-app en aan het eind van de dag controleer je er slechts vier als voltooid. Velen van ons zullen zich onvoltooid voelen vanwege die ene onvoltooide taak. Dat is precies het Zeigarnik-effect. Het Zeigarnik-effect werd gedemonstreerd door psycholoog Bluma Zeigarnik, die beschreef dat we de neiging hebben om onvolledige taken langer actief te houden in ons geheugen dan voltooide taken. Een streeppatroon maakt hier op natuurlijke wijze gebruik van in UX-ontwerp. Laten we zeggen dat u zich op dag 63 van een leerreeks bevindt. Op dat moment bevindt u zich in een voortdurend patroon van onafgemaakte zaken. Je hersenen zullen het zelden vergeten, omdat het in je achterhoofd zit. Op dit punt worden uw hersenen degene die u meldingen sturen. Wanneer je deze psychologische krachten samenvoegt, begin je echt te begrijpen waarom streaks niet alleen maar een reguliere app-functie zijn; ze zijn in staat menselijk gedrag te hervormen. Maar ergens langs de lijn – ik kan niet precies zeggen wanneer, omdat het voor iedereen verschilt – bereiken de dingen een punt waarop een streep verschuift van ‘leuk’ naar iets waarvan je denkt dat je het je niet kunt veroorloven om te verliezen. Je wilt toch niet dat 58 dagen inspanning verloren gaan? Dat maakt een streak-systeem effectief. Als het goed wordt gedaan, helpen streaks gebruikers verbazingwekkende gewoonten op te bouwen die een doel bereiken. Het kan dagelijks lezen zijn of consequent naar de sportschool gaan. Deze herhaalde acties (soms kleine) worden in de loop van de tijd steeds groter en worden duidelijk in ons dagelijks leven. Maar elke medaille heeft twee kanten. De dunne lijn tussen gewoonte en dwang Als je het hebt gevolgd, kun je al zien dat er een donkere kant zit aan streak-systemen. Gewoontevorming gaat over consistentie met een herhaald doel. Dwang is echter de consistentie van het werken aan een doel dat niet langer nodig is, maar waaraan uit angst of druk wordt vastgehouden. Het is een flinterdun lijntje. Je poetst elke ochtend je tanden zonder na te denken; het is automatisch en instinctief, met een duidelijk doel: een goede adem. Dat is een streak die een goede gewoonte vormt. Een ethisch streak-systeem geeft gebruikers ruimte om te ademen. Als u om de een of andere reden 's ochtends niet poetst, kunt u 's middags poetsen. Imperfectie is toegestaan ​​zonder angst om een ​​lange inspanning te verliezen. Dwang volgt de tegenovergestelde route, waarbij een streak je angstig maakt, je je schuldig of zelfs uitgeput voelt, en soms voelt het alsof je niets hebt bereikt, ondanks al je inspanningen.werk. Je handelt niet omdat je dat wilt, maar omdat je onbewust bang bent dat je voortgang op nul wordt gezet. Iemand heeft dit zelfs perfect beschreven: "Ik voelde dat ik vals speelde, maar het kon me gewoon niet schelen. Ik ben niets zonder mijn streak". Dit toont de extreme greep die strepen op een individu kunnen hebben. In de mate dat gebruikers hun eigenwaarde beginnen te koppelen aan een willekeurige maatstaf in plaats van aan het oorspronkelijke doel of de reden waarom ze überhaupt aan de streak zijn begonnen. De streak wordt wie ze zijn, niet alleen wat ze doen. Een goed ontworpen ethisch streak-systeem moet voor de gebruiker een aanmoediging zijn, en geen druk of verplichting. Dit heeft betrekking op de balans tussen intrinsieke en extrinsieke motivatie. Extrinsieke motivatie (externe beloningen, het vermijden van straf) kan gebruikers op weg helpen, maar intrinsieke motivatie (de taak uitvoeren voor een persoonlijk doel, zoals Spaans leren omdat je oprecht met een geliefde wilt communiceren) is sterker voor langdurige betrokkenheid. Een goed systeem moet zich richten op intrinsieke motivatie met zorgvuldig gebruik van extrinsieke elementen, dat wil zeggen: gebruikers eraan herinneren hoe ver ze zijn gekomen, en hen niet bedreigen met wat ze zouden kunnen verliezen. Nogmaals, het is een dunne lijn. Een eenvoudige test bij het ontwerpen van een streak-systeem is om daadwerkelijk wat tijd te nemen en na te denken of uw producten geld verdienen door oplossingen te verkopen voor de angst die uw product heeft veroorzaakt. Zo ja, dan is de kans groot dat u gebruikers uitbuit. De volgende vraag wordt dus: als ik ervoor kies om streak te gebruiken, hoe ontwerp ik dit dan op een manier die gebruikers echt helpt hun doelen te bereiken? De gebruikerservaring van Good Streak-systeemontwerp Ik geloof dat dit is waar de meeste projecten ofwel een effectief streak-systeem tot stand brengen, ofwel het volledig verpesten. Laten we enkele UX-principes van een goed streak-ontwerp doornemen. Houd het moeiteloos Je hebt dit waarschijnlijk al eerder gehoord, misschien uit boeken als Atomic Habits, maar het is de moeite waard te vermelden dat een van de gemakkelijkste manieren waarop gewoonten kunnen worden gevormd, is door de actie klein en gemakkelijk te maken. Dit is vergelijkbaar met de vaardigheidsfactor die we hebben besproken vanuit het Fogg-gedragsmodel. De eerste regel van elk streak-ontwerp zou moeten zijn om de vereiste actie zo klein te maken als menselijkerwijs mogelijk is en toch vooruitgang te boeken. Als een dagelijkse actie wilskracht vereist om te voltooien, zal die actie de vijf dagen niet halen. Waarom? Je kunt niet vijf dagen achter elkaar gemotiveerd zijn. Voorbeeld: als je een meditatie-app gebruikt, hoef je gebruikers niet een sessie van 20 minuten te laten doorlopen alleen maar om de streak vast te houden. Probeer in plaats daarvan een enkele minuut, misschien zelfs iets kleins als dertig seconden. Zoals het gezegde luidt: kleine druppels water maken de machtige oceaan). Kleine inspanningen worden na verloop van tijd omgezet in grote prestaties. Dat zou het doel moeten zijn: wrijving wegnemen, vooral als het moment moeilijk kan zijn. Wanneer gebruikers gestrest of overweldigd zijn, laat hen dan weten dat alleen al het verschijnen, zelfs voor een paar seconden, als inspanning telt. Geef duidelijke visuele feedback Mensen zijn van nature visueel. Meestal moeten we iets zien om te geloven; er is een behoefte om dingen te visualiseren om ze beter te begrijpen en dingen in perspectief te plaatsen. Dit is de reden waarom streak-patronen vaak visuele elementen gebruiken, zoals grafieken, vinkjes, voortgangsringen en rasters, om de inspanning te visualiseren. Kijk naar de bijdragegrafiek van GitHub. Het is een eenvoudige visualisatie van consistentie. Toch ademen ontwikkelaars het in als zuurstof.

De sleutel is om een ​​streak-systeem niet abstract te laten aanvoelen. Het moet echt en verdiend aanvoelen. De fitness-activiteitenringen van Duolingo en Apple gebruiken bijvoorbeeld strakke animatieontwerpen bij het voltooien van een reeks, en GitHub toont historische gegevens over de consistentie van een gebruiker in de loop van de tijd.

Gebruik een goede timing Ik heb eerder gezegd dat mensen over het algemeen van nature vergeetachtig zijn, en dat aanwijzingen kunnen helpen de voorwaartse vaart in stand te houden. Zonder aanwijzingen vergeten de meeste nieuwe gebruikers door te gaan. Het leven kan druk worden, de motivatie verdwijnt en er gebeuren dingen. Zelfs ervaren gebruikers hebben baat bij prompts, hoewel ze meestal al vastzitten in de gewoontelus. Toch kan zelfs de meest toegewijde persoon per ongeluk een dag missen. Je streak-systeem heeft zeker herinneringen nodig. De meest gebruikte promptherinneringen zijn pushmeldingen. Timing is echt van belang bij het werken met pushmeldingen. Het type app is ook van belang. Om 09.00 uur een melding sturen met de tekst 'Je hebt vandaag niet geoefend' is gewoon raar voor een leerapp, omdat velen de dag nog dingen te doen hebben voordat ze er zelfs maar aan denken om een ​​les af te ronden. Als we het echter over een fitness-app hebben, dan welis redelijk en misschien wordt er zelfs eerder op de dag aan herinnerd. Pushmeldingen variëren aanzienlijk per app-categorie. Fitness-apps laten bijvoorbeeld een grotere betrokkenheid zien bij meldingen in de vroege ochtend (van 07.00 tot 08.00 uur), terwijl productiviteits-apps in de vroege middag mogelijk beter presteren. De sleutel is om de timing van uw app te A/B-testen op basis van het gedrag van uw gebruikers, in plaats van ervan uit te gaan dat alles one-size-fits-all is. Wat werkt voor een meditatie-app werkt mogelijk niet voor een codeertracker. Andere promptmethoden zijn rode stippen op het app-pictogram en zelfs app-widgets. Studies variëren, maar de gemiddelde persoon ontgrendelt zijn apparaat tussen de 50 en 150 keer per dag (pdf). Als een gebruiker elke keer dat hij zijn telefoon ontgrendelt een rode stip op een app of widget ziet die een huidige reeks aangeeft, vergroot dit de betrokkenheid. Overdrijf het gewoon niet; de prompt moet dienen als herinnering, niet als zeurderig. Vier mijlpalen Een streak-systeem moet proberen mijlpalen te vieren om emoties weer op te wekken, vooral voor gebruikers die diep in een streak zitten. Wanneer een gebruiker Dag 7, Dag 30, Dag 50, Dag 100, Dag 365 bereikt, moet u er een groot probleem van maken. Erken prestaties, vooral voor langdurige gebruikers.

Zoals we eerder zagen, heeft Duolingo dit bedacht en een geanimeerde afbeelding geïmplementeerd die mijlpalen viert met confetti. Sommige platforms geven zelfs aanzienlijke bonusbeloningen die de inspanningen van gebruikers valideren. En dit kan gunstig zijn voor apps, zodat gebruikers de neiging hebben hun mijlpalen openbaar te delen op sociale media. Een ander voordeel is de anticipatie die voorafgaat aan het bereiken van mijlpalen. Het houdt de streak niet alleen eindeloos levend; Gebruikers hebben iets om naar uit te kijken. Gebruik genademechanismen Het leven is onvoorspelbaar. Mensen raken afgeleid. Elk goed streak-systeem zou imperfectie moeten verwachten. Een van de grootste psychologische bedreigingen voor een streak-systeem is de harde reset naar nul na slechts één gemiste dag. Een “ethisch” streak-systeem zou de gebruiker wat speling moeten bieden. Laten we zeggen dat je een schaakleerreeks van 90 dagen hebt. Je bent drie goede maanden consistent geweest, en op een dag valt je telefoon uit tijdens het reizen, en zomaar wordt 90 0: alles, al die moeite, wordt gewist en de vooruitgang verdwijnt. De gebruiker kan volledig verwoest zijn. De gedachte om het helemaal opnieuw op te bouwen is zo demoraliserend dat de moeite het niet waard is. In het slechtste geval kan een gebruiker de app verlaten omdat hij zich een mislukkeling voelt. Overweeg een ‘grace’-mechanisme toe te voegen aan uw streak-systeem:

Streak FreezeLaat gebruikers opzettelijk een dag zonder boetes missen. Extra tijd Wacht een paar uur (2-3) na de gebruikelijke deadline voordat u een reset activeert. VervalmodellenIn plaats van een harde reset neemt de streak een klein beetje af, er worden bijvoorbeeld 10 dagen afgetrokken van de streak per gemiste dag.

Gebruik een bemoedigende toon Laten we twee berichten vergelijken die aan gebruikers worden getoond wanneer een streak wordt verbroken:

"Je bent je reeks van 42 dagen kwijtgeraakt. Begin opnieuw." "Je kwam 42 dagen achter elkaar opdagen. Dat is een ongelooflijke vooruitgang! Wil je het nog een keer proberen?"

Beide brengen dezelfde informatie over, maar de emotionele impact is anders. Het eerste bericht zou ervoor zorgen dat een gebruiker zich gedemoraliseerd voelt en ervoor zorgt dat hij stopt. Het tweede bericht viert wat al is bereikt en moedigt de gebruiker zachtjes aan om het opnieuw te proberen. Ontwerpuitdagingen voor Streak-systemen Voordat we ingaan op de technische details van het bouwen van een streak-systeem, moet u zich bewust zijn van de uitdagingen waarmee u te maken kunt krijgen. Dingen kunnen ingewikkeld worden, zoals je zou verwachten. Tijdzones verwerken Er is een reden waarom het omgaan met tijd en datum een van de moeilijkste concepten is waarmee ontwikkelaars te maken krijgen. Er is opmaak, internationalisering en nog veel meer waar u rekening mee moet houden. Laat me je dit vragen: Wat telt als een dag? We weten dat de wereld in verschillende tijdzones werkt, en alsof dat nog niet genoeg is, hebben sommige regio's zomertijd (DST) die twee keer per jaar plaatsvindt. Waar begin je überhaupt met het behandelen van deze randgevallen? Wat geldt als de ‘start’ van morgen? Sommige ontwikkelaars proberen dit te vermijden door één centrale tijdzone te gebruiken, zoals UTC. Voor sommige gebruikers zou dit correcte resultaten opleveren, maar voor sommigen kan het een uur, twee uur of langer afwijken. Deze inconsistentie verpest de gebruikerservaring. Het maakt gebruikers minder uit hoe je met de tijd achter de schermen omgaat; het enige wat ze verwachten is dat als ze om 23.40 uur een streak-actie uitvoeren, deze zich op dat exacte tijdstip in hun context zou moeten registreren. U moet “één dag” definiëren op basis van de lokale tijdzone van de gebruiker, niet op basis van de servertijd. Natuurlijk kun je het rustig aan doenroute en reset streaks wereldwijd voor alle gebruikers om middernacht UTC, maar je creëert in feite oneerlijkheid. Iemand in Californië heeft altijd acht extra uren om zijn taak te voltooien dan iemand die in Londen woont. Dat is een onrechtvaardige ontwerpfout die bepaalde gebruikers straft vanwege hun locatie. En wat als die persoon in Londen alleen maar op bezoek is, een taak voltooit en vervolgens terugkeert naar een andere tijdzone? Een effectieve oplossing voor dit alles is om gebruikers te vragen expliciet hun tijdzone in te stellen tijdens de onboarding (bij voorkeur na de eerste authenticatie). Het is een goed idee om een ​​subtiele opmerking toe te voegen dat het verstrekken van tijdzone-informatie alleen wordt gebruikt voor de app om de voortgang nauwkeurig bij te houden, en niet wordt gebruikt als persoonlijk identificeerbare gegevens. En het is ook een goed idee om daar een veranderlijke instelling van te maken. Ik raad iedereen aan om de tijdzonelogica in een app niet rechtstreeks te verwerken. Gebruik beproefde datumbibliotheken, zoals Moment.js of pytz (Python), enz. Het is niet nodig om het wiel opnieuw uit te vinden voor zoiets complex als dit. Gemiste dagen en randgevallen Een andere uitdaging waar u zich zorgen over moet maken zijn onbeheersbare randgevallen, zoals te veel slaap van gebruikers, downtime van de server, vertraging, netwerkstoringen, enzovoort. Het gebruik van het idee van genademechanismen, zoals degene die we eerder hebben besproken, kan helpen. Een respijtperiode van twee uur zou zowel de gebruiker als de ontwikkelaar kunnen helpen, in de zin dat gebruikers niet streng worden gestraft voor oncontroleerbare levensomstandigheden. Voor ontwikkelaars zijn genadevensters nuttig op die oncontroleerbare momenten waarop de server midden in de nacht uitvalt. Vertrouw vooral nooit de klant. Valideer altijd aan de serverzijde. De server moet de enige bron van waarheid zijn. Preventie van bedrog Nogmaals, ik kan dit niet genoeg benadrukken: zorg ervoor dat je alles op de server valideert. Gebruikers zijn mensen, en mensen kunnen vals spelen als ze de kans krijgen. Het is onvermijdelijk. Je zou het volgende kunnen proberen:

Alle acties worden opgeslagen met UTC-tijdstempels. De client kan de lokale tijd verzenden, maar de server kan deze onmiddellijk omzetten naar UTC en valideren tegen de servertijd. Op die manier kan het systeem, als de tijdstempel van de klant verdacht ver weg is, dit afwijzen als een fout, en kan de gebruikersinterface dienovereenkomstig reageren. Gebruik op gebeurtenissen gebaseerde tracking. Met andere woorden: bewaar een record van elke actie met metagegevens, waaronder informatie zoals de ID van de gebruiker, het type uitgevoerde actie en de tijdstempel en tijdzone. Dit helpt bij de validatie.

Een Streak-systeemengine bouwen Dit is geen code-tutorial, dus ik zal voorkomen dat ik een hoop code op je dump. Ik zal dit praktisch houden en beschrijven hoe dingen over het algemeen een streak-systeemmotor bedienen wat betreft architectuur, flow en betrouwbaarheid. Kernarchitectuur Zoals ik al meerdere keren heb gezegd: maak van de server de enige bron van waarheid voor streak-gegevens. De architectuur kan er ongeveer zo uitzien op de server:

Bewaar de gegevens van elke gebruiker in een database. Sla de huidige streak-opslag op (standaard als 0) als een geheel getal. Sla de tijdzonevoorkeur op, d.w.z. de IANA-tijdzonereeks (hetzij impliciet op basis van de lokale tijdstempel, hetzij expliciet door de gebruiker te vragen zijn of haar tijdzone te selecteren). Bijvoorbeeld 'Amerika/New_York'. Hanteer alle logica om te bepalen of de streak doorgaat of breekt, met een tijdzonecontrole die relatief is aan de lokale tijdzone van de gebruiker.

Ondertussen aan de klantzijde:

Geef de huidige streak weer, normaal gesproken opgehaald van de server. Stuur een actie in de vorm van metagegevens naar de server om te valideren of de gebruiker daadwerkelijk een kwalificerende streak-actie heeft voltooid. Geef visuele feedback op basis van de reacties van de server.

Kortom, het brein bevindt zich op de server en de client is bedoeld voor weergavedoeleinden en het indienen van evenementen. Dit bespaart u veel fouten en randgevallen, en maakt updates en reparaties eenvoudiger. De logische stroom Laten we een walkthrough simuleren van hoe een minimaal efficiënte streak-systeemengine zou werken wanneer een gebruiker een actie voltooit:

De gebruiker voltooit een kwalificatiereeksactie. De client stuurt een gebeurtenis als metagegevens naar de server. Dit kan zijn: 'Gebruiker X heeft actie Y voltooid op tijdstempel Z'. De server ontvangt deze gebeurtenis en voert een basisvalidatie uit. Is dit een echte gebruiker? Zijn ze geauthenticeerd? Is de actie geldig? Is de tijdzone consistent? Als dit lukt, haalt de server de streak-gegevens van de gebruiker op uit de database. Converteer vervolgens het ontvangen actietijdstempel naar de lokale tijdzone van de gebruiker. Laat de server de kalenderdatums (geen tijdstempels) in de lokale tijdzone van de gebruiker vergelijken: Als het dezelfde dag is, is de actie overbodig en is er geen verandering in de actiestreep. Als het de volgende dag is, wordt de streak verlengd en met 1 verhoogd. Als er een gat is van meer dan één dag, breekt de streak. Dit is echter waar u genademechanismen zou kunnen toepassen. Als het genademechanisme wordt gemist, reset dan de streak naar 1.

Als u ervoor kiest historische gegevens voor mijlpaalprestaties op te slaan, update dan variabelen zoals ‘langste streak’ of ‘totaal actieve dagen’. De server werkt vervolgens de database bij en reageert op de client. Iets als dit:

{ "huidige_streak": 48, "langste_streak": 50, "total_active_days": 120, "streak_extended": waar, }

Als verdere maatregel moet de server het opnieuw proberen of weigeren en de client op de hoogte stellen als er tijdens het proces iets mislukt. Bouwen aan veerkracht Zoals eerder vermeld, is het verliezen van een reeks gebruikers als gevolg van bugs of server-downtime een vreselijke UX, en gebruikers verwachten niet dat ze daarvoor zullen opdraaien. Uw streak-systeem moet dus beveiligingen hebben voor die scenario's. Als de server vanwege onderhoud (of om welke reden dan ook) niet beschikbaar is, kunt u overwegen een tijdelijke periode van extra uren toe te staan ​​om de server te repareren, zodat acties te laat kunnen worden ingediend en nog steeds meetellen. U kunt er ook voor kiezen om gebruikers op de hoogte te stellen, vooral als de situatie een aanhoudende streak kan beïnvloeden. Opmerking: Creëer een beheerdersachterdeur waar gegevens handmatig kunnen worden hersteld. Bugs zijn onvermijdelijk, en sommige gebruikers zouden uw app bellen of contact opnemen om te ondersteunen dat hun streak kapot ging om een ​​reden die ze niet onder controle hadden. Als de gebruiker na onderzoek gelijk heeft, zou je de strepen handmatig moeten kunnen herstellen. Conclusie Eén ding blijft duidelijk: Streaks zijn echt krachtig vanwege de manier waarop de menselijke psychologie op een fundamenteel niveau werkt. Het beste streak-systeem dat er is, is het systeem waar gebruikers niet bewust aan denken. Het is een routine geworden met onmiddellijke resultaten of zichtbare vooruitgang, zoals tandenpoetsen, wat een normale gewoonte wordt. En ik zeg het maar: niet alle producten hebben een streak-systeem nodig. Moet u echt consistentie afdwingen alleen maar omdat u dagelijks actieve gebruikers wilt? Het antwoord zou heel goed ‘nee’ kunnen zijn.

You May Also Like

Enjoyed This Article?

Get weekly tips on growing your audience and monetizing your content — straight to your inbox.

No spam. Join 138,000+ creators. Unsubscribe anytime.

Create Your Free Bio Page

Join 138,000+ creators on Seemless.

Get Started Free