الدروس · الدرس 4 من 5
العادات التي يفرضها التطبيق
السلوكيات الأربعة التي تعمل بالطريقة نفسها في كل شاشة: لوحة التأكيد، وسطر النشاط، والزرّ الذي يسمّي معطّله، والسجلّ الذي تُطفأ إجراءاته.
الدرس 4 من 5 · 18 د
أربعة أشياء لا تتغيّر أبداً
البرامج تعلّم عادات سواء قصدت أم لم تقصد. فإن كان الإجراء المدمّر على بُعد نقرة واحدة، تعلّم الناس أن ينقروا بحذر ثم كفّوا عن الحذر. وهذا التطبيق يراهن الرهان المعاكس على أربعة سلوكيات بعينها، ويطبّق الأربعة في كل مكان. تعلّمها هنا مرّة واحدة فيكفّ بقية النظام عن مفاجأتك.
وتستحقّ الأربعة التسمية سلفاً، لأن كل درس لاحق في هذا المسار يفترضها. لا شيء يُثبَّت عند النقرة. وكل تغيير موقَّع ومؤرَّخ. والزرّ الذي لا يستطيع العمل يقول لماذا. والسجلّ المنتهي يكفّ عن عرض التغيير.
واحد: لا شيء يُثبَّت عند النقرة
اضغط زرّاً ينشئ سجلّاً أو يغيّره فلا يتغيّر سجلّ. بل تُفتح لوحة في وسط الشاشة عنوانها What happens after you confirm، أي «ماذا يحدث بعد أن تؤكّد»، وتحتها قائمة مرقّمة بالنتائج. وفيها Go back، أي «رجوع»، وفيها الزرّ الحقيقي الذي يحمل اسم الإجراء لا كلمة «موافق».
تؤكّد Nesrine الطلبية ORD-1042 في يومها الرابع. وتقول اللوحة ثلاثة أشياء. وهي كلمات التطبيق نفسه مع وضع رقم الطلبية فيها:
- «يجعل ORD-1042 مؤكَّدة.»
- «عندها تظهر ORD-1042 على Order Cockpit ويمكن التخطيط والتوريد مقابلها.»
- «مسجَّل في سجلّ نشاط ORD-1042 — وما زال بإمكانك تحريرها أو إلغاؤها بعد ذلك.»
انظر ماذا تفعل تلك السطور الثلاثة فعلاً. الأول يذكر التغيير. والثاني يذكر النتائج في مواضع أخرى — أي أجزاء النظام التي ستبدأ التصرّف على نحو مختلف، وهو النصف الذي يستحيل على مستعمل جديد معرفته. والثالث يذكر أنه مسجَّل، ويطمئن في هذه الحالة إلى أنه قابل للتراجع.
قارنها بلوحة تعليم الطلبية نفسها مشحونة:
- «يجعل ORD-1042 مشحونة — وهي حالة نهائية لا تستطيع تجاوزها.»
- «يختم تاريخ اليوم تاريخَ خروج فعلي من المصنع على شحنة/شحنات ORD-1042.»
- «يغلق ORD-1042 على Cockpit وعلى قائمة الاستثناءات. مسجَّل في سجلّ نشاطها.»
الشكل الثلاثي نفسه، ومحتوى مختلف، والسطر الأول صار يحذّر بدل أن يطمئن. فاللوحات ليست قوالب جاهزة. بل مكتوبة لكل إجراء، من السجلّ الفعلي.
صيغة الموافقة
بعض اللوحات لا زرّ تأكيد واحداً فيها. فحيث يكون القرار حكماً بشرياً لا خطوة — حكم جودة، أو اعتماد عيّنة، أو إقرار تكلفة، أو إذن شحن — تعرض اللوحة Approve وReject جنباً إلى جنب. ولا خيار ثالث ولا مسار تلقائي. واسم أحدهم يوضع عليه في الحالتين.
اثنان: كل تغيير موقَّع ومؤرَّخ
كل سجلّ ذي شأن يحمل سجلّ نشاط، والتغيير يكتب فيه سطراً. ويحمل السطر خمسة أشياء: أي سجلّ، وأي نوع تغيير، وملخّصاً في سطر واحد له، ومَن، ومتى.
و«مَن» يستحقّ جملة خاصة، لأن له قيمة ثالثة لا يفكّر فيها معظم الناس. فهو اسم الشخص الداخل؛ وإن تعذّر فبريده الإلكتروني؛ وإن تعذّرا فكلمة System، أي «النظام». والسطر المنسوب إلى النظام سطر لا يقف خلفه إنسان — خطوة آلية، أو شيء جرى خارج جلسة. وفي سطر ذي شأن، ذلك أمر يُلاحَظ لا يُتجاوَز.
والملخّص يكتبه الإجراء لا المستعمل، فيبقى متّسقاً. فتأكيد طلبية يكتب «Status: Draft → Confirmed». وشحنها رغم بوّابة لم تُستوفَ يكتب شيئاً أطول، والقسم التالي عن السبب.
ثلاثة: الزرّ الذي لا يستطيع العمل يقول لماذا
هذه العادة أكثر ما يغيّر إحساسك بالبرنامج، وهي النقيض التامّ للنمط الشائع. فالزرّ الذي لم تُستوفَ شروطه لا يُترك قابلاً للنقر ليرفضك بعدها. بل يُطفأ، ويصير سببه نصّ التلميح عليه، ويُطبع السبب ثانية بجانبه مع رابط مباشر إلى الشيء الذي يعطّله.
فزرّ Mark shipped الذي لا يستطيع العمل لا يفتح حواراً يقول لا. بل يجلس مطفأً وبجانبه ملاحظة تقرأ، بشكل التطبيق نفسه، ⛔ ثم السبب ثم Open production →.
ثلاث طبقات من «لا»، تبدو متطابقة وليست كذلك
بوّابة تعليم الشحن أوضح مثال في النظام، وخلف زرّها المطفأ الواحد ثلاث طبقات مختلفة فعلاً.
| الطبقة | مثال المعطّل | هل يمكن تجاوزها |
|---|---|---|
| الأرضية الصلبة | لم يُنتَج شيء على هذه الطلبية | لا. من أحد، أبداً. والتجاوز لا يُعرض أصلاً |
| بوّابة سلامة | المشتري يشترط فحص AQL نهائياً ولم ينجح أي فحص | نعم، من مالك أو قائد جودة فقط، ويُسجَّل |
| حكم | الطلبية ناقصة، أو لا شحنة محجوزة | نعم، من الأدوار التي أعدّها المصنع، ويُسجَّل |
والـ AQL هي قاعدة المعاينة التي تقرّر كم قطعة يسحب الفاحص من الدفعة وكم عيباً مسموحاً به قبل رفض الدفعة.
وقاعدة التصميم خلف الجدول هي التي تستحقّ حملها إلى كل شاشة تقابلها. القاعدة الصلبة تُطفئ. والحكم يعرض تجاوزاً منفصلاً متعمَّداً مسجَّلاً. فالشحن المبكر مقابل إنتاج ناقص قرار تجاري حقيقي تتّخذه المصانع كل موسم، فرفضه رفضاً تامّاً كان سيكون تظاهراً من البرنامج بأنه أعلم. أمّا شحن طلبية لم يُصنع فيها شيء البتّة فليس قراراً، فلا زرّ له.
وحين يأخذ أحدهم التجاوز فعلاً، تعيد اللوحة صياغتها. فتكفّ عن شرح الخطوة وتبدأ شرح الاختيار. وسطرها الأول يقرأ «يشحن ORD-1042 الآن — رغم …» مع تسمية الثغرات، وسطرها الأخير يقول إن التجاوز مسجَّل مع تلك الثغرات مسمّاة في السجلّ. ويقرأ سطر النشاط عندئذٍ «Status: In production → Shipped (override — ship gate not met: …)».
وتلك التفصيلة الأخيرة هي مقصد نظام الطبقات كلّه. فالمصنع الذي يتجاوز بوّابة لم يخرق قاعدة. بل اتّخذ قراراً، وبعد ستة أشهر يستطيع السجلّ أن يقول مَن اتّخذه وماذا كان يعرف حينها.
أربعة: السجلّ المنتهي يكفّ عن عرض التغيير
السجلّ غير نشط حين يُؤرشَف، أو حين يبلغ حالة لا يستطيع تجاوزها. وتلك الحالات للطلبية هي مشحونة ومستلَمة وملغاة. وعلى السجلّ غير النشط يُطفأ كل إجراء يغيّره أو يقدّمه، مع سطر واحد يقول لماذا وكيف تعود. والصياغة ثابتة: «هذه الطلبية مؤرشَفة — استعدها لإجراء تغييرات.» في الحالة الأولى، و«هذه الطلبية مشحونة — لا تغييرات أخرى.» في الثانية.
وما يبقى حيّاً هو بالضبط ما ينبغي: الاستعادة نفسها، وكل ما هو للقراءة فقط. فما زلت تستطيع طباعتها وفتحها والنظر في تاريخها ونسخها في مسوّدة جديدة.
وأمران في هذا يستحقّان أكثر من القاعدة نفسها.
إنه مفروض مرّتين. فالشاشة تطفئ الأداة، والإجراء خلفها يرفض على نحو مستقلّ. والإطفاء مجاملة، حتى لا يضيّع أحد نقرة. والرفض هو الحدّ، وهو قائم سواء أدّت الشاشة عملها أم لا.
وهو يعمل إلى الخلف أيضاً. فلا تستطيع أرشفة سجلّ يعتمد عليه عمل حيّ آخر، والرسالة تسمّي ما يعتمد عليه بدل أن تقول لا. ومحاولة أرشفة ORD-1042 حيّة تُنتج «لا يمكن أرشفة ORD-1042 — إنها مؤكَّدة (نشطة). ألغِها، أو أنهها واشحنها، قبل الأرشفة.» والطلبية المسوّدة التي تتدلّى منها طلبات شراء أو أوامر شراء تلقى المعاملة نفسها، مع تعداد تلك الوثائق برموزها، ومع مخرج موجود دائماً.
الشيء الخامس، وهو الرابع في ثوب آخر
وثمّة واحد آخر، وهو ينتمي إلى الأربعة لأنه من المبدأ نفسه. التطبيق لن يعرض عليك حقلاً لا تستطيع حفظه.
فحيث تكون القيمة مجمَّدة — مواصفة موديل مُفرَج عنها، أو طلبية مغلقة، أو سجلّ تقرأه ولا تكتبه — يُعرض الحقل نصّاً بلا أداة تحرير البتّة، ويُعرض السبب. وليس صندوق إدخال يقبل كتابتك ثم يرفضها عند الحفظ. وتلك هي صيغة الزرّ المطفأ على مستوى الحقل: لا تعرض ما لن تقبله.
اختبر فهمكينزعج مشرف من أن Mark shipped مطفأ على طلبية سيستلمها المشتري غداً. صف بالترتيب ما ستنظر فيه، وقل ما الذي يحدّد هل هذا قابل للإصلاح منه هو.أظهر الإجابة
انظر أولاً في الملاحظة بجانب الزرّ. فهي تسمّي المعطّل وتربط إليه، فالتشخيص على الشاشة أصلاً. ثم ضع المعطّل في واحدة من الطبقات الثلاث. فإن كان أن لا شيء أُنتج، فهي الأرضية الصلبة: لا تجاوز لأحد، والجواب الأمين أن الإنتاج لم يُسجَّل، فالإصلاح هو تسجيل الإنتاج الحقيقي أولاً. وإن كان فحص AQL نهائياً أو كشف معادن مطلوباً بلا نجاح، فهي بوّابة سلامة: التجاوز موجود لكن لا يستعمله إلّا مالك أو قائد جودة، فليس عمله هو. وإجراء الفحص أسرع عادةً من إيجاد شخص أعلى. وإن كانت كمية ناقصة أو شحنة غير محجوزة، فهو حكم: التجاوز موجود، محصور في الأدوار التي أعدّها المصنع، وأخذه قرار سيحمل اسمه والثغرات المسمّاة في السجلّ. فالذي يحدّد هل هو قابل للإصلاح منه هو الطبقة، والطبقة تُقرأ من صياغة المعطّل.
اختبر فهمكيقترح أحدهم إزالة لوحة التأكيد من الإجراءات العشرة الأكثر شيوعاً، بحجّة أن المستعملين المتمرّسين يعرفون ما يفعله التأكيد وأن اللوحة احتكاك. ما أقوى صيغة للحجّة، وماذا ستخسر فعلاً؟أظهر الإجابة
أقوى صيغة حقيقية ولا ينبغي رفضها. فاللوحة التي تظهر دائماً يكفّ الناس عن قراءتها، وذلك ضعف موثَّق في كل حوار تأكيد بُني يوماً، واللوحة التي لا يقرأها أحد احتكاك لا يشتري شيئاً. ولو كان ذلك كلّ ما تفعله اللوحة لكانت إزالتها صواباً. أمّا ما ستخسره فهو السطر الثاني. فعمل اللوحة ليس سؤال «هل أنت متأكّد». بل ذكر النتائج في مواضع أخرى، وهو الشيء الوحيد الذي لا يستطيع المستعمل رؤيته من حيث يقف. فجملة «عندها تظهر ORD-1042 على Order Cockpit ويمكن التخطيط والتوريد مقابلها» معلومة لا احتكاك، وهي بالضبط ما لن يعرفه مستعمل متمرّس على نظام آخر. والردّ الأفضل على الشكوى الحقيقية هو الإبقاء على سطور النتائج ومهاجمة التشابه. فاللوحات التي لا تقول أكثر من «هذا سيفعل ما نقرتَ عليه» هي التي درّبت الناس على الكفّ عن القراءة.
موجّه · هذا الزرّ مطفأ — أي نوع من «لا» هو
لحظة أن يكون إجراء توقّعت عمله معطَّلاً، وقبل أن يُطلب من أحد تجاوزه.
أداة في MerchandiserOS معطَّلة وأحتاج معرفة أي نوع رفض هو قبل أن أطلب من أحد شيئاً. سألصق الصياغة الحرفية للملاحظة بجانب الزرّ، والسجلّ الذي هي علماذا، وحالة ذلك السجلّ، ودوري. صنّفه أولاً. هل هذه قاعدة صلبة لا يستطيع أحد تجاوزها، أم بوّابة سلامة يستطيع دور أعلى مسمّى تجاوزها مع قيد في السجلّ، أم حكم حصره المصنع في أدوار بعينها، أم مجرّد سجلّ انتهى وكفّ عن قبول التغييرات؟ قل أيّها، واقتبس الكلمات في الملاحظة التي جعلتك تقرّر. وإن كانت الصياغة محتملة فعلاً لاثنين منها، فقل ذلك بدل اختيار المريح. ثم أعطني أقصر طريق أمين. فالقاعدة الصلبة طريقها ليس شخصاً أبداً — بل هو الحقيقة الغائبة، فقل لي ماذا يجب تسجيله وأين. وبوّابة السلامة قل لي طريقيها وقل صريحاً أيّهما أسرع: فعل ما تطلبه البوّابة، أم إيجاد الشخص الذي يجوز له التجاوز. والسجلّ المنتهي قل لي هل إعادة فتحه ليسروعة هنا أم أن الجواب الصحيح سجلّ جهذهد. ثم، إن كان التجاوز هو القرار الصحيح فعلاً، فاكتب لي الجملتين اللتين أضعهما في خانة السبب: ماذا أتجاوز، وماذا أعرف ممّا لا تعرفه البوّابة. وافترض أن أحهذام سيقرؤهما بعد ستة أشهر بلا ذاكرة عن اليوم. وقاعدتان. لا تنصحني أبداً بالالتفاف على بوّابة بتحرير السجلّ إلى حال لا تعمل فيها البوّابة — فذلك هو القرار نفسه وقد أُزيل دليله. وإن سمّت الملاحظة معطّلاً لم أعطك عنه معلومات كافية، فاطلبها بدل تخمين معناه.
قد يخطئ الذكاء الاصطناعي — تحقّق من أي شيء ستتصرّف بناءً عليه.