Estoy seguro de que has oído hablar de las rachas o has usado una aplicación con una. Pero ¿alguna vez te has preguntado por qué las rachas son tan populares y poderosas? Bueno, está la cuestión obvia de que las aplicaciones quieren tanta atención como sea posible, pero aparte de eso, ¿sabías que cuando la popular aplicación de aprendizaje Duolingo introdujo widgets de iOS para mostrar las rachas, el compromiso del usuario aumentó en un 60 %? El sesenta por ciento es un cambio masivo en el comportamiento y demuestra cómo los patrones de "racha" se pueden utilizar para aumentar la participación e impulsar el uso. En su forma más básica, una racha es la cantidad de días consecutivos que un usuario completa una actividad específica. Algunas personas también lo definen como un hábito "gamificado" o una métrica diseñada para fomentar un uso constante. Pero las rachas trascienden más allá de ser una métrica o un registro en una aplicación; es más psicológico que eso. Los instintos humanos son fáciles de influir con los factores adecuados. Mire estos tres factores: progreso, orgullo y miedo a perderse algo (comúnmente llamado FOMO). ¿Qué tienen todos estos en común? Esfuerzo. Cuanto más esfuerzo pones en algo, más da forma a tu identidad, y así es como Streas llega al mundo de la psicología conductual. Ahora bien, un gran poder conlleva una gran responsabilidad y, por eso, las rachas tienen un lado oscuro. En este artículo, analizaremos la psicología, la UX y los principios de diseño detrás de la construcción de un sistema de rachas eficaz. Veremos (1) por qué nuestros cerebros responden casi instintivamente a la actividad de las rachas, (2) cómo diseñar rachas de manera que realmente ayuden a los usuarios y (3) el trabajo técnico involucrado en la construcción de un patrón de rachas. La psicología detrás de las rachas Para diseñar y construir un sistema de rachas eficaz, debemos comprender cómo se alinea con la forma en que están conectados nuestros cerebros. ¿Qué lo hace tan efectivo en la medida en que sentimos tanta dedicación intensa para proteger nuestras rachas? Hay tres principios psicológicos interesantes y bien documentados que respaldan lo que hace que las rachas sean tan poderosas y adictivas. Aversión a la pérdida Esta es probablemente la fuerza más poderosa detrás de las rachas. Digo esto porque la mayoría de las veces casi no se puede evitar esto en la vida. Piénsalo de esta manera: si un amigo te da $100, serías feliz. Pero si perdieras $100 de tu billetera, eso te dolería mucho más. El peso emocional de esas situaciones no es igual. La pérdida duele mucho más de lo que la ganancia hace sentir bien. Vayamos más allá y digamos que te doy $100 y te pido que apuestes. Hay un 50 % de posibilidades de que gane otros $100 y un 50 % de posibilidades de que pierda los $100 originales. ¿Lo tomarías? Yo no lo haría. La mayoría de la gente no lo haría. Eso es aversión a las pérdidas. Si lo piensas bien, es lógico, es comprensible, es humano. El concepto detrás de la aversión a las pérdidas es que sentimos el doble del dolor de perder algo que el placer de ganar algo de igual valor. En términos psicológicos, las pérdidas persisten más que las ganancias. Probablemente veas cómo esto se relaciona con las rachas. Para construir una racha notable, se requiere esfuerzo; a medida que una racha crece, la motivación detrás de ella comienza a desvanecerse; o más exactamente, empieza a volverse secundario. A continuación se muestra un ejemplo: digamos que su amigo tiene una racha de tres días cerrando sus "Move Rings" en su Apple Watch. No tienen casi nada que perder más allá de querer conseguir su objetivo y ser constantes. Al mismo tiempo, tienes una impresionante racha de 219 días. Lo más probable es que estés atrapado por el miedo a perderlo. Lo más probable es que no estés pensando en el logro en este momento; se trata más de proteger el esfuerzo invertido, y eso es aversión a las pérdidas. Duolingo explica cómo la aversión a las pérdidas contribuye a la renuencia de un usuario a romper una larga racha, incluso en sus días más perezosos. En cierto modo, una racha puede convertirse en un hábito cuando se instala la aversión a las pérdidas. El modelo de comportamiento de Fogg (B = MAP) Ahora que entendemos el miedo a perder el esfuerzo invertido en rachas más largas, otra pregunta es: ¿qué nos hace hacer algo en primer lugar, día tras día, incluso antes de que la racha se haga grande? De eso se trata el modelo de comportamiento de Fogg. Es relativamente sencillo. Un comportamiento (B) solo ocurre cuando tres factores: motivación (M), habilidad (A) y indicación (P), se alinean en el mismo momento. Por tanto, la ecuación B=MAP. Si alguno de estos factores, aunque sea uno, falta en ese momento, el comportamiento no se producirá. Entonces, para que un sistema de rachas sea eficiente y recurrente, deben estar presentes los tres factores: Motivación Esto es frágil y no es algo que esté constantemente presente. Hay días en los que estásentusiasmado por aprender español, y días en los que ni siquiera sientes un ápice de fuerza de voluntad para aprender el idioma. La motivación por sí sola para desarrollar un hábito no es confiable y es una batalla perdida desde el primer día. Capacidad Para compensar las limitaciones de la motivación, la capacidad es fundamental. En este contexto, habilidad significa la facilidad de acción, es decir, el esfuerzo es tan fácil que no es realista decir que no es posible. La mayoría de las aplicaciones usan esto intencionalmente. Apple Fitness solo necesita que estés de pie durante un minuto cada hora para ganar un tic hacia tu objetivo de Stand. Duolingo sólo necesita una lección completa. Estas tareas no requieren mucho esfuerzo. La barrera es tan baja que incluso en tus peores días podrás hacerlo. Pero el esfuerzo combinado de una racha continua es donde surge la idea de perder esa racha. AvisoEsto es lo que completa la ecuación. Los humanos somos olvidadizos por naturaleza, así que sí, la habilidad puede llevarnos al 90% de eso. Pero un mensaje nos recuerda que debemos actuar. Las rachas son persistentes por diseño, por lo que es necesario recordar constantemente a los usuarios que actúen. Para ver qué tan poderoso puede ser un mensaje, Duolingo realizó una prueba A/B para ver si una pequeña insignia roja en el ícono de la aplicación aumentaba el uso constante. Produjo un aumento del 6% en los usuarios activos diarios. Sólo una insignia roja. Limitaciones del modelo Dicho todo esto, existe una limitación en el modelo de Fogg según la cual los críticos y la investigación moderna han notado que un diseño que depende demasiado de indicaciones, como notificaciones agresivas, corre el riesgo de generar fatiga mental. Las notificaciones constantes y las horas extras podrían provocar la deserción de los usuarios. Entonces, cuidado con eso. El efecto Zeigarnik ¿Cómo te sientes cuando dejas una tarea de proyecto a medio hacer? Eso irrita a mucha gente porque las tareas inconclusas ocupan más espacio mental que las cosas que completamos. Cuando algo se hace y desaparece, tendemos a olvidarlo. Cuando algo queda sin hacer, tiende a pesar en nuestra mente. Esta es exactamente la razón por la que los productos digitales utilizan indicadores de progreso artificiales, como la barra de finalización de perfil de Upwork, para que el usuario sepa que su perfil está sólo "60% completo". Empuja al usuario a terminar lo que empezó.
Veamos otro ejemplo. Tienes cinco tareas en una aplicación de lista de tareas pendientes y, al final del día, solo marcas cuatro de ellas como completadas. Muchos de nosotros nos sentiremos insatisfechos debido a esa tarea inconclusa. Ese, ahí mismo, es el efecto Zeigarnik. El efecto Zeigarnik fue demostrado por la psicóloga Bluma Zeigarnik, quien describió que tendemos a mantener activas en nuestra memoria las tareas incompletas por más tiempo que las completadas. Un patrón de rayas naturalmente aprovecha esto en el diseño UX. Digamos que estás en el día 63 de una racha de aprendizaje. En ese punto, te encuentras en un patrón continuo de asuntos pendientes. Tu cerebro rara vez lo olvidará, ya que se encuentra en el fondo de tu mente. En este punto, tu cerebro se convierte en quien te envía notificaciones. Cuando juntas estas fuerzas psicológicas, comienzas a comprender realmente por qué las rachas no son solo una característica normal de una aplicación; son capaces de remodelar el comportamiento humano. Pero en algún momento (no puedo decir exactamente cuándo, ya que es diferente para todos) las cosas llegan a un punto en el que una racha pasa de ser "divertida" a algo que sientes que no puedes permitirte perder. No querrás que se desperdicien 58 días de esfuerzo, ¿verdad? Eso es lo que hace que un sistema de rachas sea eficaz. Si se hacen correctamente, las rachas ayudan a los usuarios a desarrollar hábitos asombrosos que logran un objetivo. Podría ser leer a diario o ir al gimnasio constantemente. Estas acciones repetidas (a veces pequeñas) se agravan con el tiempo y se vuelven evidentes en nuestra vida diaria. Pero cada moneda tiene dos caras. La delgada línea entre hábito y compulsión Si ha seguido la evolución, ya podrá darse cuenta de que los sistemas de rayas tienen un lado oscuro. La formación de hábitos se trata de coherencia con un objetivo repetido. La compulsión, sin embargo, es la constancia de trabajar por un objetivo que ya no es necesario pero que se mantiene por miedo o presión. Es una línea muy fina. Te cepillas los dientes todas las mañanas sin pensar; Es automático e instintivo, con el claro objetivo de tener un buen aliento. Esa es una racha que forma un buen hábito. Un sistema de racha ética brinda a los usuarios espacio para respirar. Si por alguna razón no te cepillas por la mañana, podrás cepillarte al mediodía. Se permite la imperfección sin miedo a perder un largo esfuerzo. La compulsión toma el camino opuesto: una racha te pone ansioso, te sientes culpable o incluso agotado y, a veces, sientes que no has logrado nada, a pesar de todos tus esfuerzos.trabajar. No actúas porque quieras, sino porque inconscientemente estás aterrorizado de ver tu progreso restablecerse a cero. Alguien incluso lo describió perfectamente: "Sentí que estaba haciendo trampa, pero simplemente no me importaba. No soy nada sin mi racha". Esto muestra el control extremo que las rachas pueden tener en un individuo. Hasta el punto de que los usuarios comienzan a vincular su autoestima a una métrica arbitraria en lugar del objetivo original o la razón por la que comenzaron la racha en primer lugar. La racha se convierte en quiénes son, no sólo en lo que hacen. Un sistema de rachas éticas bien diseñado debería ser un estímulo para el usuario, no una presión ni una obligación. Esto se relaciona con el equilibrio entre la motivación intrínseca y extrínseca. La motivación extrínseca (recompensas externas, evitar castigos) puede hacer que los usuarios comiencen, pero la motivación intrínseca (realizar la tarea por un objetivo personal como aprender español porque realmente quieres comunicarte con un ser querido) es más fuerte para el compromiso a largo plazo. Un buen sistema debería gravitar hacia la motivación intrínseca con un uso cuidadoso de los elementos extrínsecos, es decir, recordar a los usuarios lo lejos que han llegado, no amenazarlos con lo que podrían perder. Una vez más, la línea es muy fina. Una prueba sencilla al diseñar un sistema de rachas es tomarse un tiempo y pensar si sus productos generan dinero vendiendo soluciones a la ansiedad que creó su producto. En caso afirmativo, existe una alta probabilidad de que esté explotando a los usuarios. Entonces, la siguiente pregunta es: Si elijo utilizar Streak, ¿cómo lo diseño de manera que realmente ayude a los usuarios a alcanzar sus objetivos? La UX del buen diseño del sistema Streak Creo que aquí es donde la mayoría de los proyectos logran un sistema de rachas efectivo o lo estropean por completo. Repasemos algunos principios de UX de un buen diseño de rachas. Mantenlo sin esfuerzo Probablemente hayas escuchado esto antes, tal vez en libros como Atomic Habits, pero vale la pena mencionar que una de las formas más fáciles de formar hábitos es haciendo que la acción sea pequeña y fácil. Esto es similar al factor de capacidad que analizamos en el modelo de comportamiento de Fogg. La primera regla de cualquier diseño de racha debe ser hacer que la acción requerida sea lo más pequeña posible y al mismo tiempo lograr avances. Si una acción diaria requiere fuerza de voluntad para completarse, esa acción no pasará de los cinco días. ¿Por qué? No puedes estar motivado cinco días seguidos. Caso en cuestión: si ejecuta una aplicación de meditación, no necesita hacer que los usuarios realicen una sesión de 20 minutos solo para mantener la racha. En su lugar, pruebe con un solo minuto, tal vez incluso algo tan pequeño como treinta segundos. Como dice el refrán, de pequeñas gotas de agua se forma el poderoso océano). Los pequeños esfuerzos se convierten en grandes logros con el tiempo. Ese debería ser el objetivo: eliminar la fricción, especialmente cuando el momento puede ser difícil. Cuando los usuarios estén estresados o abrumados, hágales saber que simplemente presentarse, aunque sea por unos segundos, cuenta como esfuerzo. Proporcione comentarios visuales claros Los humanos somos visuales por naturaleza. La mayoría de las veces necesitamos ver algo para creer; Existe la necesidad de visualizar las cosas para comprenderlas mejor y ponerlas en perspectiva. Es por eso que los patrones de racha suelen utilizar elementos visuales, como gráficos, marcas de verificación, anillos de progreso y cuadrículas, para visualizar el esfuerzo. Mire el gráfico de contribución de GitHub. Es una simple visualización de coherencia. Sin embargo, los desarrolladores lo respiran como si fuera oxígeno.
La clave es no hacer que un sistema de rachas parezca abstracto. Debe sentirse real y ganado. Por ejemplo, los anillos de actividad Fitness de Duolingo y Apple utilizan diseños de animación limpios al completar una racha, y GitHub muestra datos históricos de la coherencia de un usuario a lo largo del tiempo.
Utilice el buen momento Mencioné antes que los humanos generalmente somos olvidadizos por naturaleza y que las indicaciones pueden ayudar a mantener el impulso. Sin indicaciones, la mayoría de los usuarios nuevos se olvidan de continuar. La vida puede volverse ajetreada, la motivación desaparece y suceden cosas. Incluso los usuarios veteranos se benefician de las indicaciones, aunque la mayoría de las veces ya están atrapados dentro del círculo del hábito. Sin embargo, incluso la persona más comprometida puede perder un día accidentalmente. Su sistema de rachas definitivamente necesita recordatorios. Los recordatorios rápidos más utilizados son las notificaciones automáticas. El tiempo realmente importa cuando se trabaja con notificaciones automáticas. El tipo de aplicación también importa. Enviar una notificación a las 9 a. m. que diga "No has practicado hoy" es simplemente extraño para una aplicación de aprendizaje porque muchas tienen cosas que hacer durante el día antes de siquiera pensar en completar una lección. Sin embargo, si hablamos de una aplicación de fitness,es razonable y tal vez incluso se espere que se lo recuerde más temprano ese mismo día. Las notificaciones automáticas varían significativamente según la categoría de la aplicación. Las aplicaciones de fitness, por ejemplo, obtienen una mayor participación con las notificaciones temprano en la mañana (de 7 a 8 a. m.), mientras que las aplicaciones de productividad pueden funcionar mejor a primera hora del mediodía. La clave es probar A/B el tiempo de su aplicación en función del comportamiento de sus usuarios en lugar de asumir que las cosas son iguales para todos. Lo que funciona para una aplicación de meditación puede no funcionar para un rastreador de codificación. Otros métodos rápidos son los puntos rojos en el ícono de la aplicación e incluso los widgets de la aplicación. Los estudios varían, pero la persona promedio desbloquea su dispositivo entre 50 y 150 veces al día (PDF). Si un usuario ve un punto rojo en una aplicación o widget que indica una racha actual cada vez que desbloquea su teléfono, aumenta el compromiso. Simplemente no te excedas; el mensaje debe servir como recordatorio, no como molestia. Celebre los hitos Un sistema de racha debería intentar celebrar los hitos para reavivar las emociones, especialmente para los usuarios que se encuentran en una racha profunda. Cuando un usuario llega al Día 7, Día 30, Día 50, Día 100, Día 365, debes darle mucha importancia. Reconozca los logros, especialmente para los usuarios veteranos.
Como vimos antes, Duolingo se dio cuenta de esto e implementó un gráfico animado que celebra los hitos con confeti. Algunas plataformas incluso ofrecen importantes bonificaciones que validan los esfuerzos de los usuarios. Y esto puede ser beneficioso para las aplicaciones, de modo que los usuarios tienden a compartir sus hitos públicamente en las redes sociales. Otro beneficio es la anticipación que surge antes de alcanzar los hitos. No se trata sólo de mantener viva la racha indefinidamente; los usuarios tienen algo que esperar. Utilice mecanismos de gracia La vida es impredecible. La gente se distrae. Cualquier buen sistema de rachas debería esperar imperfecciones. Una de las mayores amenazas psicológicas para un sistema de rachas es el reinicio completo a cero después de un solo día perdido. Un sistema de rachas “ético” debería dar cierta holgura al usuario. Digamos que tienes una racha de aprendizaje de ajedrez de 90 días. Has sido constante durante tres buenos meses y un día tu teléfono se apaga mientras viajas y así, 90 se convierte en 0: todo, todo ese esfuerzo, se borra y el progreso se desvanece. El usuario podría quedar completamente devastado. La idea de reconstruirlo desde cero es tan desmoralizadora que el esfuerzo no vale la pena. En el peor de los casos, un usuario podría abandonar la aplicación después de sentirse fracasado. Considere agregar un mecanismo de “gracia” a su sistema de rachas:
Streak FreezePermite que los usuarios se pierdan intencionalmente un día sin penalizaciones. Tiempo extra: espere unas horas (2 o 3) después de la fecha límite habitual antes de activar un reinicio. Modelos de decadencia En lugar de un reinicio completo, la racha disminuye en una pequeña cantidad, por ejemplo, se deducen 10 días de la racha por cada día perdido.
Utilice un tono alentador Comparemos dos mensajes que se muestran a los usuarios cuando se rompe una racha:
"Perdiste tu racha de 42 días. Empieza de nuevo". "Apareciste durante 42 días seguidos. ¡Es un progreso increíble! ¿Quieres intentarlo de nuevo?"
Ambos transmiten la misma información, pero el impacto emocional es diferente. Lo más probable es que el primer mensaje haga que el usuario se sienta desmoralizado y lo haga abandonar. El segundo mensaje celebra lo que ya se ha logrado y anima amablemente al usuario a intentarlo de nuevo. Desafíos del diseño de sistemas Streak Antes de entrar en los detalles técnicos de la creación de un sistema de rachas, debes ser consciente de los desafíos que podrías enfrentar. Las cosas pueden complicarse, como era de esperar. Manejo de zonas horarias Hay una razón por la que manejar la hora y la fecha es uno de los conceptos más difíciles con los que se enfrentan los desarrolladores. Hay que considerar el formato, la internacionalización y mucho más. Déjame preguntarte esto: ¿Qué cuenta como un día? Sabemos que el mundo se rige por diferentes zonas horarias y, como si eso no fuera suficiente, algunas regiones tienen un horario de verano (DST) que ocurre dos veces al año. ¿Por dónde empezar a manejar estos casos extremos? ¿Qué cuenta como el “comienzo” del mañana? Algunos desarrolladores intentan evitar esto utilizando una zona horaria central, como UTC. Para algunos usuarios, esto produciría resultados correctos, pero para otros, podría tener un error de una hora, dos horas o más. Esta inconsistencia arruina la experiencia del usuario. A los usuarios les importa menos cómo manejas el tiempo detrás de escena; lo único que esperan es que si realizan una acción de racha a las 11:40 p.m., entonces debería registrarse en ese momento exacto, en su contexto. Debe definir "un día" según la zona horaria local del usuario, no la hora del servidor. Claro, puedes tomar lo fácilenrutar y restablecer rachas globalmente para todos los usuarios a la medianoche UTC, pero está creando una gran injusticia. Alguien en California siempre tiene ocho horas más para completar su tarea que alguien que vive en Londres. Se trata de un error de diseño injusto que castiga a ciertos usuarios debido a su ubicación. ¿Y qué pasa si esa persona en Londres solo está de visita, completa una tarea y luego regresa a otra zona horaria? Una solución eficaz para todo esto es pedir a los usuarios que establezcan explícitamente su zona horaria durante la incorporación (preferiblemente después de la primera autenticación). Es una buena idea incluir una nota sutil de que proporcionar información de zona horaria solo se usa para que la aplicación rastree con precisión el progreso, en lugar de usarse como datos de identificación personal. Y otra buena idea es hacer que esa sea una configuración modificable. Sugiero que cualquiera evite manejar directamente la lógica de zona horaria en una aplicación. Utilice bibliotecas de fechas probadas y verdaderas, como Moment.js o pytz (Python), etc. No es necesario reinventar la rueda para algo tan complejo como esto. Días perdidos y casos extremos Otro desafío que debe preocuparle son los casos extremos incontrolables, como usuarios que se quedan dormidos, tiempo de inactividad del servidor, retrasos, fallas de red, etc. Puede resultar útil utilizar la idea de mecanismos de gracia, como los que analizamos anteriormente. Una ventana de gracia de dos horas podría ayudar tanto al usuario como al desarrollador, en el sentido de que los usuarios no sean castigados rígidamente por circunstancias de vida incontrolables. Para los desarrolladores, las ventanas de gracia son útiles en esos momentos incontrolables en los que el servidor se cae en medio de la noche. Sobre todo, nunca confíes en el cliente. Valide siempre en el lado del servidor. El servidor debe ser la única fuente de verdad. Prevención de trampas Nuevamente, no puedo enfatizar esto lo suficiente: asegúrese de validar todo en el lado del servidor. Los usuarios son humanos y los humanos podrían hacer trampa si se les diera la oportunidad. Es inevitable. Podrías intentar:
Almacenamiento de todas las acciones con marcas de tiempo UTC. El cliente puede enviar su hora local, pero el servidor puede convertirla inmediatamente a UTC y validarla con la hora del servidor. De esa manera, si la marca de tiempo del cliente está sospechosamente lejos, el sistema puede rechazarla como un error y la interfaz de usuario puede responder en consecuencia. Usar seguimiento basado en eventos. En otras palabras, almacenar un registro de cada acción con metadatos que incluyan información como la identificación del usuario, el tipo de acción realizada y la marca de tiempo y la zona horaria. Esto ayuda con la validación.
Construyendo un motor de sistema Streak Este no es un tutorial de código, por lo que evitaré descargarte un montón de código. Mantendré esto práctico y describiré cómo funcionan generalmente las cosas en un motor de sistema de racha en cuanto a arquitectura, flujo y confiabilidad. Arquitectura central Como he dicho varias veces, haga del servidor la única fuente de verdad para los datos de racha. La arquitectura puede ser algo como esto en el servidor:
Almacene los datos de cada usuario en una base de datos. Almacene la racha actual (el valor predeterminado es 0) como un número entero. Almacene la preferencia de zona horaria, es decir, la cadena de zona horaria de IANA (ya sea implícitamente desde la marca de tiempo local o explícitamente pidiendo al usuario que seleccione su zona horaria). Por ejemplo, "América/Nueva_York". Maneje toda la lógica para determinar si la racha continúa o se interrumpe, con una verificación de zona horaria relativa a la zona horaria local del usuario.
Mientras tanto, del lado del cliente:
Muestra la racha actual, normalmente obtenida del servidor. Envíe la acción realizada en forma de metadatos al servidor para validar si el usuario realmente completó una acción de racha de calificación. Proporcione comentarios visuales basados en las respuestas del servidor.
En resumen, el cerebro está en el servidor y el cliente tiene fines de visualización y envío de eventos. Esto le ahorra muchos fallos y casos extremos, además facilita las actualizaciones y correcciones. El flujo lógico Simulemos un recorrido de cómo funcionaría un motor de sistema de racha mínimamente eficiente cuando un usuario completa una acción:
El usuario completa una acción de racha de clasificación. El cliente envía un evento al servidor como metadatos. Esto podría ser "El usuario X completó la acción Y en la marca de tiempo Z". El servidor recibe este evento y realiza una validación básica. ¿Es este un usuario real? ¿Están autenticados? ¿Es válida la acción? ¿La zona horaria es consistente? Si esto pasa, el servidor recupera los datos de la racha del usuario de la base de datos. Luego, convierta la marca de tiempo de la acción recibida a la zona horaria local del usuario. Deje que el servidor compare las fechas del calendario (no las marcas de tiempo) en la zona horaria local del usuario: Si es el mismo día, entonces la acción es redundante y no hay ningún cambio en elracha. Si es el día siguiente, la racha se prolonga y aumenta en 1. Si hay un intervalo de más de un día, la racha se rompe. Sin embargo, aquí es donde puedes aplicar la mecánica de gracia. Si se omite el mecanismo de gracia, restablezca la racha a 1.
Si elige guardar datos históricos de logros importantes, actualice variables como "racha más larga" o "días activos totales". Luego, el servidor actualiza la base de datos y responde al cliente. Algo como esto:
{ "racha_actual": 48, "racha_más larga": 50, "total_días_activos": 120, "streak_extended": verdadero, }
Como medida adicional, el servidor debería volver a intentarlo o rechazarlo y notificar al cliente cuando algo falle durante el proceso. Construyendo para la resiliencia Como se mencionó anteriormente, los usuarios que pierden una racha debido a errores o tiempo de inactividad del servidor es una experiencia de usuario terrible, y los usuarios no esperan cargar con la culpa. Por lo tanto, su sistema de rachas debería tener salvaguardias para esos escenarios. Si el servidor está inactivo por mantenimiento (o por cualquier motivo), considere permitir una ventana temporal de horas adicionales para solucionarlo, de modo que las acciones se puedan enviar tarde y aún así cuenten. También puedes optar por notificar a los usuarios, especialmente si la situación puede afectar una racha en curso. Nota: Establezca una puerta trasera de administración donde los datos se puedan restaurar manualmente. Los errores son inevitables y algunos usuarios denunciarían su aplicación o se comunicarían con ellos para informar que su racha se rompió por una razón que no podían controlar. Debería poder restaurar manualmente las rachas si, después de la investigación, el usuario tiene razón. Conclusión Una cosa queda clara: las rachas son realmente poderosas debido a cómo funciona la psicología humana en un nivel fundamental. El mejor sistema de rachas que existe es aquel en el que los usuarios no piensan conscientemente. Se ha convertido en una rutina de resultados inmediatos o avances visibles, como cepillarse los dientes, que se convierte en un hábito habitual. Y solo voy a decirlo: no todos los productos necesitan un sistema de rayas. ¿Realmente deberías forzar la coherencia sólo porque quieres usuarios activos diarios? Es muy posible que la respuesta sea “no”.