Tôi chắc rằng bạn đã nghe nói về các vệt hoặc đã sử dụng một ứng dụng có vệt. Nhưng có bao giờ bạn thắc mắc tại sao các vệt lại phổ biến và mạnh mẽ đến vậy không? Chà, có một điều hiển nhiên là các ứng dụng muốn bạn chú ý nhiều nhất có thể, nhưng ngoài điều đó ra, bạn có biết rằng khi ứng dụng học tập phổ biến Duolingo giới thiệu các tiện ích iOS để hiển thị các chuỗi, mức độ cam kết của người dùng đã tăng 60%. 60% là sự thay đổi lớn trong hành vi và chứng minh cách sử dụng các mô hình “dấu vết” để tăng mức độ tương tác và thúc đẩy mức sử dụng. Về cơ bản nhất, chuỗi là số ngày liên tiếp mà người dùng hoàn thành một hoạt động cụ thể. Một số người còn định nghĩa nó là một thói quen “được trò chơi hóa” hoặc một thước đo được thiết kế để khuyến khích việc sử dụng nhất quán. Nhưng các chuỗi không chỉ là một thước đo hoặc một bản ghi trong một ứng dụng; nó mang tính tâm lý nhiều hơn thế. Bản năng của con người rất dễ bị ảnh hưởng khi có những yếu tố phù hợp. Hãy xem xét ba yếu tố sau: sự tiến bộ, niềm tự hào và nỗi sợ bị bỏ lỡ (thường được gọi là FOMO). Tất cả những điều này có điểm gì chung? Cố gắng. Bạn càng nỗ lực nhiều vào một việc gì đó thì nó càng định hình nên danh tính của bạn và đó là cách các dấu vết đi vào thế giới tâm lý học hành vi. Giờ đây, quyền lực lớn đi kèm với trách nhiệm lớn, và do đó, các vệt có mặt tối. Trong bài viết này, chúng ta sẽ đi sâu vào các nguyên tắc tâm lý, UX và thiết kế đằng sau việc xây dựng một hệ thống chuỗi hiệu quả. Chúng ta sẽ xem xét (1) lý do tại sao bộ não của chúng ta gần như phản ứng theo bản năng với hoạt động của vệt, (2) cách thiết kế các vệt theo cách thực sự hữu ích cho người dùng và (3) công việc kỹ thuật liên quan đến việc xây dựng mô hình vệt. Tâm lý đằng sau vệt Để thiết kế và xây dựng một hệ thống chuỗi hiệu quả, chúng ta cần hiểu nó phù hợp như thế nào với cách bộ não của chúng ta hoạt động. Giống như, điều gì khiến nó hiệu quả đến mức chúng ta cảm thấy cống hiến hết mình để bảo vệ thành tích của mình? Có ba nguyên tắc tâm lý học thú vị và được ghi chép rõ ràng hỗ trợ cho điều khiến các vệt trở nên mạnh mẽ và gây nghiện. Ác cảm mất mát Đây có lẽ là lực mạnh nhất đằng sau các vệt. Tôi nói điều này bởi vì hầu hết mọi lúc, bạn gần như không thể tránh khỏi điều này trong cuộc sống. Hãy nghĩ thế này: Nếu một người bạn cho bạn 100 USD, bạn sẽ rất vui. Nhưng nếu bạn mất 100 USD trong ví, điều đó sẽ còn đau đớn hơn nhiều. Sức nặng cảm xúc của những tình huống đó không bằng nhau. Mất mát thì đau đớn hơn là đạt được cảm giác dễ chịu. Hãy đi xa hơn và nói rằng tôi đưa cho bạn 100 đô la và yêu cầu bạn chơi một canh bạc. Có 50% khả năng bạn giành được 100 đô la khác và 50% khả năng bạn mất 100 đô la ban đầu. Bạn có muốn lấy nó không? Tôi sẽ không. Hầu hết mọi người sẽ không. Đó là ác cảm mất mát. Nếu bạn nghĩ về nó, nó hợp lý, nó có thể hiểu được, nó là con người. Khái niệm đằng sau ác cảm mất mát là chúng ta cảm thấy nỗi đau khi mất đi thứ gì đó gấp đôi niềm vui khi đạt được thứ gì đó có giá trị tương đương. Về mặt tâm lý học, mất mát kéo dài nhiều hơn lợi ích. Bạn có thể thấy điều này liên quan đến các vệt như thế nào. Để xây dựng được một thành tích đáng chú ý, cần phải nỗ lực; khi một chuỗi ngày càng lớn, động lực đằng sau nó bắt đầu mờ nhạt; hay chính xác hơn là nó bắt đầu trở thành thứ yếu. Dưới đây là một ví dụ: Giả sử bạn của bạn có chuỗi ba ngày đóng "Nhẫn di chuyển" trên Apple Watch của họ. Họ hầu như không có gì để mất ngoài mong muốn đạt được mục tiêu và kiên định. Đồng thời, bạn đang có một chuỗi 219 ngày đầy ấn tượng. Rất có thể bạn đang bị mắc kẹt bởi nỗi sợ mất nó. Rất có thể bạn không nghĩ về thành tích vào thời điểm này; điều quan trọng hơn là bảo vệ nỗ lực đầu tư của bạn và đó là ác cảm với mất mát. Duolingo giải thích tại sao ác cảm mất mát góp phần khiến người dùng không muốn phá vỡ chuỗi ngày dài, ngay cả trong những ngày lười biếng nhất của họ. Theo một cách nào đó, một chuỗi thành tích có thể trở thành thói quen khi ác cảm mất mát hình thành. Mô hình hành vi Fogg (B = MAP) Bây giờ chúng ta đã hiểu nỗi sợ mất đi nỗ lực đầu tư vào chuỗi dài hơn, một câu hỏi khác là: Điều gì khiến chúng ta làm việc đó ngay từ đầu, ngày này qua ngày khác, ngay cả trước khi chuỗi đó trở nên lớn? Đó chính là nội dung của Mô hình Hành vi Fogg. Nó tương đối đơn giản. Hành vi (B) chỉ xảy ra khi ba yếu tố - Động lực (M), Khả năng (A) và Lời nhắc (P) - phù hợp với nhau tại cùng một thời điểm. Do đó, phương trình B=MAP. Nếu thiếu bất kỳ yếu tố nào trong số này, dù chỉ một yếu tố, vào thời điểm đó thì hành vi đó sẽ không xảy ra. Vì vậy, để hệ thống chuỗi hoạt động hiệu quả và định kỳ, phải có đủ ba yếu tố: Động lực Điều này rất mong manh và không phải là thứ luôn hiện diện. Có những ngày bạnbị dồn nén để học tiếng Tây Ban Nha và có những ngày bạn thậm chí không còn cảm thấy chút ý chí nào để học ngôn ngữ này. Bản thân động lực để xây dựng thói quen là không đáng tin cậy và là một trận thua ngay từ ngày đầu tiên. Khả năngĐể bù đắp cho những hạn chế về động lực, khả năng là rất quan trọng. Trong bối cảnh này, khả năng có nghĩa là sự dễ dàng trong hành động, tức là nỗ lực dễ dàng đến mức việc nói rằng điều đó là không thể là không thực tế. Hầu hết các ứng dụng đều cố tình sử dụng điều này. Apple Fitness chỉ cần bạn đứng một phút trong một giờ để kiếm được một tích tắc cho mục tiêu Đứng của bạn. Duolingo chỉ cần một bài học hoàn thành. Những nhiệm vụ này không đòi hỏi nhiều nỗ lực. Rào cản thấp đến mức ngay cả trong những ngày tồi tệ nhất, bạn vẫn có thể làm được. Nhưng nỗ lực tổng hợp của một chuỗi trận đang diễn ra chính là nơi nảy sinh ý tưởng về việc đánh mất chuỗi trận đó. NhắcĐây là những gì hoàn thành phương trình. Con người có bản chất hay quên, vì vậy, khả năng có thể giúp chúng ta đạt được 90%. Nhưng một lời nhắc nhắc nhở chúng ta hành động. Các đường sọc tồn tại dai dẳng theo thiết kế nên người dùng cần được nhắc nhở liên tục để hành động. Để xem lời nhắc có tác dụng mạnh mẽ như thế nào, Duolingo đã thực hiện thử nghiệm A/B để xem liệu huy hiệu nhỏ màu đỏ trên biểu tượng ứng dụng có làm tăng mức sử dụng nhất quán hay không. Nó tạo ra sự gia tăng 6% về số người dùng hoạt động hàng ngày. Chỉ là một huy hiệu màu đỏ. Hạn chế về mô hình Nói như vậy, có một hạn chế đối với mô hình Fogg, theo đó các nhà phê bình và nghiên cứu hiện đại nhận thấy rằng một thiết kế phụ thuộc quá nhiều vào các lời nhắc, chẳng hạn như thông báo gay gắt, có nguy cơ tạo ra sự mệt mỏi về tinh thần. Thông báo liên tục và làm thêm giờ có thể khiến người dùng rời bỏ. Vì vậy, hãy coi chừng điều đó. Hiệu ứng Zeigarnik Bạn cảm thấy thế nào khi bỏ dở một nhiệm vụ của dự án? Điều đó khiến nhiều người khó chịu vì những công việc còn dang dở chiếm nhiều không gian tinh thần hơn những việc chúng ta đã hoàn thành. Khi một việc gì đó đã xong và biến mất, chúng ta có xu hướng quên nó. Khi một điều gì đó chưa được thực hiện, nó có xu hướng đè nặng lên tâm trí chúng ta. Đây chính xác là lý do tại sao các sản phẩm kỹ thuật số sử dụng chỉ báo tiến trình nhân tạo, như thanh hoàn thành hồ sơ của Upwork, để cho người dùng biết rằng hồ sơ của họ chỉ “hoàn thành 60%”. Nó thúc đẩy người dùng hoàn thành những gì họ đã bắt đầu.

Hãy xem một ví dụ khác. Bạn có năm nhiệm vụ trong ứng dụng danh sách việc cần làm và vào cuối ngày, bạn chỉ kiểm tra bốn nhiệm vụ trong số đó là đã hoàn thành. Nhiều người trong chúng ta sẽ cảm thấy không hoàn thành được vì nhiệm vụ còn dang dở đó. Đó chính là hiệu ứng Zeigarnik. Hiệu ứng Zeigarnik đã được chứng minh bởi nhà tâm lý học Bluma Zeigarnik, người đã mô tả rằng chúng ta có xu hướng lưu giữ những nhiệm vụ chưa hoàn thành trong trí nhớ lâu hơn những nhiệm vụ đã hoàn thành. Họa tiết sọc tự nhiên khai thác được điều này trong thiết kế UX. Giả sử bạn đang ở ngày thứ 63 của chuỗi học tập. Vào thời điểm đó, bạn đang trong tình trạng tiếp tục công việc còn dang dở. Bộ não của bạn hiếm khi quên nó vì nó nằm sâu trong tâm trí bạn. Tại thời điểm này, bộ não của bạn sẽ trở thành người gửi thông báo cho bạn. Khi kết hợp những sức mạnh tâm lý này lại với nhau, bạn bắt đầu thực sự hiểu tại sao các vệt không chỉ là một tính năng thông thường của ứng dụng; họ có khả năng định hình lại hành vi của con người. Nhưng ở đâu đó - tôi không thể nói chính xác khi nào, vì mỗi người mỗi khác - mọi thứ đạt đến điểm mà xu hướng chuyển từ “vui vẻ” sang thứ mà bạn cảm thấy mình không thể để mất. Bạn không muốn 58 ngày nỗ lực bị lãng phí phải không? Đó là điều làm cho hệ thống theo chuỗi trở nên hiệu quả. Nếu thực hiện đúng, các chuỗi sẽ giúp người dùng xây dựng những thói quen đáng kinh ngạc để hoàn thành mục tiêu. Đó có thể là đọc sách hàng ngày hoặc tập gym đều đặn. Những hành động lặp đi lặp lại này (đôi khi nhỏ) sẽ phức tạp theo thời gian và trở nên rõ ràng trong cuộc sống hàng ngày của chúng ta. Nhưng đồng tiền nào cũng có hai mặt. Ranh giới mong manh giữa thói quen và sự ép buộc Nếu bạn đã theo dõi, bạn có thể biết rằng có một mặt tối đối với các hệ thống. Hình thành thói quen là sự nhất quán với một mục tiêu được lặp đi lặp lại. Tuy nhiên, sự ép buộc là sự nhất quán trong việc thực hiện một mục tiêu không còn cần thiết nữa mà phải bám chặt vì sợ hãi hoặc áp lực. Đó là một đường mỏng như dao cạo. Bạn đánh răng mỗi sáng mà không cần suy nghĩ; nó mang tính tự động và bản năng, với mục tiêu rõ ràng là có được hơi thở thơm tho. Đó là một thói quen hình thành nên một thói quen tốt. Một hệ thống theo tiêu chuẩn đạo đức mang lại cho người dùng không gian để thở. Nếu vì lý do nào đó bạn không đánh răng vào buổi sáng thì bạn có thể đánh răng vào buổi trưa. Sự không hoàn hảo được cho phép mà không sợ mất đi một nỗ lực lâu dài. Sự ép buộc đi theo con đường ngược lại, theo đó, một thói quen khiến bạn lo lắng, bạn cảm thấy tội lỗi hoặc thậm chí kiệt sức, và đôi khi, bạn có cảm giác như mình chưa đạt được bất cứ điều gì, bất chấp mọi nỗ lực của bạn.công việc. Bạn hành động không phải vì bạn muốn mà vì trong tiềm thức bạn sợ hãi khi thấy tiến trình của mình bị đặt lại về con số 0. Có người thậm chí còn mô tả điều này một cách hoàn hảo: "Tôi cảm thấy mình đang gian lận, nhưng đơn giản là không quan tâm. Tôi chẳng là gì nếu không có dấu vết của mình". Điều này cho thấy khả năng giữ vững cực độ của một cá nhân. Ở mức độ mà người dùng bắt đầu gắn giá trị bản thân của họ với một số liệu tùy ý thay vì mục tiêu ban đầu hoặc lý do khiến họ bắt đầu chuỗi trận này ngay từ đầu. Đặc điểm này thể hiện con người họ chứ không chỉ những gì họ làm. Một hệ thống tiêu chuẩn đạo đức được thiết kế tốt sẽ mang lại cảm giác khuyến khích cho người dùng chứ không phải áp lực hay nghĩa vụ. Điều này liên quan đến sự cân bằng giữa động lực bên trong và bên ngoài. Động lực bên ngoài (phần thưởng bên ngoài, tránh bị trừng phạt) có thể khiến người dùng bắt đầu, nhưng động lực bên trong (thực hiện nhiệm vụ vì mục tiêu cá nhân như học tiếng Tây Ban Nha vì bạn thực sự muốn giao tiếp với người thân) sẽ mạnh mẽ hơn cho sự gắn kết lâu dài. Một hệ thống tốt nên hướng tới động lực bên trong bằng cách sử dụng cẩn thận các yếu tố bên ngoài, tức là nhắc nhở người dùng về việc họ đã đi được bao xa, chứ không phải đe dọa họ bằng những gì họ có thể mất. Một lần nữa, nó là một dòng tốt. Một thử nghiệm đơn giản khi thiết kế hệ thống sọc là thực sự dành chút thời gian và suy nghĩ xem liệu sản phẩm của bạn có kiếm được tiền bằng cách bán giải pháp cho sự lo lắng mà sản phẩm của bạn tạo ra hay không. Nếu có thì khả năng cao là bạn đang lợi dụng người dùng. Vì vậy, câu hỏi tiếp theo sẽ là, Nếu tôi chọn sử dụng Streak, làm cách nào để thiết kế nó theo cách thực sự giúp người dùng đạt được mục tiêu của họ? UX của thiết kế hệ thống Good Streak Tôi tin rằng đây là lúc mà hầu hết các dự án đều có thể tạo ra một hệ thống chuỗi hiệu quả hoặc làm nó hoàn toàn rối tung. Chúng ta hãy điểm qua một số nguyên tắc UX của một thiết kế tốt. Giữ nó dễ dàng Có thể bạn đã từng nghe điều này trước đây, có thể từ những cuốn sách như Thói quen nguyên tử, nhưng điều đáng nói là một trong những cách dễ dàng nhất để hình thành thói quen là thực hiện hành động nhỏ nhặt và dễ dàng. Điều này tương tự như yếu tố khả năng mà chúng ta đã thảo luận từ Mô hình hành vi Fogg. Quy tắc đầu tiên của bất kỳ thiết kế theo chuỗi nào phải là thực hiện hành động cần thiết ở mức nhỏ nhất có thể của con người trong khi vẫn đạt được tiến bộ. Nếu một hành động hàng ngày đòi hỏi sức mạnh ý chí để hoàn thành thì hành động đó sẽ không kéo dài quá năm ngày. Tại sao? Bạn không thể có động lực trong năm ngày liên tiếp. Trường hợp cụ thể: Nếu bạn chạy một ứng dụng thiền, bạn không cần bắt người dùng phải trải qua một phiên học kéo dài 20 phút chỉ để duy trì thành tích. Thay vào đó, hãy thử một phút, thậm chí có thể là khoảng ba mươi giây. Tục ngữ có câu, giọt nước nhỏ làm nên đại dương hùng vĩ). Những nỗ lực nhỏ sẽ được tổng hợp thành những thành tựu lớn theo thời gian. Đó phải là mục tiêu: loại bỏ xích mích, đặc biệt là khi thời điểm này có thể khó khăn. Khi người dùng căng thẳng hoặc choáng ngợp, hãy cho họ biết rằng chỉ cần xuất hiện, dù chỉ trong vài giây, cũng được coi là nỗ lực. Cung cấp phản hồi trực quan rõ ràng Con người có bản chất trực quan. Hầu hết chúng ta cần thấy điều gì đó để tin; cần phải hình dung mọi thứ để hiểu chúng tốt hơn và đưa mọi thứ vào góc nhìn. Đây là lý do tại sao các mẫu sọc thường sử dụng các yếu tố trực quan như biểu đồ, dấu kiểm, vòng tiến trình và lưới để trực quan hóa nỗ lực. Nhìn vào biểu đồ đóng góp của GitHub. Đó là một hình dung đơn giản về tính nhất quán. Tuy nhiên, các nhà phát triển hít thở nó như oxy.

Điều quan trọng là không làm cho hệ thống sọc có cảm giác trừu tượng. Nó sẽ có cảm giác chân thực và kiếm được. Ví dụ: vòng hoạt động của Duolingo và Apple Fitness sử dụng các thiết kế hoạt ảnh rõ ràng khi hoàn thành một chuỗi và GitHub hiển thị dữ liệu lịch sử về tính nhất quán của người dùng theo thời gian.

Sử dụng thời điểm tốt Tôi đã đề cập trước đó rằng bản chất con người thường hay quên và những lời nhắc nhở đó có thể giúp duy trì đà tiến về phía trước. Nếu không có lời nhắc, hầu hết người dùng mới sẽ quên tiếp tục. Cuộc sống có thể trở nên bận rộn, động lực biến mất và mọi thứ vẫn xảy ra. Ngay cả những người dùng lâu năm cũng được hưởng lợi từ những lời nhắc, mặc dù hầu hết các trường hợp, họ đều đã bị mắc kẹt trong vòng lặp thói quen. Tuy nhiên, ngay cả người tận tâm nhất cũng có thể vô tình bỏ lỡ một ngày. Hệ thống chuỗi của bạn chắc chắn cần được nhắc nhở. Lời nhắc nhắc nhở được sử dụng nhiều nhất là thông báo đẩy. Thời gian thực sự quan trọng khi làm việc với thông báo đẩy. Loại ứng dụng cũng quan trọng. Việc gửi thông báo lúc 9 giờ sáng với nội dung “Hôm nay bạn chưa luyện tập” quả là điều kỳ lạ đối với một ứng dụng học tập vì nhiều người có việc phải làm trong ngày trước khi họ nghĩ đến việc hoàn thành một bài học. Tuy nhiên, nếu chúng ta đang nói về một ứng dụng thể dục thì nólà hợp lý và thậm chí có thể được nhắc nhở sớm hơn trong ngày. Thông báo đẩy thay đổi đáng kể tùy theo danh mục ứng dụng. Ví dụ: các ứng dụng thể dục có mức độ tương tác cao hơn với các thông báo vào sáng sớm (7–8 giờ sáng), trong khi các ứng dụng năng suất có thể hoạt động tốt hơn vào đầu giờ trưa. Điều quan trọng là kiểm tra A/B thời gian của ứng dụng dựa trên hành vi của người dùng thay vì cho rằng mọi thứ đều phù hợp với tất cả. Những gì hiệu quả với ứng dụng thiền có thể không hiệu quả với trình theo dõi mã hóa. Các phương pháp nhắc nhở khác là các chấm đỏ trên biểu tượng ứng dụng và thậm chí cả các tiện ích ứng dụng. Các nghiên cứu khác nhau nhưng trung bình một người mở khóa thiết bị của họ từ 50-150 lần một ngày (PDF). Nếu người dùng nhìn thấy một chấm đỏ trên một ứng dụng hoặc tiện ích cho biết chuỗi hiện tại mỗi khi họ mở khóa điện thoại, điều đó sẽ làm tăng mức độ cam kết. Đừng lạm dụng nó; lời nhắc sẽ đóng vai trò như một lời nhắc nhở chứ không phải một lời cằn nhằn. Kỷ niệm các cột mốc quan trọng Một hệ thống theo chuỗi nên cố gắng kỷ niệm các cột mốc quan trọng để khơi dậy cảm xúc, đặc biệt là đối với những người dùng đang chìm trong một chuỗi. Khi người dùng truy cập Ngày 7, Ngày 30, Ngày 50, Ngày 100, Ngày 365, bạn nên kiếm được nhiều tiền từ nó. Ghi nhận thành tích - đặc biệt đối với người dùng lâu năm.

Như chúng ta đã thấy trước đó, Duolingo đã phát hiện ra điều này và triển khai một đồ họa hoạt hình để kỷ niệm các cột mốc quan trọng bằng hoa giấy. Một số nền tảng thậm chí còn trao phần thưởng đáng kể để xác nhận nỗ lực của người dùng. Và điều này có thể có lợi cho các ứng dụng, vì người dùng có xu hướng chia sẻ công khai các cột mốc quan trọng của họ trên mạng xã hội. Một lợi ích khác là dự đoán trước khi đạt được các cột mốc quan trọng. Nó không chỉ giữ cho chuỗi tồn tại vô tận; người dùng có điều gì đó để mong đợi. Sử dụng cơ chế ân sủng Cuộc sống không thể đoán trước được. Mọi người bị phân tâm. Bất kỳ hệ thống chuỗi tốt nào cũng sẽ có sự không hoàn hảo. Một trong những mối đe dọa tâm lý lớn nhất đối với hệ thống theo chuỗi là việc thiết lập lại cứng về 0 chỉ sau một ngày bị bỏ lỡ. Một hệ thống vệt “có đạo đức” sẽ mang lại cho người dùng một số sự chậm trễ. Giả sử bạn có thời gian học cờ vua kéo dài 90 ngày. Bạn đã kiên định trong ba tháng tốt đẹp và một ngày nọ, điện thoại của bạn hết pin khi đang di chuyển và cứ như thế, 90 trở thành 0 - mọi thứ, tất cả nỗ lực đó, đều bị xóa và tiến độ cũng biến mất. Người dùng có thể bị tàn phá hoàn toàn. Ý nghĩ xây dựng lại nó từ đầu khiến bạn mất tinh thần đến mức nỗ lực bỏ ra là không đáng. Tệ nhất, người dùng có thể từ bỏ ứng dụng sau khi cảm thấy thất bại. Hãy cân nhắc việc thêm cơ chế “ân sủng” vào hệ thống chuỗi của bạn:

Streak FreezeCho phép người dùng cố tình bỏ lỡ một ngày mà không bị phạt. Thời gian bổ sungHãy đợi một vài giờ (2–3) sau thời hạn thông thường trước khi kích hoạt thiết lập lại. Mô hình phân rãThay vì thiết lập lại cứng, chuỗi giảm đi một lượng nhỏ, ví dụ: 10 ngày bị trừ vào chuỗi mỗi ngày bị bỏ lỡ.

Sử dụng giọng điệu khích lệ Hãy so sánh hai thông báo được hiển thị cho người dùng khi ngắt chuỗi:

"Bạn đã đánh mất chuỗi 42 ngày của mình. Hãy bắt đầu lại." "Bạn đã xuất hiện trong 42 ngày liên tục. Đó là sự tiến bộ đáng kinh ngạc! Bạn có muốn thử lại không?"

Cả hai đều truyền tải cùng một thông tin, nhưng tác động về mặt cảm xúc là khác nhau. Tin nhắn đầu tiên rất có thể sẽ khiến người dùng cảm thấy mất tinh thần và khiến họ bỏ cuộc. Thông báo thứ hai kỷ niệm những gì đã đạt được và nhẹ nhàng khuyến khích người dùng thử lại. Những thách thức về thiết kế hệ thống Streak Trước khi đi vào chi tiết kỹ thuật cụ thể của việc xây dựng hệ thống chuỗi, bạn nên biết những thách thức mà bạn có thể gặp phải. Mọi thứ có thể trở nên phức tạp như bạn mong đợi. Xử lý múi giờ Có lý do tại sao việc xử lý thời gian và ngày tháng là một trong những khái niệm khó khăn nhất mà các nhà phát triển phải giải quyết. Có định dạng, quốc tế hóa và nhiều thứ khác cần xem xét. Hãy để tôi hỏi bạn điều này: Một ngày được tính là bao nhiêu? Chúng tôi biết thế giới hoạt động theo các múi giờ khác nhau và như thể điều đó vẫn chưa đủ, một số khu vực có Giờ tiết kiệm ánh sáng ban ngày (DST) diễn ra hai lần một năm. Bạn thậm chí bắt đầu xử lý những trường hợp khó khăn này ở đâu? Điều gì được coi là “sự khởi đầu” của ngày mai? Một số nhà phát triển cố gắng tránh điều này bằng cách sử dụng một múi giờ trung tâm, như UTC. Đối với một số người dùng, điều này sẽ mang lại kết quả chính xác, nhưng đối với một số người, nó có thể bị tắt sau một giờ, hai giờ hoặc hơn. Sự không nhất quán này làm hỏng trải nghiệm người dùng. Người dùng ít quan tâm hơn đến cách bạn xử lý thời gian ở hậu trường; tất cả những gì họ mong đợi là nếu họ thực hiện một hành động liên tiếp vào lúc 11:40 tối thì hành động đó sẽ được đăng ký vào thời điểm chính xác đó, trong bối cảnh của họ. Bạn nên xác định “một ngày” dựa trên múi giờ địa phương của người dùng chứ không phải giờ của máy chủ. Chắc chắn, bạn có thể thoải máiđịnh tuyến và đặt lại các chuỗi trên toàn cầu cho tất cả người dùng vào lúc nửa đêm UTC, nhưng bạn đang tạo ra sự bất công rất lớn. Một người nào đó ở California luôn có thêm tám giờ để hoàn thành nhiệm vụ của mình so với người sống ở London. Đó là một lỗi thiết kế bất công nhằm trừng phạt một số người dùng nhất định vì vị trí của họ. Và điều gì sẽ xảy ra nếu người đó ở London chỉ ghé thăm, hoàn thành một nhiệm vụ rồi quay lại múi giờ khác? Một giải pháp hiệu quả cho tất cả những điều này là yêu cầu người dùng đặt rõ ràng múi giờ của họ trong quá trình giới thiệu (tốt nhất là sau lần xác thực đầu tiên). Bạn nên thêm một ghi chú tinh tế rằng việc cung cấp thông tin múi giờ chỉ được sử dụng để ứng dụng theo dõi chính xác tiến trình chứ không được sử dụng làm dữ liệu nhận dạng cá nhân. Và một ý tưởng hay nữa là biến cài đặt đó thành một cài đặt có thể thay đổi. Tôi khuyên mọi người nên tránh xử lý trực tiếp logic múi giờ trong ứng dụng. Sử dụng các thư viện ngày đã được thử và xác thực, như Moment.js hoặc pytz (Python), v.v. Không cần phải phát minh lại bánh xe cho những thứ phức tạp như thế này. Những ngày bị lỡ và các trường hợp cạnh Một thách thức khác mà bạn nên lo lắng là các trường hợp khó kiểm soát được như người dùng ngủ quên, máy chủ ngừng hoạt động, lag, lỗi mạng, v.v. Sử dụng ý tưởng về cơ chế ân sủng, giống như những cơ chế mà chúng ta đã thảo luận trước đó, có thể hữu ích. Khoảng thời gian ân hạn kéo dài hai giờ có thể giúp ích cho cả người dùng và nhà phát triển, theo nghĩa là người dùng không bị trừng phạt nghiêm khắc vì hoàn cảnh sống không thể kiểm soát được. Đối với các nhà phát triển, cửa sổ ân hạn rất hữu ích trong những thời điểm không thể kiểm soát được khi máy chủ ngừng hoạt động vào lúc nửa đêm. Trên hết, đừng bao giờ tin tưởng khách hàng. Luôn xác thực ở phía máy chủ. Máy chủ phải là nguồn sự thật duy nhất. Phòng chống gian lận Một lần nữa, tôi không thể nhấn mạnh đủ điều này: Hãy đảm bảo xác thực mọi thứ phía máy chủ. Người dùng là con người và con người có thể gian lận nếu có cơ hội. Đó là điều không thể tránh khỏi. Bạn có thể thử:

Lưu trữ tất cả các hành động bằng dấu thời gian UTC. Máy khách có thể gửi giờ địa phương của họ, nhưng máy chủ có thể chuyển đổi ngay lập tức thành UTC và xác thực theo thời gian của máy chủ. Bằng cách đó, nếu dấu thời gian của máy khách cách xa một cách đáng ngờ, hệ thống có thể từ chối dấu thời gian đó do lỗi và giao diện người dùng có thể phản hồi tương ứng. Sử dụng theo dõi dựa trên sự kiện. Nói cách khác, lưu trữ bản ghi của từng hành động với siêu dữ liệu bao gồm thông tin như ID người dùng, loại hành động được thực hiện cũng như dấu thời gian và múi giờ. Điều này giúp xác nhận.

Xây dựng một công cụ hệ thống Streak Đây không phải là hướng dẫn về mã, vì vậy tôi sẽ tránh đưa cho bạn một loạt mã. Tôi sẽ giữ điều này thực tế và mô tả cách mọi thứ thường vận hành một công cụ hệ thống liên tục về kiến ​​trúc, quy trình và độ tin cậy. Kiến trúc cốt lõi Như tôi đã nói nhiều lần, hãy biến máy chủ thành nguồn duy nhất cung cấp dữ liệu theo chuỗi. Kiến trúc có thể giống như thế này trên máy chủ:

Lưu trữ dữ liệu của mỗi người dùng trong cơ sở dữ liệu. Lưu trữ chuỗi lưu trữ hiện tại (mặc định là 0) dưới dạng số nguyên. Lưu trữ tùy chọn múi giờ, tức là chuỗi Múi giờ IANA (ngầm từ dấu thời gian cục bộ hoặc rõ ràng bằng cách yêu cầu người dùng chọn múi giờ của họ). Ví dụ: “Mỹ/New_York”. Xử lý tất cả logic để xác định xem chuỗi tiếp tục hay bị gián đoạn bằng cách kiểm tra múi giờ tương ứng với múi giờ địa phương của người dùng.

Trong khi đó, về phía khách hàng:

Hiển thị chuỗi hiện tại, thường được lấy từ máy chủ. Gửi hành động được thực hiện dưới dạng siêu dữ liệu đến máy chủ để xác thực xem người dùng có thực sự hoàn thành một hành động đủ điều kiện hay không. Cung cấp phản hồi trực quan dựa trên phản hồi của máy chủ.

Vì vậy, tóm lại, bộ não nằm trên máy chủ và máy khách dành cho mục đích hiển thị và gửi sự kiện. Điều này giúp bạn tránh được rất nhiều lỗi và các trường hợp nguy hiểm, đồng thời giúp việc cập nhật và sửa lỗi dễ dàng hơn. Dòng logic Hãy mô phỏng hướng dẫn về cách hoạt động của công cụ hệ thống chuỗi hiệu quả tối thiểu khi người dùng hoàn thành một hành động:

Người dùng hoàn thành một hành động chuỗi đủ điều kiện. Máy khách gửi một sự kiện đến máy chủ dưới dạng siêu dữ liệu. Đây có thể là “Người dùng X đã hoàn thành hành động Y ở dấu thời gian Z”. Máy chủ nhận được sự kiện này và thực hiện xác thực cơ bản. Đây có phải là người dùng thực sự không? Họ có được xác thực không? Hành động đó có hợp lệ không? Múi giờ có nhất quán không? Nếu điều này thành công, máy chủ sẽ truy xuất dữ liệu chuỗi của người dùng từ cơ sở dữ liệu. Sau đó, chuyển đổi dấu thời gian hành động nhận được sang múi giờ địa phương của người dùng. Để máy chủ so sánh ngày theo lịch (không phải dấu thời gian) theo múi giờ địa phương của người dùng: Nếu trùng ngày thì hành động đó là dư thừa và không có sự thay đổi nào vềvệt. Nếu là ngày hôm sau thì chuỗi đó sẽ kéo dài và tăng thêm 1. Nếu có khoảng cách hơn một ngày, chuỗi sẽ bị phá vỡ. Tuy nhiên, đây là nơi bạn có thể áp dụng cơ chế ân sủng. Nếu cơ chế gia hạn bị bỏ lỡ, hãy đặt lại chuỗi thành 1.

Nếu bạn chọn lưu dữ liệu lịch sử cho các thành tích quan trọng thì hãy cập nhật các biến như “chuỗi dài nhất” hoặc “tổng số ngày hoạt động”. Sau đó, máy chủ sẽ cập nhật cơ sở dữ liệu và phản hồi cho máy khách. Một cái gì đó như thế này:

{ "current_streak": 48, "dải_dài nhất": 50, "total_active_days": 120, "streak_extends": đúng, }

Là một biện pháp bổ sung, máy chủ nên thử lại hoặc từ chối và thông báo cho khách hàng khi có bất kỳ lỗi nào xảy ra trong quá trình này. Xây dựng khả năng phục hồi Như đã đề cập trước đó, việc người dùng bị mất chuỗi do lỗi hoặc thời gian ngừng hoạt động của máy chủ là trải nghiệm người dùng tồi tệ và người dùng không mong đợi điều đó xảy ra. Vì vậy, hệ thống chuỗi của bạn phải có các biện pháp bảo vệ cho những tình huống đó. Nếu máy chủ ngừng hoạt động để bảo trì (hoặc vì bất kỳ lý do gì), hãy cân nhắc cho phép kéo dài thêm một khoảng thời gian tạm thời để khắc phục sự cố để các hành động có thể được gửi muộn mà vẫn được tính. Bạn cũng có thể chọn thông báo cho người dùng, đặc biệt nếu tình huống đó có khả năng ảnh hưởng đến chuỗi hoạt động đang diễn ra. Lưu ý: Thiết lập cửa hậu quản trị để dữ liệu có thể được khôi phục theo cách thủ công. Lỗi là không thể tránh khỏi và một số người dùng sẽ liên hệ với ứng dụng của bạn hoặc liên hệ để hỗ trợ nếu chuỗi của họ bị hỏng vì lý do mà họ không thể kiểm soát. Bạn sẽ có thể khôi phục các vệt theo cách thủ công nếu sau khi điều tra, người dùng đã đúng. Kết luận Một điều vẫn còn rõ ràng: Các vệt thực sự có sức mạnh do cách thức hoạt động của tâm lý con người ở cấp độ cơ bản. Hệ thống chuỗi tốt nhất hiện có là hệ thống mà người dùng không nghĩ đến một cách có ý thức. Nó đã trở thành một thói quen mang lại kết quả ngay lập tức hoặc sự tiến bộ rõ rệt, giống như việc đánh răng, trở thành một thói quen thường xuyên. Và tôi chỉ muốn nói rằng: Không phải tất cả các sản phẩm đều cần hệ thống sọc. Bạn có nên thực sự ép buộc sự nhất quán chỉ vì bạn muốn có người dùng hoạt động hàng ngày? Câu trả lời rất có thể là “không”.

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