سياج تشيسترتون

تعرّف على أفضل أسلوب للتعبير عن أفكارك واقتراحاتك


مرحبًا 👋 هل وصلت إلى هنا لأن أحدهم أشار لك إلى هذا المنشور ردًّا على اقتراحك فكرةً لتحسين Exercism؟ قبل أن يستثمر فريقنا وقتًا في استكشاف فكرتك، يأملون أن تقرأ هذا وتفكّر فيما إذا كان قد سبق أن طُرحت فكرتك، وما الأخطاء الشائعة التي قد تنطوي عليها. وإذا أضفت هذه الاعتبارات والأخطاء الشائعة المحتملة إلى اقتراحك، وفكّرت في سبب عدم تنفيذ فكرتك حتى الآن، فمن المرجّح أن تحصل على ردّ أسرع وأكثر إيجابية.


إذن، ما معنى «سياج تشيسترتون»؟

سياج تشيسترتون فكرة مستوحاة من اقتباس للكاتب ج. ك. تشيسترتون من كتابه الصادر عام 1929، The Thing. وقد ذاعت شهرتها بعد أن اقتبسها جون ف. كينيدي. وهذا هو نص الاقتباس الأصلي:

في مثل هذه الحالة توجد مؤسسة أو قانون معيّن؛ ولنقل، للتبسيط، سياج أو بوابة مقامة عبر طريق. ويذهب المصلح من النوع الأحدث إليها فرحًا ويقول: «لا أرى فائدة فيها؛ فلنزلها.» وهنا يحسن بالمصلح الأذكى أن يجيب: «إن كنت أنت لا ترى فائدتها، فأنا بالتأكيد لن أدعك تزيلها. اذهب وفكّر. ثم حين تعود وتخبرني أنك ترى فائدتها، قد أسمح لك بتدميرها.»

فكرة سياج تشيسترتون هي أنك إن لم تفهم سبب وجود شيء ما، فأنت على الأرجح لا تفهم سبب وجوب إزالته. وبالمثل، إن لم تفهم سبب عدم وجود شيء ما، فأنت على الأرجح لا تفهم سبب استبعاده.

وهناك قاعدة بسيطة تذكّرها: «لا تُزل سياجًا حتى تعرف سبب إقامته في المقام الأول.»

وما علاقة هذه الفكرة بـ Exercism؟

في Exercism، من حسن حظنا أن أعدادًا كبيرة من الناس ينضمون إلى مجتمعنا باستمرار، وينشرون أفكارهم وآراءهم. وكثير من هذه الأفكار جديد ومبتكر ومثير، ويفتح آفاق تفكيرنا. فإن كان لديك فكرة أو اقتراح، فنحن نرحّب به!

لكن في كثير من الأحيان ينشر الناس أفكارًا نوقشت مرارًا من قبل. والرد على تلك الأفكار، وإعادة مناقشة قراراتنا أو تبريرها من جديد، قد يستهلك طاقة فريقنا بشدة. ويهدف هذا المقال إلى المساعدة في حماية ذلك الوقت وتلك الطاقة.

لقد صمّم Exercism وهندسه وبناه آلاف من الأفراد الموهوبين للغاية. إنه منتج مقصود بعناية: الأشياء موجودة لأنها صُمّمت لتكون موجودة، والأشياء تُستبعد غالبًا لأنها صُمّمت لتُستبعد. وقد جرى الجدال حول كل شيء تقريبًا في Exercism ومناقشته وإعادة هندسته مرات كثيرة.

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

لا تخف أبدًا من النشر، لكن فكّر في الأمر جيدًا أولًا!

هل لديك مثال؟

ثمة مصدر شائع للإحباط: أن يرسل الطلاب إلى المرشدين كودًا لا يجتاز الاختبارات. وهناك اقتراح شائع بالقدر نفسه: «لماذا لا نشغّل الاختبارات تلقائيًا في واجهة سطر الأوامر قبل أن يرسل أحدهم كوده؟» يبدو اقتراحًا رائعًا: يمكن لواجهة سطر الأوامر أن تستدعي أمرًا لتشغيل الاختبارات، وألا تسمح للطالب بالإرسال إن كانت معطوبة.

أولًا، ماذا يعني «مجرد استدعاء أمر لتشغيل الاختبارات»؟ إنه يعني كتابة سكربت لكل لغة من اللغات الـ 52 في Exercism يمكنه تشغيل الاختبارات وفحص النتيجة. هذا جهد ليس بالهيّن، لكنه ممكن.

لكنه يعني أيضًا كتابة ذلك السكربت بحيث يعمل على Windows و MacOSX و Linux، وفي جميع الإصدارات والإعدادات الممكنة. وهذا قدر كبير من العمل، إن لم يكن غير محدود. قد تسأل: «ولماذا يجب أن يكون كل إعداد؟» حسنًا، لأنك بهذا تمنع شخصًا فعليًا من استخدام Exercism ما لم يستطع تشغيل هذا السكربت. وهذا يعني أيضًا أنه لا يمكن أن يفشل أبدًا. إذا لم يعمل السكربت لسبب ما، فإن الطالب يُمنع تمامًا. وخلل في أحد سكربتات 52*3*n يعني أن الطالب لم يعد يستطيع استخدام المسار على نظام التشغيل ذاك. فكيف تختبر ذلك؟ لا يمكنك.

لكنك تقول إنه يمكنك ببساطة إضافة خيار --skip-tests. هذا اقتراح جيد، لكنه يعيدنا إلى نقطة البداية: أن الناس يستطيعون اختيار تجاوز الاختبارات متى شاؤوا. إلا أننا الآن في وضع يكون فيه إرسال اختبارات معطوبة أقل احتمالًا بشكل طفيف، فيقلّ توقع المرشدين لذلك، ما يجعل الأمر أكثر صدمة وإرباكًا عندما تكون الاختبارات فعلًا معطوبة.

قد تجادل: «لكن الناس لن يفعلوا ذلك عمومًا». صحيح، في بعض اللغات التي يستغرق تشغيل الاختبارات فيها 0.5 ثانية. لكن في اللغات التي يستغرق تشغيل الاختبارات فيها 20 ثانية، يكون انتظار 20 ثانية إضافية للإرسال محبطًا للغاية للطلاب، وبالتالي يصبح تجاوز الاختبارات النهائية أمرًا شائعًا.

وأيًا كانت نهاية هذه المناقشة، فمن الواضح أن التعقيد هنا أكبر بكثير مما يبدو للوهلة الأولى. فهناك تحديات تقنية يجب مراعاتها، ومشكلات في سير العمل يجب التفكير فيها، وإدراك أن المسارات تختلف اختلافًا واسعًا يجعل ما هو سريع وسهل في أحدها مؤلمًا في آخر.

لذا بدلًا من طرح اقتراح «لماذا لا نشغّل الاختبارات قبل الإرسال»، لنسأل سؤالًا: «لماذا ينشر الناس حلولًا لا تجتاز الاختبارات؟» وعندها يصبح الأمر مثيرًا للاهتمام. الجواب العام هو أنهم عالقون أو مرتبكون. وهم بحاجة إلى المساعدة. وهذا يعني أن إرسال اختبارات معطوبة إشارة مهمة جدًا للمرشدين إلى أن هذا الطالب بحاجة إلى المساعدة. نعم، إنه محبط لأن المرشدين لا يعرفون فورًا إن كان الكود «صحيحًا» أم لا. غير أنهم يستطيعون تنزيل الكود وتشغيله للتحقق منه (وهو ما يفعله معظم المرشدين في الحلول غير البديهية)، ثم يعرفون بيقين تام إن كان صحيحًا أم لا. والطلاب العالقون الذين يحتاجون إلى المساعدة لا يصبحون أكثر عجزًا وحاجة إلى مزيد من المساعدة، بل يصلون إلى مرشد يستطيع أن يرى التصحيحات ويقترحها بسرعة أكبر.

ملاحظة: نحن في الواقع نحل هذه المشكلة بتشغيل الاختبارات على الخادم، وهو مشروع كبير ومكلف، لكنه يستحق الجهد لما يوفره من تجربة أفضل للطلاب، والأهم أنه يوفر وقت مرشدينا وطاقتهم.

هل من شيء آخر؟

ثلاثة أشياء:

  1. هذا المقال في التفكير من الدرجة الثانية قراءة جيدة. والاقتباس «لا تُزل سياجًا حتى تعرف سبب إقامته في المقام الأول» مأخوذ من هذا المنشور.
  2. كتاب The Thing لج. ك. تشيسترتون متاح هنا https://archive.org/details/G.K.ChestertonTheThing.
  3. قد تكون فكرتك جديدة ورائعة حقًا. لا تخف ولا تخجل من طرحها!