أنا متأكد من أنك سمعت عن الخطوط أو استخدمت تطبيقًا بها. ولكن هل تساءلت يومًا عن سبب شهرة الخطوط وقوتها؟ حسنًا، هناك أمر واضح وهو أن التطبيقات تحتاج إلى أكبر قدر ممكن من انتباهك، ولكن بصرف النظر عن ذلك، هل تعلم أنه عندما قدم تطبيق التعلم الشهير Duolingo أدوات iOS لعرض الخطوط، ارتفع التزام المستخدم بنسبة 60٪. يمثل ستين بالمائة تحولًا هائلاً في السلوك ويوضح كيف يمكن استخدام أنماط "الخط" لزيادة المشاركة وزيادة الاستخدام. في أبسط صوره، الخط هو عدد الأيام المتتالية التي يكمل فيها المستخدم نشاطًا معينًا. يعرّفها بعض الأشخاص أيضًا على أنها عادة "مُلعبة" أو مقياس مصمم لتشجيع الاستخدام المستمر. لكن الخطوط تتجاوز كونها مقياسًا أو سجلًا في التطبيق؛ إنها نفسية أكثر من ذلك. من السهل التأثير على الغرائز البشرية بالعوامل الصحيحة. انظر إلى هذه العوامل الثلاثة: التقدم، والفخر، والخوف من الضياع (المعروف عادة باسم FOMO). ما هو القاسم المشترك بين كل هذه؟ جهد. كلما بذلت المزيد من الجهد في شيء ما، كلما زاد هويتك، وهذه هي الطريقة التي تدخل بها الخطوط إلى عالم علم النفس السلوكي. الآن، مع القوة العظمى تأتي مسؤولية كبيرة، ولهذا السبب، هناك جانب مظلم للخطوط. في هذه المقالة، سنتناول مبادئ علم النفس وتجربة المستخدم والتصميم وراء بناء نظام خط فعال. سننظر في (1) لماذا تستجيب أدمغتنا بشكل غريزي تقريبًا لنشاط الخطوط، (2) كيفية تصميم الخطوط بطرق تساعد المستخدمين حقًا، و (3) العمل الفني المتضمن في بناء نمط الخطوط. علم النفس وراء الشرائط لتصميم وبناء نظام خط فعال، نحتاج إلى فهم كيفية توافقه مع كيفية توصيل أدمغتنا. مثلاً، ما الذي يجعلها فعالة إلى الحد الذي يجعلنا نشعر بالكثير من التفاني الشديد لحماية خطوطنا؟ هناك ثلاثة مبادئ علم نفس مثيرة للاهتمام وموثقة جيدًا تدعم ما يجعل الخطوط قوية جدًا ومسببة للإدمان. النفور من الخسارة ربما تكون هذه هي القوة الأقوى وراء الخطوط. أقول هذا لأنه في معظم الأوقات، لا يمكنك تقريبًا تجنب ذلك في الحياة. فكر في الأمر بهذه الطريقة: إذا أعطاك صديق 100 دولار، ستكون سعيدًا. ولكن إذا خسرت 100 دولار من محفظتك، فسيضر ذلك أكثر بكثير. الوزن العاطفي لتلك المواقف ليس متساويًا. الخسارة تؤلم أكثر من المكسب الذي يشعرك بالسعادة. لنأخذ الأمر أبعد من ذلك ونقول إنني أعطيك 100 دولار وأطلب منك أن تلعب مقامرة. هناك احتمال بنسبة 50% أن تربح 100 دولار أخرى وفرصة بنسبة 50% أن تخسر الـ 100 دولار الأصلية. هل ستأخذه؟ لن أفعل ذلك. معظم الناس لن يفعلوا ذلك. هذا هو النفور من الخسارة. إذا فكرت في الأمر، فهو منطقي، ومفهوم، إنه إنساني. المفهوم الكامن وراء النفور من الخسارة هو أننا نشعر بألم خسارة شيء ما ضعف ما نشعر به من متعة الحصول على شيء له نفس القيمة. ومن الناحية النفسية، فإن الخسارة تدوم أكثر من المكاسب. ربما ترى كيف يرتبط هذا بالشرائط. لبناء خط ملحوظ، فإنه يتطلب جهدا؛ مع نمو الخط، يبدأ الدافع وراءه في التلاشي؛ أو بالأحرى، يبدأ بالتحول إلى أمر ثانوي. إليك مثال: لنفترض أن صديقك لديه سلسلة من ثلاثة أيام لإغلاق "حلقات الحركة" الخاصة به على Apple Watch الخاصة به. ليس لديهم ما يخسرونه تقريبًا بخلاف الرغبة في تحقيق هدفهم والثبات. وفي الوقت نفسه، لديك سلسلة مذهلة مدتها 219 يومًا. من المحتمل أنك محاصر بالخوف من فقدانه. على الأرجح أنك لا تفكر في الإنجاز في هذه المرحلة؛ يتعلق الأمر أكثر بحماية مجهودك المستثمر، وهذا هو النفور من الخسارة. يشرح Duolingo كيف يساهم النفور من الخسارة في إحجام المستخدم عن كسر خط طويل، حتى في أكثر أيامه كسلاً. بطريقة ما، يمكن أن يتحول الخط إلى عادة عندما يستقر النفور من الخسارة. نموذج سلوك فوج (B = MAP) والآن بعد أن فهمنا الخوف من خسارة الجهد المبذول في خطوط أطول، هناك سؤال آخر هو: ما الذي يجعلنا نفعل ذلك في المقام الأول، يومًا بعد يوم، حتى قبل أن تصبح السلسلة كبيرة؟ هذا هو ما يدور حوله نموذج سلوك فوج. انها بسيطة نسبيا. يحدث السلوك (ب) فقط عندما تتماشى ثلاثة عوامل - الدافع (م)، والقدرة (أ)، والحث (ع) - في نفس اللحظة. وبالتالي فإن المعادلة B=MAP. إذا كان أي من هذه العوامل، أو حتى عامل واحد، مفقودًا في تلك اللحظة، فلن يحدث السلوك. لذلك، لكي يكون نظام المتتاليات فعالاً ومتكررًا، يجب أن تتوافر العوامل الثلاثة جميعها: الدافع: هذا أمر هش وليس شيئًا موجودًا باستمرار. هناك أيام عندما تكونمتحمس لتعلم اللغة الإسبانية، وفي الأيام التي لا تشعر فيها حتى بذرة من قوة الإرادة لتعلم اللغة. إن الدافع في حد ذاته لبناء العادة هو أمر غير موثوق به ومعركة خاسرة منذ اليوم الأول. القدرة للتعويض عن القيود المفروضة على الدافع، والقدرة أمر بالغ الأهمية. وفي هذا السياق، تعني القدرة سهولة العمل، أي أن يكون الجهد سهلاً إلى حد أنه من غير الواقعي القول بأنه غير ممكن. تستخدم معظم التطبيقات هذا عن قصد. تحتاج Apple Fitness إلى الوقوف لمدة دقيقة واحدة فقط في الساعة لتربح علامة نحو هدف الوقوف الخاص بك. يحتاج Duolingo إلى درس واحد مكتمل فقط. هذه المهام لا تتطلب كل هذا الجهد الكبير. إن الحاجز منخفض جدًا لدرجة أنه حتى في أسوأ أيامك، يمكنك القيام بذلك. لكن الجهد المشترك للخط المستمر هو المكان الذي تبدأ فيه فكرة خسارة هذا الخط. موجههذا هو ما يكمل المعادلة. البشر ينسون بطبيعتهم، لذا نعم، يمكن للقدرة أن تصل بنا إلى 90% من هذه النسيان. لكن المطالبة تذكرنا بالتصرف. تكون الخطوط ثابتة حسب التصميم، لذا يجب تذكير المستخدمين باستمرار بالتصرف. لمعرفة مدى قوة المطالبة، أجرى Duolingo اختبار A/B لمعرفة ما إذا كانت الشارة الحمراء الصغيرة على أيقونة التطبيق تزيد من الاستخدام المتسق. أنتجت زيادة بنسبة 6٪ في المستخدمين النشطين يوميًا. مجرد شارة حمراء. قيود النموذج مع كل هذا، هناك قيود على نموذج فوغ حيث لاحظ النقاد والأبحاث الحديثة أن التصميم الذي يعتمد بشكل كبير على المطالبات، مثل الإخطارات العدوانية، يخاطر بخلق إرهاق عقلي. قد تؤدي الإشعارات المستمرة والعمل الإضافي إلى توقف المستخدمين عن العمل. لذا، انتبه لذلك. تأثير زيجارنيك ما هو شعورك عندما تترك مهمة المشروع نصف مكتملة؟ وهذا يزعج الكثير من الناس لأن المهام غير المكتملة تشغل مساحة ذهنية أكبر من الأشياء التي نكملها. عندما ينتهي شيء ما وينتهي، فإننا نميل إلى نسيانه. عندما نترك شيئًا ما دون القيام به، فإنه يميل إلى التأثير على أذهاننا. وهذا هو بالضبط سبب استخدام المنتجات الرقمية لمؤشرات التقدم المصطنعة، مثل شريط إكمال الملف الشخصي في Upwork، للسماح للمستخدم بمعرفة أن ملفه الشخصي "مكتمل بنسبة 60%" فقط. إنه يدفع المستخدم لإنهاء ما بدأه.
دعونا ننظر إلى مثال آخر. لديك خمس مهام في تطبيق قائمة المهام، وفي نهاية اليوم، يمكنك التحقق من أربعة منها فقط كمكتملة. سيشعر الكثير منا بعدم الإنجاز بسبب تلك المهمة غير المكتملة. وهذا هو تأثير زيجارنيك. تم توضيح تأثير زيجارنيك من قبل عالم النفس بلوما زيجارنيك، الذي وصف أننا نميل إلى الحفاظ على المهام غير المكتملة نشطة في ذاكرتنا لفترة أطول من المهام المكتملة. نمط الخط يستغل بشكل طبيعي هذا في تصميم UX. لنفترض أنك في اليوم 63 من سلسلة التعلم. عند هذه النقطة، أنت في نمط مستمر من الأعمال غير المكتملة. نادرًا ما ينسى عقلك ذلك لأنه يجلس في الجزء الخلفي من عقلك. في هذه المرحلة، يصبح عقلك هو من يرسل لك الإشعارات. عندما تجمع هذه القوى النفسية معًا، تبدأ في فهم سبب عدم كون الخطوط مجرد ميزة عادية للتطبيق؛ فهم قادرون على إعادة تشكيل السلوك البشري. لكن في مكان ما على طول الخط - لا أستطيع أن أقول بالضبط متى، حيث أن الأمر يختلف من شخص لآخر - تصل الأمور إلى نقطة يتحول فيها الخط من "المرح" إلى شيء تشعر أنه لا يمكنك تحمل خسارته. أنت لا تريد أن يضيع 58 يومًا من الجهد سدى، أليس كذلك؟ وهذا ما يجعل نظام الخط فعالاً. إذا تم تنفيذها بشكل صحيح، تساعد الخطوط المستخدمين على بناء عادات مذهلة تحقق الهدف. يمكن القراءة يوميًا أو الذهاب إلى صالة الألعاب الرياضية باستمرار. هذه الأفعال المتكررة (أحيانًا صغيرة) تتراكم بمرور الوقت وتصبح واضحة في حياتنا اليومية. ولكن هناك وجهان لكل عملة. الخط الرفيع بين العادة والإكراه إذا كنت تتابع الأمر، فيمكنك بالفعل معرفة أن هناك جانبًا مظلمًا لأنظمة التتبع. تكوين العادة يدور حول الاتساق مع هدف متكرر. أما الإكراه فهو الاستمرار في العمل على هدف لم تعد هناك حاجة إليه ولكن تم التمسك به بسبب الخوف أو الضغط. إنه خط رفيع للغاية. أنت تغسل أسنانك كل صباح دون تفكير؛ إنه أمر تلقائي وغريزي، وله هدف واضح وهو الحصول على نفس جيد. هذا خط يشكل عادة جيدة. يمنح نظام الخط الأخلاقي المستخدمين مساحة للتنفس. إذا لم تقم بالتنظيف بالفرشاة في الصباح لسبب ما، فيمكنك القيام بالتنظيف عند الظهر. يُسمح بالنقص دون خوف من خسارة جهد طويل. يأخذ الإكراه الاتجاه المعاكس، حيث يجعلك تشعر بالقلق، وتشعر بالذنب أو حتى بالإرهاق، وفي بعض الأحيان، تشعر وكأنك لم تنجز أي شيء، على الرغم من كل ما تبذلونه من جهد.عمل. أنت لا تتصرف لأنك تريد ذلك، ولكن لأنك تشعر بالرعب اللاواعي من رؤية تقدمك يتراجع إلى الصفر. حتى أن أحدهم وصف ذلك بشكل مثالي، "شعرت أنني كنت أغش، لكنني ببساطة لم أهتم. أنا لا شيء بدون خطي". يُظهر هذا خطوط الثبات القصوى التي يمكن أن تحدثها على الفرد. إلى الحد الذي يبدأ فيه المستخدمون في ربط قيمتهم الذاتية بمقياس تعسفي بدلاً من الهدف الأصلي أو السبب الذي دفعهم إلى بدء الخط في المقام الأول. يصبح الخط هويتهم، وليس فقط ما يفعلونه. يجب أن يكون نظام الخط الأخلاقي المصمم جيدًا بمثابة تشجيع للمستخدم، وليس ضغطًا أو التزامًا. وهذا يتعلق بالتوازن بين الدوافع الجوهرية والخارجية. قد يدفع التحفيز الخارجي (المكافآت الخارجية، وتجنب العقاب) المستخدمين إلى البدء، لكن التحفيز الداخلي (القيام بالمهمة من أجل هدف شخصي مثل تعلم اللغة الإسبانية لأنك تريد حقًا التواصل مع شخص عزيز عليك) يكون أقوى بالنسبة للمشاركة طويلة المدى. يجب أن ينجذب النظام الجيد نحو الدوافع الجوهرية مع الاستخدام الدقيق للعناصر الخارجية، أي تذكير المستخدمين بالمدى الذي وصلوا إليه، وليس تهديدهم بما قد يخسرونه. مرة أخرى، إنه خط رفيع. الاختبار البسيط عند تصميم نظام خطي هو أن تأخذ بعض الوقت وتفكر فيما إذا كانت منتجاتك تجني المال عن طريق بيع حلول للقلق الذي خلقه منتجك. إذا كانت الإجابة بنعم، فهناك احتمال كبير أنك تستغل المستخدمين. لذلك يصبح السؤال التالي، إذا اخترت استخدام الخط، كيف يمكنني تصميمه بطريقة تساعد المستخدمين حقًا على تحقيق أهدافهم؟ تجربة المستخدم لتصميم نظام الخط الجيد أعتقد أن هذا هو المكان الذي تقوم فيه معظم المشاريع بتثبيت نظام خط فعال أو إفساده تمامًا. دعنا نستعرض بعض مبادئ تجربة المستخدم لتصميم الخطوط الجيدة. يبقيه جهد ربما سمعت هذا من قبل، ربما من كتب مثل Atomic Habits، ولكن من الجدير بالذكر أن إحدى أسهل الطرق التي يمكن من خلالها تكوين العادات هي جعل الإجراء صغيرًا وسهلاً. وهذا مشابه لعامل القدرة الذي ناقشناه في نموذج سلوك فوج. يجب أن تكون القاعدة الأولى لأي تصميم خطي هي جعل الإجراء المطلوب صغيرًا قدر الإمكان من الناحية الإنسانية مع الاستمرار في تحقيق التقدم. إذا كان العمل اليومي يتطلب قوة الإرادة لإكماله، فلن يتجاوز هذا الإجراء خمسة أيام. لماذا؟ لا يمكن تحفيزك لمدة خمسة أيام متتالية. مثال على ذلك: إذا قمت بتشغيل تطبيق للتأمل، فلن تحتاج إلى جعل المستخدمين يمرون بجلسة مدتها 20 دقيقة فقط للحفاظ على الخط. جرب دقيقة واحدة، وربما حتى شيئًا صغيرًا يصل إلى ثلاثين ثانية، بدلاً من ذلك. وكما يقول المثل، قطرات الماء الصغيرة تصنع المحيط العظيم). الجهود الصغيرة تتحول إلى إنجازات كبيرة مع مرور الوقت. ينبغي أن يكون هذا هو الهدف: إزالة الاحتكاك، خاصة عندما تكون اللحظة صعبة. عندما يشعر المستخدمون بالتوتر أو الإرهاق، دعهم يعرفون أن مجرد الظهور، حتى ولو لبضع ثوان، يعد بمثابة جهد. تقديم تعليقات مرئية واضحة البشر بصريون بطبيعتهم. في معظم الأوقات، نحتاج إلى رؤية شيء ما لنصدقه؛ هناك حاجة لتصور الأشياء لفهمها بشكل أفضل ووضع الأمور في نصابها الصحيح. ولهذا السبب غالبًا ما تستخدم أنماط الخطوط العناصر المرئية، مثل الرسوم البيانية وعلامات الاختيار وحلقات التقدم والشبكات لتصور الجهد المبذول. انظر إلى الرسم البياني لمساهمة GitHub. إنه تصور بسيط للاتساق. ومع ذلك، يتنفسه المطورون مثل الأكسجين.
المفتاح هو عدم جعل نظام الخطوط يبدو مجردًا. يجب أن تشعر بأنها حقيقية ومكتسبة. على سبيل المثال، تستخدم حلقات نشاط Duolingo وApple Fitness تصميمات رسوم متحركة نظيفة عند الانتهاء من خط ما، ويعرض GitHub بيانات تاريخية عن اتساق المستخدم مع مرور الوقت.
استخدم التوقيت الجيد لقد ذكرت سابقًا أن البشر عمومًا ينسون بطبيعتهم، ويمكن أن تساعد هذه المحفزات في الحفاظ على الزخم للأمام. بدون المطالبات، ينسى معظم المستخدمين الجدد الاستمرار. يمكن أن تصبح الحياة مزدحمة، ويختفي الدافع، وتحدث الأشياء. حتى المستخدمين لفترة طويلة يستفيدون من المطالبات، على الرغم من أنهم في معظم الأحيان يكونون محبوسين بالفعل داخل حلقة العادة. ومع ذلك، فحتى أكثر الأشخاص التزامًا يمكن أن يفوتهم يومًا عن غير قصد. يحتاج نظام الخط الخاص بك بالتأكيد إلى تذكيرات. التذكيرات السريعة الأكثر استخدامًا هي الإشعارات الفورية. التوقيت مهم حقًا عند العمل مع إشعارات الدفع. ونوع التطبيق مهم أيضًا. يعد إرسال إشعار في الساعة 9 صباحًا يقول "أنت لم تتدرب اليوم" أمرًا غريبًا بالنسبة لتطبيق تعليمي لأن الكثيرين لديهم أشياء يجب القيام بها في اليوم قبل أن يفكروا في إكمال الدرس. إذا كنا نتحدث عن تطبيق للياقة البدنية، فهو كذلكأمر معقول وربما من المتوقع أن يتم تذكيرك في وقت مبكر من اليوم. تختلف إشعارات الدفع بشكل كبير حسب فئة التطبيق. على سبيل المثال، تشهد تطبيقات اللياقة البدنية تفاعلًا أكبر مع إشعارات الصباح الباكر (من 7 إلى 8 صباحًا)، في حين قد يكون أداء تطبيقات الإنتاجية أفضل في وقت مبكر من الظهر. المفتاح هو اختبار أ/ب لتوقيت تطبيقك بناءً على سلوكيات المستخدمين بدلاً من افتراض أن الأمور مقاس واحد يناسب الجميع. ما يصلح لتطبيق التأمل قد لا يصلح لمتتبع الترميز. الطرق السريعة الأخرى هي النقاط الحمراء على أيقونة التطبيق وحتى عناصر واجهة المستخدم الخاصة بالتطبيق. تختلف الدراسات، لكن الشخص العادي يفتح أجهزته ما بين 50 إلى 150 مرة في اليوم (PDF). إذا رأى المستخدم نقطة حمراء على أحد التطبيقات أو الأدوات التي تشير إلى خط حالي في كل مرة يفتح فيها هاتفه، فهذا يزيد من الالتزام. فقط لا تبالغي؛ يجب أن تكون المطالبة بمثابة تذكير، وليس تذمرًا. احتفل بالمعالم يجب أن يحاول نظام الخط الاحتفال بالمراحل الرئيسية لإعادة إشعال المشاعر، خاصة بالنسبة للمستخدمين في عمق الخط. عندما يصل المستخدم إلى اليوم 7، اليوم 30، اليوم 50، اليوم 100، اليوم 365، يجب أن تستفيد كثيرًا من ذلك. الاعتراف بالإنجازات - خاصة للمستخدمين لفترة طويلة.
كما رأينا سابقًا، اكتشف Duolingo هذا الأمر ونفذ رسمًا متحركًا يحتفل بالمعالم الرئيسية باستخدام قصاصات الورق. حتى أن بعض المنصات تقدم مكافآت إضافية كبيرة تثبت صحة جهود المستخدمين. ويمكن أن يكون هذا مفيدًا للتطبيقات، بحيث يميل المستخدمون إلى مشاركة إنجازاتهم بشكل عام على وسائل التواصل الاجتماعي. فائدة أخرى هي الترقب الذي يأتي قبل الوصول إلى المعالم. لا يتعلق الأمر فقط بإبقاء الخط حيًا إلى ما لا نهاية؛ لدى المستخدمين شيء يتطلعون إليه. استخدم آليات النعمة الحياة لا يمكن التنبؤ بها. يتشتت انتباه الناس. أي نظام خط جيد يجب أن يتوقع النقص. أحد أكبر التهديدات النفسية لنظام الخط هو إعادة التعيين الثابت إلى الصفر بعد يوم واحد ضائع. يجب أن يوفر نظام الخط "الأخلاقي" للمستخدم بعض الركود. لنفترض أن لديك سلسلة من تعلم الشطرنج لمدة 90 يومًا. لقد كنت ثابتًا لمدة ثلاثة أشهر جيدة، وفي أحد الأيام، توقف هاتفك أثناء السفر، وهكذا، يصبح 90 0 - يتم مسح كل شيء، كل هذا الجهد، ويختفي التقدم. قد يكون المستخدم مدمرًا تمامًا. إن فكرة إعادة بنائه من الصفر أمر محبط للغاية لدرجة أن الجهد المبذول لا يستحق كل هذا العناء. في أسوأ الأحوال، قد يتخلى المستخدم عن التطبيق بعد أن يشعر بالفشل. فكر في إضافة آلية "النعمة" إلى نظام الخط الخاص بك:
Streak Freeze السماح للمستخدمين بتفويت يوم واحد عمدًا دون فرض عقوبات. الوقت الإضافي: اسمح ببضع ساعات (2-3) بعد الموعد النهائي المعتاد قبل بدء عملية إعادة التعيين. نماذج الاضمحلال بدلاً من إعادة التعيين الثابت، ينخفض الخط بمقدار صغير، على سبيل المثال، يتم خصم 10 أيام من الخط لكل يوم ضائع.
استخدم لهجة مشجعة دعونا نقارن بين رسالتين تظهران للمستخدمين عند انقطاع الخط:
"لقد فقدت خطك الذي استمر 42 يومًا. ابدأ من جديد." "لقد حضرت لمدة 42 يومًا على التوالي. هذا تقدم مذهل! هل تريد تجربة ذلك مرة أخرى؟"
كلاهما ينقل نفس المعلومات، لكن التأثير العاطفي مختلف. من المرجح أن تجعل الرسالة الأولى المستخدم يشعر بالإحباط وتؤدي إلى الإقلاع عن التدخين. تحتفل الرسالة الثانية بما تم تحقيقه بالفعل وتشجع المستخدم بلطف على المحاولة مرة أخرى. تحديات تصميم أنظمة الخط قبل أن نخوض في التفاصيل الفنية لبناء نظام الخط، يجب أن تكون على دراية بالتحديات التي قد تواجهها. يمكن أن تتعقد الأمور، كما قد تتوقع. التعامل مع المناطق الزمنية هناك سبب يجعل التعامل مع الوقت والتاريخ من بين أصعب المفاهيم التي يتعامل معها المطورون. هناك التنسيق، والتدويل، وأكثر من ذلك بكثير للنظر فيها. دعني أسألك هذا: ما الذي يعتبر يومًا؟ نحن نعلم أن العالم يعمل وفق مناطق زمنية مختلفة، وكما لو أن هذا لا يكفي، فإن بعض المناطق لديها التوقيت الصيفي (DST) الذي يحدث مرتين في السنة. من أين تبدأ في التعامل مع حالات الحافة هذه؟ ما الذي يعتبر "بداية" الغد؟ يحاول بعض المطورين تجنب ذلك باستخدام منطقة زمنية مركزية واحدة، مثل التوقيت العالمي المنسق (UTC). بالنسبة لبعض المستخدمين، قد يؤدي ذلك إلى نتائج صحيحة، ولكن بالنسبة للبعض الآخر، قد يستغرق الأمر ساعة أو ساعتين أو أكثر. هذا التناقض يدمر تجربة المستخدم. لا يهتم المستخدمون كثيرًا بكيفية تعاملك مع الوقت خلف الكواليس؛ كل ما يتوقعونه هو أنهم إذا قاموا بإجراء خطي في الساعة 11:40 مساءً، فيجب أن يتم تسجيله في ذلك الوقت المحدد، في سياقهم. يجب عليك تحديد "يوم واحد" استنادًا إلى المنطقة الزمنية المحلية للمستخدم، وليس وقت الخادم. بالتأكيد، يمكنك أن تأخذ ما هو سهلقم بتوجيه وإعادة تعيين الخطوط عالميًا لجميع المستخدمين في منتصف الليل بالتوقيت العالمي المنسق، لكنك تخلق ظلمًا كبيرًا. دائمًا ما يكون لدى شخص ما في كاليفورنيا ثماني ساعات إضافية لإنجاز مهمته مقارنة بشخص يعيش في لندن. وهذا عيب غير عادل في التصميم يعاقب بعض المستخدمين بسبب موقعهم. وماذا لو كان ذلك الشخص في لندن في زيارة فقط، وأكمل مهمة، ثم عاد إلى منطقة زمنية أخرى؟ أحد الحلول الفعالة لكل هذه الأمور هو مطالبة المستخدمين بتعيين منطقتهم الزمنية بشكل صريح أثناء الإعداد (ويفضل أن يكون ذلك بعد المصادقة الأولى). إنها فكرة جيدة تضمين ملاحظة دقيقة مفادها أن توفير معلومات المنطقة الزمنية يُستخدم فقط للتطبيق لتتبع التقدم بدقة، بدلاً من استخدامه كبيانات تعريف شخصية. إنها فكرة جيدة أخرى أن تجعل هذا الإعداد قابلاً للتغيير. أقترح أن يتجنب أي شخص التعامل مباشرة مع منطق المنطقة الزمنية في التطبيق. استخدم مكتبات التاريخ المجربة والحقيقية، مثل Moment.js أو pytz (Python)، وما إلى ذلك. ليست هناك حاجة لإعادة اختراع العجلة لشيء معقد مثل هذا. الأيام الضائعة وحالات الحافة التحدي الآخر الذي يجب أن تقلق بشأنه هو حالات الحافة التي لا يمكن السيطرة عليها مثل نوم المستخدمين الزائد، وتوقف الخادم، والتأخر، وفشل الشبكة، وما إلى ذلك. إن استخدام فكرة آليات النعمة، مثل تلك التي ناقشناها سابقًا، يمكن أن يساعد. قد تساعد فترة السماح لمدة ساعتين كلاً من المستخدم والمطور، بمعنى أنه لا يتم معاقبة المستخدمين بشكل صارم بسبب ظروف الحياة التي لا يمكن السيطرة عليها. بالنسبة للمطورين، تعد نوافذ السماح مفيدة في تلك اللحظات التي لا يمكن السيطرة عليها عندما يتعطل الخادم في منتصف الليل. قبل كل شيء، لا تثق بالعميل أبدًا. التحقق دائمًا من جانب الخادم. يجب أن يكون الخادم هو المصدر الوحيد للحقيقة. منع الغش مرة أخرى، لا أستطيع التأكيد بما فيه الكفاية على هذا: تأكد من التحقق من صحة كل شيء من جانب الخادم. المستخدمون هم بشر، وقد يغش البشر إذا أتيحت لهم الفرصة. إنه أمر لا مفر منه. قد تحاول:
تخزين كافة الإجراءات باستخدام الطوابع الزمنية UTC. يمكن للعميل إرسال التوقيت المحلي الخاص به، ولكن يمكن للخادم تحويل ذلك على الفور إلى UTC والتحقق من صحته مقابل وقت الخادم. وبهذه الطريقة، إذا كان الطابع الزمني للعميل بعيدًا بشكل مثير للريبة، فيمكن للنظام رفضه باعتباره خطأ، ويمكن لواجهة المستخدم الاستجابة وفقًا لذلك. استخدام التتبع المستند إلى الأحداث. بمعنى آخر، قم بتخزين سجل لكل إجراء باستخدام البيانات الوصفية بما في ذلك معلومات مثل معرف المستخدم ونوع الإجراء الذي تم تنفيذه والطابع الزمني والمنطقة الزمنية. وهذا يساعد في التحقق من الصحة.
بناء محرك نظام خط هذا ليس برنامجًا تعليميًا للتعليمات البرمجية، لذا سأتجنب إلقاء مجموعة من التعليمات البرمجية عليك. سأبقي هذا عمليًا وأصف كيفية تشغيل الأشياء بشكل عام لمحرك نظام متواصل فيما يتعلق بالهندسة المعمارية والتدفق والموثوقية. العمارة الأساسية كما قلت عدة مرات، اجعل الخادم هو المصدر الوحيد لحقيقة البيانات المتتالية. يمكن أن تسير البنية على النحو التالي على الخادم:
تخزين بيانات كل مستخدم في قاعدة بيانات. قم بتخزين مخزن الخط الحالي (الافتراضي هو 0) كعدد صحيح. قم بتخزين تفضيلات المنطقة الزمنية، أي سلسلة المنطقة الزمنية لـ IANA (إما ضمنيًا من الطابع الزمني المحلي أو صراحةً عن طريق مطالبة المستخدم بتحديد المنطقة الزمنية الخاصة به). على سبيل المثال، "أمريكا/نيويورك". تعامل مع كل المنطق لتحديد ما إذا كان الخط يستمر أم ينقطع، من خلال التحقق من المنطقة الزمنية المتعلقة بالمنطقة الزمنية المحلية للمستخدم.
وفي الوقت نفسه، على جانب العميل:
عرض الخط الحالي، الذي يتم جلبه عادةً من الخادم. أرسل الإجراء الذي تم تنفيذه في شكل بيانات تعريف إلى الخادم للتحقق من صحة ما إذا كان المستخدم قد أكمل بالفعل إجراء سلسلة مؤهلة. تقديم تعليقات مرئية بناءً على استجابات الخادم.
إذن، باختصار، العقل موجود على الخادم، والعميل موجود لأغراض العرض وإرسال الأحداث. وهذا يوفر عليك الكثير من حالات الفشل وحالات الحافة، بالإضافة إلى تسهيل التحديثات والإصلاحات. التدفق المنطقي دعونا نحاكي إرشادات حول كيفية عمل محرك نظام ذو كفاءة منخفضة عندما يكمل المستخدم إجراء ما:
يكمل المستخدم إجراء خط التأهل. يرسل العميل حدثًا إلى الخادم كبيانات وصفية. يمكن أن يكون هذا "أكمل المستخدم X الإجراء Y في الطابع الزمني Z". يتلقى الخادم هذا الحدث ويقوم بالتحقق الأساسي. هل هذا مستخدم حقيقي؟ هل تم التصديق عليهم؟ هل الإجراء صحيح؟ هل المنطقة الزمنية متسقة؟ إذا نجح هذا، يقوم الخادم باسترداد بيانات خط المستخدم من قاعدة البيانات. ثم قم بتحويل الطابع الزمني للإجراء المستلم إلى المنطقة الزمنية المحلية للمستخدم. اسمح للخادم بمقارنة تواريخ التقويم (وليس الطوابع الزمنية) بالمنطقة الزمنية المحلية للمستخدم: وإذا كان في نفس اليوم، فإن الإجراء يكون زائداً عن الحاجة ولا يوجد أي تغيير فيأثَر. إذا كان في اليوم التالي، فإن الخط يمتد ويزيد بمقدار 1. إذا كانت هناك فجوة لأكثر من يوم واحد، فإن الخط ينقطع. ومع ذلك، هذا هو المكان الذي يمكنك فيه تطبيق آليات النعمة. إذا فاتت آلية السماح، فقم بإعادة تعيين الخط إلى 1.
إذا اخترت حفظ البيانات التاريخية لإنجازات المعالم الرئيسية، فقم بتحديث المتغيرات مثل "أطول سلسلة" أو "إجمالي الأيام النشطة". يقوم الخادم بعد ذلك بتحديث قاعدة البيانات والرد على العميل. شيء من هذا القبيل:
{ "الخط_الحالي": 48، ""أطول_خط": 50، "إجمالي_الأيام_النشطة": 120، "streak_extending": صحيح، }
كإجراء إضافي، يجب على الخادم إما إعادة المحاولة أو الرفض وإعلام العميل عند فشل أي شيء أثناء العملية. البناء من أجل المرونة كما ذكرنا من قبل، فإن خسارة المستخدمين لسلسلة متتالية بسبب الأخطاء أو تعطل الخادم يعد أمرًا فظيعًا في تجربة المستخدم، ولا يتوقع المستخدمون أن يتحملوا اللوم بسبب ذلك. وبالتالي، يجب أن يتمتع نظام الخط الخاص بك بضمانات لهذه السيناريوهات. إذا كان الخادم معطلاً بسبب الصيانة (أو لأي سبب كان)، فكر في السماح لنافذة مؤقتة من الساعات الإضافية لإصلاحه حتى يمكن إرسال الإجراءات متأخرًا ولا يزال يتم احتسابها. يمكنك أيضًا اختيار إعلام المستخدمين، خاصةً إذا كان الموقف قادرًا على التأثير على سلسلة مستمرة. ملاحظة: قم بإنشاء باب خلفي للمشرف حيث يمكن استعادة البيانات يدويًا. الأخطاء أمر لا مفر منه، وقد يتصل بعض المستخدمين بتطبيقك أو يتواصلون معك لدعمهم في حالة انقطاع خطهم لسبب لا يمكنهم التحكم فيه. يجب أن تكون قادرًا على استعادة الخطوط يدويًا إذا كان المستخدم على حق بعد التحقيق. الاستنتاج يبقى شيء واحد واضحًا: إن الخطوط القوية حقًا بسبب كيفية عمل علم النفس البشري على المستوى الأساسي. أفضل نظام خط موجود هو النظام الذي لا يفكر فيه المستخدمون بوعي. لقد أصبح روتينًا يحقق نتائج فورية أو تقدمًا ملحوظًا، مثل تنظيف الأسنان، الذي يصبح عادة منتظمة. وسأقول ذلك فقط: ليست كل المنتجات تحتاج إلى نظام خطي. هل يجب عليك حقًا فرض الاتساق لمجرد أنك تريد مستخدمين نشطين يوميًا؟ ربما تكون الإجابة "لا".