يمكن لمساهمة صغيرة، مثل إصلاح حرف واحد، أن تلوّن مربع GitHub نفسه الذي قد يظهر بعد شحن ميزة كاملة. لهذا يربط LifeQuest نقاط الخبرة بمهمة برمجية أُنشئت أولًا، ثم يتحقق من وجود دفعة مؤهلة حدثت بعدها، بدل مكافأة مربع أخضر بلا سياق.
عند الحادية عشرة ليلًا، كان سليم جالسًا في غرفته قرب جامعة عمّان، وكوب الشاي البارد يزاحم حاسوبه على الطاولة. بقي على تسليم مشروعه صباح اليوم التالي خلل يمنع صفحة التسجيل من العمل، بينما كانت مساهماته على GitHub تعرض مربعًا أخضر مطمئنًا. فتح تفاصيل النشاط، فاكتشف أن آخر ما دفعه كان تصحيح خطأ مطبعي من حرف واحد في ملف التوثيق.
كان المربع صحيحًا من الناحية التقنية. سليم ساهم في المستودع ذلك اليوم. لكنه لم يقل شيئًا عن العمل الذي كان يحتاج إلى إنجازه فعلًا، وما زال احتمال تسليم مشروع معطّل قائمًا.
المربع الأخضر يسجل نشاطًا بلا نية
يعرض تقويم المساهمات أثرًا مرئيًا جذابًا: أيام ملوّنة، وسلاسل متصلة، وفراغات تدعوك إلى ملئها. لكن لون المربع لا يحمل معه السؤال الأهم: ما الذي كنت تحاول إنجازه عندما كتبت هذا السطر؟
قد تمثل مساهمة واحدة إصلاحًا حاسمًا أعاد ميزة إلى العمل. وقد تمثل تعديل فاصلة، أو تحديث تعليق، أو تغييرًا صغيرًا لا يمت إلى هدفك الحالي بصلة. كلاهما يضيف أثرًا إلى اليوم، لذلك لا يستطيع المربع وحده أن يميّز بين التقدم المقصود والحركة التي تصادف أنها قابلة للعد.
هنا تظهر مشكلة القياس. عندما يصبح الحفاظ على اللون هو الهدف، يسهل اختيار أصغر فعل يضمن بقاء السلسلة. يحصل الدماغ على لحظة الرضا، ثم يبقى المشروع الحقيقي في مكانه.
هذا لا يجعل المساهمة الصغيرة عديمة القيمة. إصلاح الأخطاء المطبعية عمل مشروع، وقد يكون ضروريًا. الخلل يبدأ حين نستخدم ذلك الأثر دليلاً على إنجاز مختلف، مثل إكمال شاشة تسجيل أو حل عطل يهدد التسليم.
أنشئ المهمة قبل أن تدفع الكود
في LifeQuest، يبدأ المسار من نية محددة. ينشئ سليم هدفًا لمشروعه، ثم يكتب مهمة ضمن مجال Craft، مثل: «إصلاح تعطل صفحة التسجيل واختبار المسار كاملًا». بعد إنشاء المهمة، يعمل على الكود ويدفع تغييرًا مؤهلًا إلى GitHub.
عند طلب الإكمال بطريقة GitHub، يبحث LifeQuest عن دفعة مؤهلة حدثت بعد إنشاء المهمة. هذا الترتيب البسيط يضيف علاقة زمنية يفتقدها المربع المنفرد:
- حدّدت العمل الذي تنوي إنجازه.
- نفّذت العمل.
- ترك التنفيذ أثرًا لاحقًا يمكن التحقق منه.
بهذا لا يستطيع سليم أخذ نشاط قديم وإلباسه مهمة جديدة. كما لا تمنحه مساهمة سبقت صياغة المهمة نقاط الخبرة الكاملة عنها. يجب أن تأتي الدفعة بعد الالتزام الذي سجله لنفسه.
مع اقتراب منتصف الليل، أنشأ سليم المهمة وترك تقويم المساهمات جانبًا. عاد إلى مسار التسجيل، تتبع الخطأ، اختبر النتيجة، ثم دفع التغيير. أصبح لديه الآن أثر جاء بعد مهمة واضحة، في اللحظة التي كان فيها فشل التسليم ما يزال ممكنًا.
ما الذي يثبته التحقق، وما الذي لا يثبته؟
قاعدة «المهمة أولًا، ثم الدفعة» لا تقرأ نوايا المبرمج ولا تثبت أن الميزة ممتازة أو جاهزة للإطلاق. وهي لا تزعم أن كل دفعة كبيرة أو أن كل سطر فيها يخدم المهمة بالقدر نفسه. ما تثبته أضيق وأكثر صدقًا: حدثت دفعة GitHub مؤهلة بعد إنشاء مهمة برمجية تنتمي إلى مجال Craft.
هذه الحدود مهمة. القياس الجيد لا يحتاج إلى الادعاء بأنه يعرف كل شيء. يكفي أن يجيب عن سؤال محدد، ثم يترك الأسئلة الأخرى للاختبار والمراجعة والحكم البشري.
ولهذا لا يعرض LifeQuest خيار GitHub لكل مهمة. يظهر هذا المسار للمهام المناسبة في مجال Craft، ويحتاج إلى ربط اسم مستخدم GitHub. يعتمد التحقق على الأحداث العامة، من دون OAuth أو رمز وصول أو قراءة المستودعات الخاصة. وقد تتأخر الأحداث الحديثة بضع دقائق بسبب التخزين المؤقت، لذلك لا يعني غياب الدفعة فورًا أنها لم تحدث.
إذا لم تكن دفعة GitHub دليلًا مناسبًا، يبقى الإكمال بالتقرير الذاتي متاحًا بنصف نقاط الخبرة. الفكرة هي اختيار دليل يلائم المهمة، كما يشرح هذا الدليل عن تحويل النية إلى مهمة ودليل يمنح نقاط الخبرة.
اجعل السلسلة نتيجة للعمل
في صباح اليوم التالي، لم يحتج سليم إلى إقناع نفسه بأن مربع الأمس يعني التقدم. فتح المشروع، جرّب صفحة التسجيل مرة أخرى، ورأى المسار يعمل قبل التسليم. بقي المربع الأخضر في مكانه، لكن معناه تغيّر لأن العمل المحدد سبقه، والدليل لحقه.
يمكن تطبيق المبدأ خارج LifeQuest أيضًا. اكتب قبل فتح المحرر نتيجة واحدة يمكن فحصها: «إصلاح الخطأ الذي يمنع حفظ الملف»، أو «إضافة الاختبار الذي يكشف الانهيار»، أو «إنهاء تدفق التسجيل من البداية إلى النهاية». بعد ذلك، عامل الالتزام البرمجي كدليل جزئي على تنفيذ الخطة، لا كبديل عنها.
السلاسل مفيدة حين تلخص تقدمًا حدث بالفعل. أما حين يصبح ملء المربع هو الغاية، فقد تكافئ أسهل حركة متاحة وتترك المهمة ذات العاقبة الحقيقية معلقة. ابدأ بما تنوي شحنه، ثم دع اللون يأتي بعده.
التعليقات
لا توجد تعليقات بعد.