Saya yakin Anda pernah mendengar tentang coretan atau menggunakan aplikasi yang memiliki coretan. Namun pernahkah Anda bertanya-tanya mengapa coretan begitu populer dan kuat? Ya, jelas sekali bahwa aplikasi memerlukan perhatian Anda sebanyak mungkin, namun selain itu, tahukah Anda bahwa ketika aplikasi pembelajaran populer Duolingo memperkenalkan widget iOS untuk menampilkan coretan, komitmen pengguna melonjak sebesar 60%. Enam puluh persen merupakan perubahan besar dalam perilaku dan menunjukkan bagaimana pola “garis” dapat digunakan untuk meningkatkan keterlibatan dan mendorong penggunaan. Pada dasarnya, satu pukulan adalah jumlah hari berturut-turut pengguna menyelesaikan aktivitas tertentu. Beberapa orang juga mendefinisikannya sebagai kebiasaan “gamified” atau metrik yang dirancang untuk mendorong penggunaan yang konsisten. Namun coretan lebih dari sekadar metrik atau rekor dalam suatu aplikasi; ini lebih bersifat psikologis dari itu. Naluri manusia mudah dipengaruhi dengan faktor yang tepat. Perhatikan tiga faktor ini: kemajuan, kebanggaan, dan ketakutan ketinggalan (biasa disebut FOMO). Apa kesamaan dari semua ini? Upaya. Semakin banyak upaya yang Anda lakukan pada sesuatu, semakin besar hal itu membentuk identitas Anda, dan begitulah cara melintasi dunia psikologi perilaku. Sekarang, dengan kekuatan yang besar, datang pula tanggung jawab yang besar, dan karena itu, ada sisi gelap dari coretan-coretan. Dalam artikel ini, kita akan membahas psikologi, UX, dan prinsip desain di balik pembangunan sistem coretan yang efektif. Kita akan melihat (1) mengapa otak kita secara naluriah merespons aktivitas coretan, (2) bagaimana merancang coretan dengan cara yang benar-benar membantu pengguna, dan (3) pekerjaan teknis yang terlibat dalam membangun pola coretan. Psikologi di Balik Goresan Untuk merancang dan membangun sistem coretan yang efektif, kita perlu memahami bagaimana sistem tersebut selaras dengan cara otak kita terhubung. Seperti, apa yang membuatnya begitu efektif sampai-sampai kita merasa begitu berdedikasi untuk melindungi coretan kita? Ada tiga prinsip psikologi yang menarik dan terdokumentasi dengan baik yang mendukung apa yang membuat coretan begitu kuat dan membuat ketagihan. Keengganan Kehilangan Ini mungkin merupakan kekuatan terkuat dibalik pukulan beruntun. Saya mengatakan ini karena sering kali, Anda hampir tidak dapat menghindari hal ini dalam hidup. Pikirkan seperti ini: Jika seorang teman memberi Anda $100, Anda akan senang. Namun jika Anda kehilangan $100 dari dompet Anda, itu akan jauh lebih menyakitkan. Beban emosional dari situasi tersebut tidaklah sama. Kehilangan jauh lebih menyakitkan daripada keuntungan yang terasa menyenangkan. Mari kita melangkah lebih jauh dan mengatakan bahwa saya memberi Anda $100 dan meminta Anda untuk berjudi. Ada kemungkinan 50% Anda memenangkan $100 lagi dan 50% kemungkinan Anda kehilangan $100 asli. Maukah kamu mengambilnya? Saya tidak akan melakukannya. Kebanyakan orang tidak mau melakukannya. Itu adalah keengganan untuk merugi. Kalau dipikir-pikir, itu logis, bisa dimaklumi, itu manusiawi. Konsep di balik keengganan untuk kehilangan adalah kita merasakan sakitnya kehilangan sesuatu dua kali lebih besar daripada kesenangan mendapatkan sesuatu yang bernilai sama. Dalam istilah psikologis, kerugian lebih besar daripada keuntungan. Anda mungkin melihat bagaimana hal ini berhubungan dengan coretan. Untuk membangun coretan yang nyata, diperlukan usaha; seiring dengan pertumbuhannya, motivasi di baliknya mulai memudar; atau lebih tepatnya, itu mulai menjadi hal kedua. Berikut ini contohnya: Katakanlah teman Anda berturut-turut menutup “Move Rings” selama tiga hari di Apple Watch-nya. Mereka hampir tidak akan rugi apa-apa selain ingin mencapai tujuan mereka dan konsisten. Pada saat yang sama, Anda mengalami 219 hari berturut-turut yang mengesankan. Kemungkinan besar Anda terjebak oleh rasa takut kehilangannya. Kemungkinan besar Anda tidak memikirkan pencapaiannya saat ini; ini lebih tentang melindungi upaya yang Anda investasikan, dan itu adalah keengganan untuk merugi. Duolingo menjelaskan bagaimana keengganan terhadap kerugian berkontribusi pada keengganan pengguna untuk memecahkan rekor jangka panjang, bahkan pada hari-hari paling malas mereka. Di satu sisi, pukulan beruntun bisa berubah menjadi kebiasaan ketika rasa enggan terhadap kerugian mulai muncul. Model Perilaku Fogg (B = MAP) Kini setelah kita memahami ketakutan akan kehilangan usaha yang telah diinvestasikan dalam pukulan beruntun yang lebih panjang, pertanyaan lainnya adalah: Apa yang membuat kita melakukan hal tersebut, hari demi hari, bahkan sebelum pukulan beruntun tersebut menjadi besar? Itulah inti dari Model Perilaku Fogg. Hal ini relatif sederhana. Perilaku (B) hanya terjadi ketika tiga faktor — Motivasi (M), Kemampuan (A), dan Prompt (P) — selaras pada saat yang sama. Jadi, persamaan B=MAP. Jika salah satu dari faktor-faktor ini, bahkan satu saja, hilang pada saat itu, perilaku tersebut tidak akan terjadi. Jadi, agar sistem pukulan menjadi efisien dan berulang, ketiga faktor tersebut harus ada: Motivasi Ini rapuh dan bukan sesuatu yang selalu ada. Ada hari-hari ketika Anda beradabersemangat untuk belajar bahasa Spanyol, dan berhari-hari Anda bahkan tidak merasakan sedikit pun kemauan untuk mempelajari bahasa tersebut. Motivasi dengan sendirinya untuk membangun suatu kebiasaan tidak dapat diandalkan dan akan sia-sia sejak hari pertama. Kemampuan Untuk mengimbangi keterbatasan motivasi, kemampuan sangatlah penting. Dalam konteks ini, kemampuan berarti kemudahan dalam bertindak, yaitu usaha yang begitu mudah sehingga tidak realistis untuk mengatakan tidak mungkin. Sebagian besar aplikasi sengaja menggunakan ini. Apple Fitness hanya mengharuskan Anda berdiri selama satu menit dalam satu jam agar berhasil mencapai sasaran Stand Anda. Duolingo hanya membutuhkan satu pelajaran yang diselesaikan. Tugas-tugas ini tidak memerlukan banyak usaha. Penghalangnya sangat rendah sehingga bahkan pada hari-hari terburuk Anda pun, Anda dapat melakukannya. Namun upaya gabungan dari rentetan pukulan yang berkelanjutan adalah awal mula gagasan untuk kalah secara beruntun. PromptInilah yang melengkapi persamaan. Manusia pada dasarnya pelupa, jadi ya, kemampuan bisa membawa kita 90% sampai di sana. Namun sebuah perintah mengingatkan kita untuk bertindak. Goresan memang bersifat persisten, sehingga pengguna harus terus-menerus diingatkan untuk bertindak. Untuk melihat seberapa kuat sebuah perintah, Duolingo melakukan pengujian A/B untuk melihat apakah lencana merah kecil pada ikon aplikasi meningkatkan penggunaan yang konsisten. Ini menghasilkan peningkatan 6% pada pengguna aktif harian. Hanya lencana merah. Keterbatasan Model Meskipun demikian, terdapat keterbatasan pada model Fogg yang mana para kritikus dan penelitian modern telah memperhatikan bahwa desain yang terlalu bergantung pada perintah, seperti notifikasi agresif, berisiko menimbulkan kelelahan mental. Pemberitahuan terus-menerus dan lembur dapat menyebabkan pengguna berhenti menggunakan. Jadi, berhati-hatilah untuk itu. Efek Zeigarnik Bagaimana perasaan Anda ketika Anda meninggalkan tugas proyek yang setengah selesai? Hal ini membuat jengkel banyak orang karena tugas yang belum selesai menempati lebih banyak ruang mental dibandingkan hal yang kita selesaikan. Ketika sesuatu sudah selesai dan hilang, kita cenderung melupakannya. Ketika ada sesuatu yang tidak terselesaikan, hal itu cenderung membebani pikiran kita. Inilah sebabnya mengapa produk digital menggunakan indikator kemajuan buatan, seperti bilah penyelesaian profil Upwork, untuk memberi tahu pengguna bahwa profil mereka hanya “60% selesai”. Ini mendorong pengguna untuk menyelesaikan apa yang mereka mulai.

Mari kita lihat contoh lainnya. Anda memiliki lima tugas dalam aplikasi daftar tugas, dan pada akhirnya, Anda hanya memeriksa empat tugas yang sudah selesai. Banyak dari kita akan merasa tidak terselesaikan karena satu tugas yang belum selesai itu. Itulah efek Zeigarnik. Efek Zeigarnikditujukan oleh psikolog Bluma Zeigarnik, yang menjelaskan bahwa kita cenderung menyimpan tugas yang belum selesai tetap aktif dalam ingatan kita lebih lama daripada tugas yang sudah selesai. Pola coretan secara alami memanfaatkan hal ini dalam desain UX. Katakanlah Anda berada pada hari ke 63 dari serangkaian pembelajaran. Pada saat itu, Anda berada dalam pola urusan yang belum selesai. Otak Anda jarang akan melupakannya karena hal itu berada di belakang pikiran Anda. Pada titik ini, otak Anda yang mengirimkan notifikasi kepada Anda. Saat Anda menggabungkan kekuatan psikologis ini, Anda mulai benar-benar memahami mengapa coretan bukan sekadar fitur aplikasi biasa; mereka mampu membentuk kembali perilaku manusia. Namun dalam jangka waktu tertentu - saya tidak bisa mengatakan secara pasti kapan, karena setiap orang berbeda-beda - segala sesuatunya mencapai titik di mana rentetan perubahan dari "menyenangkan" menjadi sesuatu yang Anda rasa tidak boleh hilang. Anda tidak ingin usaha selama 58 hari sia-sia, bukan? Hal itulah yang membuat sistem coretan menjadi efektif. Jika dilakukan dengan benar, coretan membantu pengguna membangun kebiasaan luar biasa yang mencapai suatu tujuan. Bisa dengan membaca setiap hari atau pergi ke gym secara konsisten. Tindakan yang berulang-ulang ini (terkadang kecil) akan bertambah seiring berjalannya waktu dan menjadi nyata dalam kehidupan kita sehari-hari. Namun ada dua sisi dari setiap mata uang. Garis Tipis Antara Kebiasaan dan Paksaan Jika Anda telah mengikutinya, Anda sudah dapat mengetahui bahwa ada sisi gelap dari sistem yang tercoreng. Pembentukan kebiasaan adalah tentang konsistensi dengan tujuan yang berulang. Namun, paksaan adalah konsistensi dalam mencapai tujuan yang tidak lagi diperlukan tetapi dipertahankan karena rasa takut atau tekanan. Itu adalah garis yang sangat tipis. Anda menyikat gigi setiap pagi tanpa berpikir; itu otomatis dan naluriah, dengan tujuan yang jelas untuk mendapatkan napas yang baik. Itu adalah coretan yang membentuk kebiasaan baik. Sistem coretan etis memberi ruang bagi pengguna untuk bernapas. Jika karena alasan tertentu Anda tidak menyikat gigi di pagi hari, Anda dapat menyikat gigi di siang hari. Ketidaksempurnaan diperbolehkan tanpa takut kehilangan usaha yang panjang. Keterpaksaan mengambil arah sebaliknya, yaitu sebuah pukulan yang membuat Anda cemas, Anda merasa bersalah atau bahkan kelelahan, dan terkadang, Anda merasa belum mencapai apa pun, terlepas dari semua yang telah Anda lakukan.bekerja. Anda bertindak bukan karena Anda menginginkannya, tetapi karena Anda secara tidak sadar takut melihat kemajuan Anda disetel ulang ke nol. Bahkan ada yang menggambarkan hal ini dengan sempurna, "Aku merasa aku curang, tapi aku tidak peduli. Aku bukan siapa-siapa tanpa coretanku". Hal ini menunjukkan bahwa pukulan ekstrim dapat terjadi pada seseorang. Sampai-sampai pengguna mulai mengaitkan harga diri mereka dengan metrik yang sewenang-wenang, bukan pada tujuan atau alasan awal mereka memulai pukulan tersebut. Coretan itu menentukan siapa mereka, bukan hanya apa yang mereka lakukan. Sistem etika yang dirancang dengan baik harus terasa seperti dorongan bagi pengguna, bukan tekanan atau kewajiban. Hal ini berkaitan dengan keseimbangan motivasi intrinsik dan ekstrinsik. Motivasi ekstrinsik (penghargaan eksternal, menghindari hukuman) mungkin membuat pengguna memulai, namun motivasi intrinsik (melakukan tugas untuk tujuan pribadi seperti belajar bahasa Spanyol karena Anda benar-benar ingin berkomunikasi dengan orang yang dicintai) lebih kuat untuk interaksi jangka panjang. Sistem yang baik harus mengarah pada motivasi intrinsik dengan penggunaan elemen ekstrinsik secara hati-hati, yaitu mengingatkan pengguna tentang seberapa jauh kemajuan mereka, bukan mengancam mereka dengan kerugian yang mungkin terjadi. Sekali lagi, ini adalah garis yang bagus. Tes sederhana ketika merancang sistem coretan adalah dengan meluangkan waktu dan memikirkan apakah produk Anda menghasilkan uang dengan menjual solusi atas kecemasan yang diciptakan produk Anda. Jika ya, kemungkinan besar Anda mengeksploitasi pengguna. Jadi pertanyaan selanjutnya adalah, Jika saya memilih untuk menggunakan coretan, bagaimana cara mendesainnya sedemikian rupa sehingga benar-benar membantu pengguna mencapai tujuan mereka? UX Desain Sistem Streak yang Baik Saya yakin di sinilah sebagian besar proyek berhasil menerapkan sistem coretan yang efektif atau mengacaukannya sepenuhnya. Mari kita bahas beberapa prinsip UX untuk desain coretan yang bagus. Tetap Mudah Anda mungkin pernah mendengar hal ini sebelumnya, mungkin dari buku seperti Atomic Habits, namun perlu disebutkan bahwa salah satu cara termudah untuk membentuk kebiasaan adalah dengan membuat tindakan menjadi kecil dan mudah. Hal ini mirip dengan faktor kemampuan yang kita bahas dari Model Perilaku Fogg. Aturan pertama dari setiap desain coretan harus membuat tindakan yang diperlukan sekecil mungkin secara manusiawi sambil tetap mencapai kemajuan. Jika suatu tindakan sehari-hari memerlukan kemauan keras untuk menyelesaikannya, tindakan itu tidak akan berhasil melewati lima hari. Mengapa? Anda tidak dapat termotivasi lima hari berturut-turut. Contoh kasus: Jika Anda menjalankan aplikasi meditasi, Anda tidak perlu memaksa pengguna menjalani sesi 20 menit hanya untuk mempertahankan pukulannya. Cobalah satu menit, bahkan mungkin tiga puluh detik saja. Seperti kata pepatah, tetesan air yang kecil membuat lautan menjadi besar). Upaya kecil akan menjadi pencapaian besar seiring berjalannya waktu. Itu seharusnya menjadi tujuannya: menghilangkan gesekan, terutama ketika momennya mungkin sulit. Saat pengguna stres atau kewalahan, beri tahu mereka bahwa sekadar muncul, meskipun hanya beberapa detik, sudah dianggap sebagai upaya. Berikan Umpan Balik Visual yang Jelas Manusia pada dasarnya adalah visual. Sering kali, kita perlu melihat sesuatu untuk dipercaya; ada kebutuhan untuk memvisualisasikan berbagai hal untuk memahaminya dengan lebih baik dan menempatkan segala sesuatunya dalam perspektif. Inilah sebabnya mengapa pola coretan sering kali menggunakan elemen visual, seperti grafik, tanda centang, lingkaran kemajuan, dan kisi, untuk memvisualisasikan upaya. Lihat grafik kontribusi GitHub. Ini adalah visualisasi sederhana dari konsistensi. Namun pengembang menghirupnya seperti oksigen.

Kuncinya adalah jangan membuat sistem coretan terasa abstrak. Itu harus terasa nyata dan layak. Misalnya, Duolingo dan cincin aktivitas Kebugaran Apple menggunakan desain animasi yang bersih setelah menyelesaikan serangkaian aktivitas, dan GitHub menampilkan data historis konsistensi pengguna dari waktu ke waktu.

Gunakan Waktu yang Tepat Saya telah menyebutkan sebelumnya bahwa manusia pada dasarnya adalah orang yang pelupa, dan petunjuk tersebut dapat membantu menjaga momentum ke depan. Tanpa disuruh, sebagian besar pengguna baru lupa untuk melanjutkan. Hidup bisa menjadi sibuk, motivasi menghilang, dan banyak hal terjadi. Bahkan pengguna lama pun mendapat manfaat dari perintah tersebut, meskipun sering kali, mereka sudah terkunci dalam lingkaran kebiasaan. Namun demikian, bahkan orang yang paling berkomitmen pun bisa secara tidak sengaja melewatkan satu hari pun. Sistem pukulan Anda pasti membutuhkan pengingat. Pengingat cepat yang paling sering digunakan adalah pemberitahuan push. Pengaturan waktu sangat penting saat bekerja dengan notifikasi push. Jenis aplikasi juga penting. Mengirim pemberitahuan pada jam 9 pagi yang mengatakan “Kamu belum berlatih hari ini” adalah hal yang aneh untuk sebuah aplikasi pembelajaran karena banyak hal yang harus dilakukan sehari sebelum mereka berpikir untuk menyelesaikan pelajaran. Namun, jika kita berbicara tentang aplikasi kebugaranmasuk akal dan bahkan mungkin diharapkan untuk diingatkan pada hari sebelumnya. Pemberitahuan push sangat bervariasi berdasarkan kategori aplikasi. Aplikasi kebugaran, misalnya, mendapatkan interaksi yang lebih tinggi dengan notifikasi di pagi hari (7–8 pagi), sementara aplikasi produktivitas mungkin berkinerja lebih baik di awal siang hari. Kuncinya adalah melakukan pengujian A/B terhadap waktu aplikasi Anda berdasarkan perilaku pengguna, bukan berasumsi bahwa segala sesuatunya bersifat universal. Apa yang berhasil untuk aplikasi meditasi mungkin tidak berfungsi untuk pelacak pengkodean. Metode cepat lainnya adalah titik merah pada ikon aplikasi dan bahkan widget aplikasi. Penelitiannya bervariasi, tetapi rata-rata orang membuka kunci perangkatnya antara 50-150 kali sehari (PDF). Jika pengguna melihat titik merah pada aplikasi atau widget yang menunjukkan rangkaian arus setiap kali mereka membuka kunci ponsel, hal ini meningkatkan komitmen. Hanya saja, jangan berlebihan; perintahnya harus berfungsi sebagai pengingat, bukan omelan. Rayakan Tonggak Sejarah Sistem pukulan beruntun harus mencoba merayakan pencapaian untuk menyalakan kembali emosi, terutama bagi pengguna yang sudah lama mengalami pukulan beruntun. Saat pengguna mencapai Hari ke 7, Hari ke 30, Hari ke 50, Hari ke 100, Hari ke 365, Anda harus mempermasalahkannya. Akui pencapaian — terutama bagi pengguna lama.

Seperti yang kita lihat sebelumnya, Duolingo menemukan jawabannya dan mengimplementasikan grafik animasi yang merayakan pencapaian dengan confetti. Beberapa platform bahkan memberikan imbalan bonus besar yang memvalidasi upaya pengguna. Dan hal ini dapat bermanfaat bagi aplikasi, sehingga pengguna cenderung membagikan pencapaian mereka secara publik di media sosial. Manfaat lainnya adalah antisipasi yang datang sebelum mencapai tonggak sejarah. Hal ini tidak hanya menjaga rekor tersebut tetap hidup tanpa henti; pengguna memiliki sesuatu untuk dinantikan. Gunakan Mekanisme Kasih Karunia Hidup tidak dapat diprediksi. Orang-orang menjadi terganggu. Sistem pukulan yang baik pasti mengharapkan ketidaksempurnaan. Salah satu ancaman psikologis terbesar terhadap sistem pukulan beruntun adalah hard reset ke nol setelah hanya satu hari yang terlewat. Sistem coretan yang “etis” seharusnya memberikan kelonggaran bagi pengguna. Katakanlah Anda memiliki pembelajaran catur berturut-turut selama 90 hari. Anda telah konsisten selama tiga bulan yang baik, dan suatu hari, ponsel Anda mati saat bepergian, dan begitu saja, 90 menjadi 0 — semuanya, semua upaya itu, terhapus, dan kemajuan pun lenyap. Pengguna mungkin benar-benar hancur. Pemikiran untuk membangunnya kembali dari awal sangatlah melemahkan semangat sehingga upaya tersebut tidak sepadan. Kemungkinan terburuknya, pengguna mungkin meninggalkan aplikasi setelah merasa gagal. Pertimbangkan untuk menambahkan mekanisme “rahmat” ke sistem coretan Anda:

Streak FreezeMemungkinkan pengguna dengan sengaja melewatkan satu hari tanpa penalti. Waktu Tambahan Berikan waktu beberapa jam (2–3) melewati batas waktu biasanya sebelum memicu pengaturan ulang. Model Peluruhan Alih-alih melakukan hard reset, coretan berkurang sedikit, misalnya, 10 hari dikurangi dari coretan per hari yang terlewat.

Gunakan Nada yang Mendorong Mari kita bandingkan dua pesan yang ditampilkan kepada pengguna saat rangkaian pesan terputus:

"Anda kehilangan rekor 42 hari berturut-turut. Mulailah dari awal." "Anda muncul selama 42 hari berturut-turut. Itu kemajuan yang luar biasa! Ingin mencoba lagi?"

Keduanya menyampaikan informasi yang sama, namun dampak emosionalnya berbeda. Pesan pertama kemungkinan besar akan membuat pengguna merasa kehilangan semangat dan menyebabkan mereka berhenti. Pesan kedua merayakan apa yang telah dicapai dan dengan lembut mendorong pengguna untuk mencoba lagi. Tantangan Desain Sistem Streak Sebelum kita membahas secara spesifik teknis dalam membangun sistem coretan, Anda harus menyadari tantangan yang mungkin Anda hadapi. Segalanya bisa menjadi rumit, seperti yang Anda duga. Menangani Zona Waktu Ada alasan mengapa penanganan waktu dan tanggal adalah salah satu konsep yang paling sulit ditangani oleh pengembang. Ada format, internasionalisasi, dan banyak lagi yang perlu dipertimbangkan. Izinkan saya menanyakan ini kepada Anda: Apa yang dianggap sebagai satu hari? Kita tahu bahwa dunia berada pada zona waktu yang berbeda-beda, dan sepertinya itu belum cukup, beberapa wilayah mempunyai Waktu Musim Panas (DST) yang terjadi dua kali setahun. Di mana Anda mulai menangani kasus-kasus rumit ini? Apa yang dianggap sebagai “awal” hari esok? Beberapa pengembang mencoba menghindari hal ini dengan menggunakan satu zona waktu pusat, seperti UTC. Bagi sebagian pengguna, ini akan memberikan hasil yang benar, namun bagi sebagian pengguna, ini mungkin meleset satu jam, dua jam, atau lebih. Ketidakkonsistenan ini merusak pengalaman pengguna. Pengguna tidak terlalu peduli dengan cara Anda menangani waktu di balik layar; yang mereka harapkan hanyalah jika mereka melakukan tindakan beruntun pada pukul 23.40, maka tindakan tersebut akan terjadi pada waktu yang tepat, sesuai konteksnya. Anda harus menentukan “satu hari” berdasarkan zona waktu lokal pengguna, bukan waktu server. Tentu, Anda bisa santai sajarutekan dan setel ulang garis secara global untuk semua pengguna pada tengah malam UTC, tetapi Anda sangat menciptakan ketidakadilan. Seseorang di California selalu memiliki delapan jam ekstra untuk menyelesaikan tugasnya dibandingkan seseorang yang tinggal di London. Itu adalah cacat desain yang tidak adil yang menghukum pengguna tertentu karena lokasinya. Lalu bagaimana jika orang di London tersebut hanya berkunjung, menyelesaikan tugas, lalu kembali ke zona waktu lain? Salah satu solusi efektif untuk semua ini adalah dengan meminta pengguna menyetel zona waktu mereka secara eksplisit selama orientasi (sebaiknya setelah autentikasi pertama). Sebaiknya sertakan catatan halus bahwa memberikan informasi zona waktu hanya digunakan agar aplikasi dapat melacak kemajuan secara akurat, bukan digunakan sebagai data identitas pribadi. Dan merupakan ide bagus lainnya untuk menjadikannya pengaturan yang dapat diubah. Saya menyarankan agar siapa pun menghindari penanganan logika zona waktu secara langsung dalam suatu aplikasi. Gunakan pustaka tanggal yang terbukti benar, seperti Moment.js atau pytz (Python), dll. Tidak perlu menemukan kembali roda untuk sesuatu yang rumit seperti ini. Kasus Hari dan Tepi yang Terlewatkan Tantangan lain yang harus Anda khawatirkan adalah kasus-kasus edge yang tidak terkendali seperti pengguna ketiduran, waktu henti server, kelambatan, kegagalan jaringan, dan sebagainya. Menggunakan gagasan tentang mekanisme kasih karunia, seperti yang telah kita bahas sebelumnya, dapat membantu. Masa tenggang selama dua jam mungkin dapat membantu pengguna dan pengembang, dalam arti bahwa pengguna tidak akan dihukum berat karena keadaan hidup yang tidak dapat dikendalikan. Bagi pengembang, jendela rahmat berguna pada saat-saat tak terkendali ketika server mati di tengah malam. Yang terpenting, jangan pernah mempercayai klien. Selalu validasi di sisi server. Server harus menjadi satu-satunya sumber kebenaran. Pencegahan Kecurangan Sekali lagi, saya tidak bisa cukup menekankan hal ini: Pastikan untuk memvalidasi semuanya di sisi server. Pengguna adalah manusia, dan manusia bisa saja berbuat curang jika diberi kesempatan. Hal ini tidak dapat dihindari. Anda dapat mencoba:

Menyimpan semua tindakan dengan stempel waktu UTC. Klien dapat mengirimkan waktu lokalnya, namun server dapat segera mengonversinya ke UTC dan memvalidasi terhadap waktu server. Dengan begitu, jika stempel waktu klien terlalu jauh, sistem dapat menolaknya sebagai kesalahan, dan UI dapat meresponsnya dengan tepat. Menggunakan pelacakan berbasis peristiwa. Dengan kata lain, simpan catatan setiap tindakan dengan metadata termasuk informasi seperti ID pengguna, jenis tindakan yang dilakukan, serta stempel waktu dan zona waktu. Ini membantu validasi.

Membangun Mesin Sistem Streak Ini bukan tutorial kode, jadi saya akan menghindari memberikan banyak kode kepada Anda. Saya akan menjaga hal ini tetap praktis dan menjelaskan bagaimana hal-hal secara umum mengoperasikan mesin sistem beruntun dalam hal arsitektur, aliran, dan keandalan. Arsitektur Inti Seperti yang telah saya katakan beberapa kali, jadikan server sebagai satu-satunya sumber kebenaran untuk data beruntun. Arsitekturnya bisa seperti ini di server:

Simpan data setiap pengguna dalam database. Simpan penyimpanan coretan saat ini (default sebagai 0) sebagai bilangan bulat. Simpan preferensi zona waktu, yaitu string Zona Waktu IANA (baik secara implisit dari stempel waktu lokal atau secara eksplisit dengan meminta pengguna memilih zona waktu mereka). Misalnya, “Amerika/New_York”. Tangani semua logika untuk menentukan apakah pukulan beruntun berlanjut atau berhenti, dengan pemeriksaan zona waktu yang relatif terhadap zona waktu lokal pengguna.

Sementara itu, di sisi klien:

Menampilkan coretan saat ini, biasanya diambil dari server. Kirim tindakan yang dilakukan dalam bentuk metadata ke server untuk memvalidasi apakah pengguna benar-benar menyelesaikan tindakan beruntun yang memenuhi syarat. Berikan umpan balik visual berdasarkan respons server.

Jadi, singkatnya, otaknya ada di server, dan kliennya untuk keperluan tampilan dan pengiriman acara. Hal ini menghemat banyak kegagalan dan kasus edge, serta membuat pembaruan dan perbaikan menjadi lebih mudah. Aliran Logis Mari kita simulasikan panduan tentang cara kerja mesin sistem coretan minimal yang efisien saat pengguna menyelesaikan suatu tindakan:

Pengguna menyelesaikan tindakan pukulan yang memenuhi syarat. Klien mengirimkan peristiwa ke server sebagai metadata. Ini bisa berupa "Pengguna X menyelesaikan tindakan Y pada stempel waktu Z". Server menerima acara ini dan melakukan validasi dasar. Apakah ini pengguna sungguhan? Apakah mereka diautentikasi? Apakah tindakan tersebut sah? Apakah zona waktunya konsisten? Jika lolos, server akan mengambil data coretan pengguna dari database. Kemudian, konversikan stempel waktu tindakan yang diterima ke zona waktu lokal pengguna. Biarkan server membandingkan tanggal kalender (bukan stempel waktu) di zona waktu lokal pengguna: Jika pada hari yang sama, maka tindakan tersebut mubazir dan tidak ada perubahan pada hari tersebutgaris. Jika keesokan harinya, pukulannya diperpanjang dan bertambah 1. Jika ada jeda lebih dari satu hari, pukulan tersebut akan terputus. Namun, di sinilah Anda dapat menerapkan mekanisme rahmat. Jika mekanisme tenggang terlewat, setel ulang pukulan ke 1.

Jika Anda memilih untuk menyimpan data historis untuk pencapaian pencapaian, perbarui variabel seperti “rekor terpanjang” atau “total hari aktif”. Server kemudian memperbarui database dan merespons klien. Sesuatu seperti ini:

{ "garis_saat ini": 48, "garis_terpanjang": 50, "total_hari_aktif": 120, "streak_extend": benar, }

Sebagai tindakan lebih lanjut, server harus mencoba lagi atau menolak dan memberi tahu klien jika ada yang gagal selama proses tersebut. Membangun Ketahanan Seperti disebutkan sebelumnya, pengguna yang mengalami kekalahan beruntun karena bug atau downtime server adalah UX yang buruk, dan pengguna tidak akan menanggung akibatnya. Oleh karena itu, sistem coretan Anda harus memiliki perlindungan untuk skenario tersebut. Jika server tidak aktif karena pemeliharaan (atau alasan apa pun), pertimbangkan untuk memberikan waktu tambahan sementara untuk memperbaikinya sehingga tindakan dapat dikirimkan terlambat dan tetap dihitung. Anda juga dapat memilih untuk memberi tahu pengguna, terutama jika situasinya dapat memengaruhi rangkaian yang sedang berlangsung. Catatan: Buat pintu belakang admin tempat data dapat dipulihkan secara manual. Bug tidak bisa dihindari, dan beberapa pengguna akan menghubungi aplikasi Anda atau menghubungi dukungan agar kesalahan mereka gagal karena alasan yang tidak dapat mereka kendalikan. Anda seharusnya dapat memulihkan coretan tersebut secara manual jika, setelah diselidiki, pengguna benar. Kesimpulan Satu hal yang jelas: coretan sangat berpengaruh karena cara kerja psikologi manusia pada tingkat fundamental. Sistem pukulan terbaik di luar sana adalah sistem yang tidak dipikirkan secara sadar oleh pengguna. Hal ini sudah menjadi rutinitas yang memberikan hasil langsung atau kemajuan yang terlihat, seperti menyikat gigi, yang menjadi kebiasaan rutin. Dan saya hanya akan mengatakannya: Tidak semua produk memerlukan sistem coretan. Haruskah Anda memaksakan konsistensi hanya karena Anda menginginkan pengguna aktif harian? Jawabannya mungkin “tidak”.

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