Sono sicuro che hai sentito parlare di strisce o hai utilizzato un'app con uno. Ma ti sei mai chiesto perché le meches sono così popolari e potenti? Bene, c'è un aspetto ovvio che le app richiedono quanta più attenzione possibile, ma a parte questo, sapevi che quando la popolare app di apprendimento Duolingo ha introdotto i widget iOS per visualizzare le strisce, l'impegno degli utenti è aumentato del 60%. Il 60% rappresenta un enorme cambiamento nel comportamento e dimostra come i modelli di “serie” possano essere utilizzati per aumentare il coinvolgimento e incentivare l’utilizzo. Nella sua forma più elementare, una serie è il numero di giorni consecutivi in cui un utente completa un'attività specifica. Alcune persone la definiscono anche come un’abitudine “gamificata” o una metrica progettata per incoraggiare un utilizzo coerente. Ma le serie trascendono l’essere una metrica o un record in un’app; è più psicologico di così. Gli istinti umani sono facili da influenzare con i giusti fattori. Considera questi tre fattori: progresso, orgoglio e paura di perdere qualcosa (comunemente chiamata FOMO). Cosa hanno in comune tutti questi? Sforzo. Più impegno dedichi a qualcosa, più modella la tua identità, ed è così che le strisce attraversano il mondo della psicologia comportamentale. Ora, da un grande potere derivano grandi responsabilità e, per questo motivo, c'è un lato oscuro nelle serie di vittorie. In questo articolo, approfondiremo la psicologia, l'UX e i principi di progettazione alla base della creazione di un sistema di serie efficace. Vedremo (1) perché il nostro cervello risponde quasi istintivamente all'attività delle strisce, (2) come progettare le strisce in modo da aiutare davvero gli utenti e (3) il lavoro tecnico coinvolto nella creazione di uno schema di strisce. La psicologia dietro le strisce Per progettare e costruire un sistema di serie efficace, dobbiamo capire come si allinea con il modo in cui è cablato il nostro cervello. Ad esempio, cosa lo rende così efficace al punto da sentire una dedizione così intensa nel proteggere i nostri successi? Esistono tre principi psicologici interessanti e ben documentati che supportano ciò che rende le meches così potenti e avvincenti. Avversione alla perdita Questa è probabilmente la forza più potente dietro le strisce. Dico questo perché la maggior parte delle volte quasi non puoi evitarlo nella vita. Pensala in questo modo: se un amico ti regalasse 100$, saresti felice. Ma se perdessi $ 100 dal tuo portafoglio, farebbe molto più male. Il peso emotivo di quelle situazioni non è uguale. La perdita fa molto più male di quanto il guadagno sia piacevole. Andiamo oltre e diciamo che ti do $ 100 e ti chiedo di fare una scommessa. C'è una probabilità del 50% di vincere altri $ 100 e una probabilità del 50% di perdere i $ 100 originali. Lo prenderesti? Non lo farei. La maggior parte delle persone non lo farebbe. Questa è l’avversione alla perdita. Se ci pensi, è logico, è comprensibile, è umano. Il concetto alla base dell’avversione alla perdita è che proviamo il dolore di perdere qualcosa il doppio del piacere di ottenere qualcosa di uguale valore. In termini psicologici, la perdita persiste più dei guadagni. Probabilmente vedi come questo si collega alle strisce. Per costruire una serie notevole, è necessario uno sforzo; man mano che una serie di successi cresce, la motivazione dietro di essa inizia a svanire; o più precisamente, inizia a diventare secondario. Ecco un esempio: supponiamo che il tuo amico abbia una serie di tre giorni consecutivi chiudendo i suoi "Move Rings" sul suo Apple Watch. Non hanno quasi nulla da perdere oltre al desiderio di raggiungere il loro obiettivo ed essere coerenti. Allo stesso tempo, hai un’impressionante serie di 219 giorni in corso. È probabile che tu sia intrappolato dalla paura di perderlo. Molto probabilmente non stai pensando al risultato a questo punto; si tratta più di proteggere gli sforzi investiti, e questa è avversione alla perdita. Duolingo spiega come l'avversione alla perdita contribuisce alla riluttanza di un utente a interrompere una lunga serie di vittorie consecutive, anche nei giorni più pigri. In un certo senso, una serie di vittorie può trasformarsi in un’abitudine quando si instaura l’avversione alla perdita. Il modello comportamentale di Fogg (B = MAP) Ora che comprendiamo la paura di perdere lo sforzo investito in serie più lunghe, un'altra domanda è: cosa ci spinge a fare la cosa in primo luogo, giorno dopo giorno, anche prima che la serie di vittorie diventi grande? Questo è ciò di cui tratta il modello comportamentale Fogg. È relativamente semplice. Un comportamento (B) si verifica solo quando tre fattori – Motivazione (M), Abilità (A) e Prompt (P) – si allineano nello stesso momento. Pertanto, l'equazione B=MAP. Se in quel momento manca uno qualsiasi di questi fattori, anche uno solo, il comportamento non si verificherà. Quindi, affinché un sistema di serie sia efficiente e ricorrente, devono essere presenti tutti e tre i fattori: Motivazione È fragile e non è qualcosa che sia costantemente presente. Ci sono giorni in cui lo seientusiasta di imparare lo spagnolo e giorni in cui non senti nemmeno un briciolo di forza di volontà per imparare la lingua. La motivazione di per sé a costruire un'abitudine è inaffidabile e una battaglia persa fin dal primo giorno. Abilità Per compensare i limiti della motivazione, l'abilità è fondamentale. In questo contesto, abilità significa facilità di azione, cioè lo sforzo è così facile che non è realistico dire che non sia possibile. La maggior parte delle app lo utilizza intenzionalmente. Apple Fitness ha solo bisogno che tu stia in piedi per un minuto ogni ora per guadagnare un segno di spunta verso il tuo obiettivo Stand. Duolingo necessita solo di una lezione completata. Questi compiti non richiedono molto sforzo. La barriera è così bassa che anche nei giorni peggiori puoi farcela. Ma lo sforzo combinato di una serie di vittorie in corso è il punto in cui entra in gioco l’idea di perdere quella serie di vittorie. PromptQuesto è ciò che completa l'equazione. Gli esseri umani sono naturalmente smemorati, quindi sì, l’abilità può portarci lì al 90%. Ma un suggerimento ci ricorda di agire. Le strisce sono persistenti per natura, quindi è necessario ricordare costantemente agli utenti di agire. Per vedere quanto potente possa essere un messaggio, Duolingo ha eseguito un test A/B per vedere se un piccolo badge rosso sull'icona dell'app aumentava l'utilizzo coerente. Ha prodotto un aumento del 6% degli utenti attivi giornalieri. Solo un distintivo rosso. Limitazioni del modello Detto questo, esiste una limitazione al modello Fogg in base al quale i critici e la ricerca moderna hanno notato che un design che si basa troppo su suggerimenti, come le notifiche aggressive, rischia di creare affaticamento mentale. Le notifiche costanti e gli straordinari potrebbero causare l'abbandono degli utenti. Quindi, fai attenzione. L'effetto Zeigarnik Come ti senti quando lasci un compito di progetto a metà? Ciò irrita molte persone perché i compiti non finiti occupano più spazio mentale delle cose che completiamo. Quando qualcosa viene fatto e finito, tendiamo a dimenticarlo. Quando qualcosa viene lasciato incompiuto, tende a pesare sulla nostra mente. Questo è esattamente il motivo per cui i prodotti digitali utilizzano indicatori di progresso artificiali, come la barra di completamento del profilo di Upwork, per far sapere all'utente che il suo profilo è completo solo al "60%". Spinge l'utente a finire ciò che ha iniziato.
Diamo un’occhiata a un altro esempio. Hai cinque attività in un'app per l'elenco delle cose da fare e alla fine della giornata ne controlli solo quattro come completate. Molti di noi si sentiranno incompiuti a causa di quell’unico compito incompiuto. Proprio questo è l’effetto Zeigarnik. L'effetto Zeigarnikè stato dimostrato dalla psicologa Bluma Zeigarnik, la quale ha descritto che tendiamo a mantenere attivi nella nostra memoria i compiti incompleti più a lungo di quelli completati. Un motivo a strisce si inserisce naturalmente in questo nel design UX. Diciamo che sei al giorno 63 di una serie di apprendimenti. A quel punto, sei in un modello continuo di affari incompiuti. Il tuo cervello raramente se ne dimenticherà poiché si trova nella parte posteriore della tua mente. A questo punto, sarà il tuo cervello a inviarti le notifiche. Quando metti insieme queste forze psicologiche, inizi a capire veramente perché le strisce non sono solo una normale funzionalità dell'app; sono in grado di rimodellare il comportamento umano. Ma da qualche parte lungo il percorso – non posso dire esattamente quando, poiché è diverso per tutti – le cose raggiungono un punto in cui una serie si sposta da “divertimento” a qualcosa che ritieni di non poterti permettere di perdere. Non vorrai che 58 giorni di sforzi vadano sprecati, vero? Questo è ciò che rende efficace un sistema di serie. Se eseguite correttamente, le strisce aiutano gli utenti a creare abitudini sorprendenti che raggiungono un obiettivo. Potrebbe essere leggere ogni giorno o andare in palestra con costanza. Queste azioni ripetute (a volte piccole) si accumulano nel tempo e diventano evidenti nella nostra vita quotidiana. Ma ci sono due facce di ogni medaglia. La linea sottile tra abitudine e costrizione Se hai seguito, puoi già dire che c'è un lato oscuro nei sistemi di serie. La formazione dell’abitudine riguarda la coerenza con un obiettivo ripetuto. La compulsione, tuttavia, è la coerenza di lavorare su un obiettivo che non è più necessario ma che si mantiene per paura o pressione. È una linea sottilissima. Ti lavi i denti ogni mattina senza pensare; è automatico e istintivo, con il chiaro obiettivo di avere un buon alito. Questa è una serie che costituisce una buona abitudine. Un sistema di serie etica offre agli utenti lo spazio per respirare. Se, per qualche motivo, non ti lavi i denti al mattino, puoi farlo a mezzogiorno. L'imperfezione è consentita senza timore di perdere una lunga fatica. La compulsione prende la strada opposta, per cui una serie di episodi ti rende ansioso, ti fa sentire in colpa o addirittura esausto e, a volte, ti sembra di non aver realizzato nulla, nonostante tutti i tuoi sforzi.lavoro. Non agisci perché lo desideri, ma perché inconsciamente sei terrorizzato all'idea di vedere i tuoi progressi azzerati. Qualcuno lo ha addirittura descritto perfettamente: "Sentivo che stavo tradendo, ma semplicemente non mi importava. Non sono niente senza la mia vena". Ciò dimostra la presa estrema che le serie di colpi possono avere su un individuo. Nella misura in cui gli utenti iniziano a legare la propria autostima a un parametro arbitrario piuttosto che all'obiettivo originale o al motivo per cui hanno iniziato la serie di vittorie consecutive. La serie diventa quello che sono, non solo quello che fanno. Un sistema etico ben progettato dovrebbe sembrare un incoraggiamento per l’utente, non una pressione o un obbligo. Ciò si riferisce all’equilibrio tra motivazione intrinseca ed estrinseca. La motivazione estrinseca (ricompense esterne, evitare punizioni) potrebbe far iniziare gli utenti, ma la motivazione intrinseca (svolgere il compito per un obiettivo personale come imparare lo spagnolo perché si desidera sinceramente comunicare con una persona cara) è più forte per un impegno a lungo termine. Un buon sistema dovrebbe gravitare verso la motivazione intrinseca con un uso attento degli elementi estrinseci, vale a dire ricordare agli utenti quanta strada hanno fatto, non minacciarli con ciò che potrebbero perdere. Ancora una volta, la linea è sottile. Un semplice test quando si progetta un sistema di serie è quello di prendersi un po' di tempo e pensare se i propri prodotti guadagnano vendendo soluzioni all'ansia creata dal prodotto. Se sì, c’è un’alta probabilità che tu stia sfruttando gli utenti. Quindi la domanda successiva diventa: se scelgo di utilizzare la serie, come posso progettarla in modo che aiuti davvero gli utenti a raggiungere i loro obiettivi? La UX di Good Streak System Design Credo che questo sia il punto in cui la maggior parte dei progetti o inchioda un sistema di serie efficace o lo rovina completamente. Esaminiamo alcuni principi UX di un buon design delle strisce. Mantienilo senza sforzo Probabilmente ne hai già sentito parlare, magari da libri come Atomic Habits, ma vale la pena ricordare che uno dei modi più semplici per creare abitudini è rendere l'azione piccola e facile. Questo è simile al fattore abilità di cui abbiamo discusso nel modello comportamentale di Fogg. La prima regola di qualsiasi progettazione di una serie di vittorie dovrebbe essere quella di rendere l'azione richiesta quanto più piccola umanamente possibile pur ottenendo progressi. Se un'azione quotidiana richiede forza di volontà per essere completata, quell'azione non supererà i cinque giorni. Perché? Non puoi essere motivato per cinque giorni di seguito. Caso in questione: se esegui un'app di meditazione, non è necessario che gli utenti effettuino una sessione di 20 minuti solo per mantenere la serie di risultati. Prova invece un solo minuto, magari anche qualcosa di piccolo come trenta secondi. Come dice il proverbio, piccole gocce d'acqua formano il possente oceano). Piccoli sforzi si trasformano in grandi risultati con il tempo. Questo dovrebbe essere l’obiettivo: rimuovere gli attriti, soprattutto quando il momento potrebbe essere difficile. Quando gli utenti sono stressati o sopraffatti, fai loro sapere che il semplice fatto di presentarsi, anche solo per pochi secondi, conta come sforzo. Fornire un feedback visivo chiaro Gli esseri umani sono visivi per natura. La maggior parte delle volte abbiamo bisogno di vedere qualcosa in cui credere; c’è questa necessità di visualizzare le cose per capirle meglio e metterle in prospettiva. Questo è il motivo per cui i modelli di serie utilizzano spesso elementi visivi, come grafici, segni di spunta, anelli di avanzamento e griglie, per visualizzare lo sforzo. Guarda il grafico dei contributi di GitHub. È una semplice visualizzazione della coerenza. Eppure gli sviluppatori lo respirano come ossigeno.
La chiave è non rendere astratto un sistema di serie. Dovrebbe sembrare reale e guadagnato. Ad esempio, gli anelli di attività Fitness di Duolingo e Apple utilizzano disegni di animazione puliti al completamento di una serie e GitHub mostra i dati storici sulla coerenza di un utente nel tempo.
Usa il buon tempismo Ho accennato in precedenza al fatto che gli esseri umani sono generalmente smemorati per natura e che i suggerimenti possono aiutare a mantenere lo slancio in avanti. Senza istruzioni, la maggior parte dei nuovi utenti dimentica di andare avanti. La vita può essere impegnativa, la motivazione scompare e le cose accadono. Anche gli utenti di lunga data traggono vantaggio dai suggerimenti, sebbene la maggior parte delle volte siano già bloccati nel ciclo delle abitudini. Tuttavia, anche la persona più impegnata può perdere accidentalmente un giorno. Il tuo sistema di serie ha sicuramente bisogno di promemoria. I promemoria più utilizzati sono le notifiche push. Il tempismo è davvero importante quando si lavora con le notifiche push. Anche il tipo di app è importante. Inviare una notifica alle 9 del mattino dicendo "Non ti sei esercitato oggi" è semplicemente strano per un'app di apprendimento perché molti hanno cose da fare durante la giornata prima ancora di pensare di completare una lezione. Se parliamo di un'app per il fitness, però, è cosìè ragionevole e forse ci si aspetta anche che venga ricordato all'inizio della giornata. Le notifiche push variano in modo significativo in base alla categoria dell'app. Le app per il fitness, ad esempio, registrano un maggiore coinvolgimento con le notifiche mattutine (7-8:00), mentre le app per la produttività potrebbero funzionare meglio nelle prime ore di mezzogiorno. La chiave è testare A/B i tempi della tua app in base ai comportamenti degli utenti anziché dare per scontato che le cose siano valide per tutti. Ciò che funziona per un'app di meditazione potrebbe non funzionare per un coding tracker. Altri metodi di richiesta sono i punti rossi sull'icona dell'app e persino i widget dell'app. Gli studi variano, ma la persona media sblocca il proprio dispositivo tra 50 e 150 volte al giorno (PDF). Se un utente vede un punto rosso su un'app o un widget che indica una sequenza corrente ogni volta che sblocca il telefono, aumenta l'impegno. Basta non esagerare; il suggerimento dovrebbe servire da promemoria, non da fastidio. Festeggia le pietre miliari Un sistema di serie dovrebbe cercare di celebrare i traguardi raggiunti per riaccendere le emozioni, soprattutto per gli utenti che hanno subito una serie di vittorie consecutive. Quando un utente raggiunge il giorno 7, giorno 30, giorno 50, giorno 100, giorno 365, dovresti trarne un grosso problema. Riconosci i risultati ottenuti, soprattutto per gli utenti di lunga data.
Come abbiamo visto in precedenza, Duolingo ha capito questo e ha implementato una grafica animata che celebra i traguardi con i coriandoli. Alcune piattaforme offrono anche sostanziali premi bonus che convalidano gli sforzi degli utenti. E questo può essere vantaggioso per le app, in quanto gli utenti tendono a condividere pubblicamente i loro traguardi sui social media. Un altro vantaggio è l’anticipazione che arriva prima di raggiungere i traguardi. Non si tratta solo di mantenere viva la serie di vittorie all’infinito; gli utenti hanno qualcosa da aspettarsi. Utilizzare meccanismi di grazia La vita è imprevedibile. Le persone si distraggono. Qualsiasi buon sistema di serie dovrebbe aspettarsi l’imperfezione. Una delle più grandi minacce psicologiche per un sistema di serie è l'hard reset a zero dopo un solo giorno mancato. Un sistema di serie “etico” dovrebbe fornire all’utente un certo margine di flessibilità. Diciamo che hai una serie di 90 giorni di apprendimento degli scacchi. Sei stato coerente per tre mesi buoni e un giorno il tuo telefono si spegne mentre sei in viaggio e, in un attimo, 90 diventa 0: tutto, tutto quello sforzo, viene cancellato e il progresso svanisce. L'utente potrebbe essere completamente devastato. Il pensiero di ricostruirlo da zero è così demoralizzante che lo sforzo non vale la pena. Nel peggiore dei casi, un utente potrebbe abbandonare l'app sentendosi un fallito. Prendi in considerazione l'aggiunta di un meccanismo di "grazia" al tuo sistema di serie:
Streak FreezeConsenti agli utenti di perdere intenzionalmente un giorno senza penalità. Tempo extra: attendere alcune ore (2–3) oltre la scadenza abituale prima di attivare un ripristino. Modelli di decadimento Invece di un hard reset, la serie di vittorie diminuisce di una piccola quantità, ad esempio, vengono detratti 10 giorni dalla serie di vittorie per ogni giorno mancato.
Usa un tono incoraggiante Confrontiamo due messaggi mostrati agli utenti quando una serie si interrompe:
"Hai perso i 42 giorni consecutivi. Ricomincia da capo." "Ti sei presentato per 42 giorni di fila. È un progresso incredibile! Vuoi fare un altro tentativo?"
Entrambi trasmettono le stesse informazioni, ma l’impatto emotivo è diverso. Molto probabilmente il primo messaggio farebbe demoralizzare l'utente e lo indurrebbe a smettere. Il secondo messaggio celebra ciò che è già stato raggiunto e incoraggia gentilmente l'utente a riprovare. Sfide di progettazione dei sistemi di streak Prima di entrare nei dettagli tecnici della creazione di un sistema di serie, dovresti essere consapevole delle sfide che potresti affrontare. Le cose possono complicarsi, come potresti aspettarti. Gestione dei fusi orari C'è una ragione per cui la gestione di data e ora è tra i concetti più difficili con cui devono confrontarsi gli sviluppatori. C’è formattazione, internazionalizzazione e molto altro da considerare. Lascia che ti chieda questo: cosa conta come un giorno? Sappiamo che il mondo funziona con fusi orari diversi e, come se ciò non bastasse, alcune regioni hanno l'ora legale (DST) che viene applicata due volte l'anno. Da dove inizi a gestire questi casi limite? Cosa conta come “inizio” di domani? Alcuni sviluppatori cercano di evitarlo utilizzando un fuso orario centrale, come UTC. Per alcuni utenti, ciò produrrebbe risultati corretti, ma per alcuni potrebbe essere disattivato di un'ora, due ore o più. Questa incoerenza rovina l'esperienza dell'utente. Agli utenti interessa meno il modo in cui gestisci il tempo dietro le quinte; tutto ciò che si aspettano è che se eseguono un'azione di serie alle 23:40, dovrebbero essere registrate in quell'ora esatta, nel loro contesto. Dovresti definire "un giorno" in base al fuso orario locale dell'utente, non all'ora del server. Certo, puoi prendertela comodainstrada e ripristina le serie di serie a livello globale per tutti gli utenti a mezzanotte UTC, ma stai creando molte ingiustizie. Qualcuno in California ha sempre otto ore in più per completare il proprio compito rispetto a qualcuno che vive a Londra. Si tratta di un difetto di progettazione ingiusto che punisce alcuni utenti a causa della loro posizione. E cosa succede se quella persona a Londra è solo in visita, completa un'attività e poi torna in un altro fuso orario? Una soluzione efficace a tutto ciò è chiedere agli utenti di impostare esplicitamente il proprio fuso orario durante l'onboarding (preferibilmente dopo la prima autenticazione). È una buona idea includere una nota sottile che le informazioni sul fuso orario fornite vengono utilizzate solo dall'app per monitorare accuratamente i progressi, anziché essere utilizzate come dati di identificazione personale. Ed è un’altra buona idea rendere questa impostazione modificabile. Suggerisco a chiunque di evitare di gestire direttamente la logica del fuso orario in un'app. Utilizza librerie di date collaudate, come Moment.js o pytz (Python), ecc. Non è necessario reinventare la ruota per qualcosa di così complesso come questo. Giorni persi e casi limite Un'altra sfida di cui dovresti preoccuparti sono i casi limite incontrollabili come gli utenti che dormono troppo, i tempi di inattività del server, i ritardi, gli errori di rete e così via. Usare l’idea dei meccanismi di grazia, come quelli di cui abbiamo discusso in precedenza, può aiutare. Una finestra di grazia di due ore potrebbe aiutare sia l'utente che lo sviluppatore, nel senso che gli utenti non vengono puniti rigidamente per circostanze di vita incontrollabili. Per gli sviluppatori, le finestre di grazia sono utili in quei momenti incontrollabili in cui il server non funziona nel cuore della notte. Soprattutto, non fidarsi mai del cliente. Convalidare sempre sul lato server. Il server dovrebbe essere l'unica fonte di verità. Prevenzione degli imbrogli Ancora una volta, non posso sottolinearlo abbastanza: assicurati di convalidare tutto sul lato server. Gli utenti sono esseri umani e gli esseri umani potrebbero imbrogliare se ne avessero l'opportunità. È inevitabile. Potresti provare:
Memorizzazione di tutte le azioni con timestamp UTC. Il client può inviare la propria ora locale, ma il server può convertirla immediatamente in UTC e convalidarla rispetto all'ora del server. In questo modo, se il timestamp del client è sospettosamente lontano, il sistema può rifiutarlo come errore e l'interfaccia utente può rispondere di conseguenza. Utilizzo del monitoraggio basato sugli eventi. In altre parole, archivia un record di ogni azione con metadati che includono informazioni come l'ID dell'utente, il tipo di azione eseguita, il timestamp e il fuso orario. Questo aiuta con la convalida.
Costruire un motore di sistema Streak Questo non è un tutorial sul codice, quindi eviterò di scaricarti addosso un sacco di codice. Manterrò questo aspetto pratico e descriverò come le cose generalmente fanno funzionare un motore di sistema di serie per quanto riguarda architettura, flusso e affidabilità. Architettura centrale Come ho detto più volte, rendi il server l'unica fonte di verità per i dati di serie. L'architettura può essere simile a questa sul server:
Memorizza i dati di ciascun utente in un database. Memorizza l'archivio serie corrente (predefinito come 0) come numero intero. Memorizza la preferenza del fuso orario, ovvero la stringa del fuso orario IANA (implicitamente dal timestamp locale o esplicitamente chiedendo all'utente di selezionare il proprio fuso orario). Ad esempio, "America/New_York". Gestisci tutta la logica per determinare se la serie continua o si interrompe, con un controllo del fuso orario relativo al fuso orario locale dell'utente.
Nel frattempo, lato client:
Visualizza la serie corrente, normalmente recuperata dal server. Invia l'azione eseguita sotto forma di metadati al server per verificare se l'utente ha effettivamente completato un'azione di serie qualificante. Fornire feedback visivo in base alle risposte del server.
Quindi, in breve, il cervello è sul server e il client serve per scopi di visualizzazione e invio di eventi. Ciò ti evita molti errori e casi limite, oltre a semplificare gli aggiornamenti e le correzioni. Il flusso logico Simuliamo una procedura dettagliata di come funzionerebbe un motore di sistema di serie minimamente efficiente quando un utente completa un'azione:
L'utente completa un'azione di serie qualificante. Il client invia un evento al server come metadati. Potrebbe essere "L'utente X ha completato l'azione Y al timestamp Z". Il server riceve questo evento ed esegue la convalida di base. Si tratta di un utente reale? Sono autenticati? L'azione è valida? Il fuso orario è coerente? Se questo supera, il server recupera i dati di serie dell'utente dal database. Quindi, converti il timestamp dell'azione ricevuta nel fuso orario locale dell'utente. Consenti al server di confrontare le date del calendario (non i timestamp) nel fuso orario locale dell'utente: Se è lo stesso giorno, l'azione è ridondante e non vi è alcuna modifica nel filestrisciante. Se è il giorno successivo, la serie si estende e aumenta di 1. Se c'è un intervallo di più di un giorno, la serie di vittorie si interrompe. Tuttavia, è qui che potresti applicare la meccanica della grazia. Se il meccanismo di grazia viene mancato, reimposta la serie di vittorie consecutive su 1.
Se scegli di salvare i dati storici per i traguardi raggiunti, aggiorna variabili come "serie più lunga" o "giorni attivi totali". Il server quindi aggiorna il database e risponde al client. Qualcosa del genere:
{ "current_streak": 48, "serie_più lunga": 50, "total_active_days": 120, "streak_extended": vero, }
Come ulteriore misura, il server dovrebbe riprovare o rifiutare e avvisare il client quando qualcosa fallisce durante il processo. Costruire per la resilienza Come accennato in precedenza, gli utenti che perdono una serie di vittorie consecutive a causa di bug o tempi di inattività del server sono una UX terribile e gli utenti non si aspettano di prendersi la colpa per questo. Pertanto, il tuo sistema di serie dovrebbe avere protezioni per tali scenari. Se il server è inattivo per manutenzione (o per qualsiasi altro motivo), valuta la possibilità di concedere una finestra temporanea di ore aggiuntive per ripararlo in modo che le azioni possano essere inviate in ritardo e contano comunque. Puoi anche scegliere di avvisare gli utenti, soprattutto se la situazione è in grado di influenzare una serie di vittorie in corso. Nota: stabilire una backdoor di amministrazione in cui i dati possono essere ripristinati manualmente. I bug sono inevitabili e alcuni utenti chiamerebbero la tua app o ti contatterebbero per sostenere che la loro serie di vittorie consecutive si è interrotta per un motivo che non potevano controllare. Dovresti essere in grado di ripristinare manualmente le strisce se, dopo un'indagine, l'utente ha ragione. Conclusione Una cosa rimane chiara: le striature sono davvero potenti a causa del modo in cui la psicologia umana funziona a livello fondamentale. Il miglior sistema di serie disponibile è quello a cui gli utenti non pensano consapevolmente. È diventata una routine dai risultati immediati o dai progressi visibili, come lavarsi i denti, che diventa un'abitudine regolare. E lo dirò semplicemente: non tutti i prodotti necessitano di un sistema di striature. Dovresti davvero forzare la coerenza solo perché vuoi utenti attivi ogni giorno? La risposta potrebbe benissimo essere “no”.