لماذا الفشل في البرمجة شيء جيد؟

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

لماذا تعتبر البرمجة فرصة جيدة للتمرن على التعامل مع الفشل؟ لأن تعلّم البرمجة الصحيحة هو علم دقيق وشكل من أشكال الفنون.

في التطبيقات البرمجية يمكن أن يحدث أي خطأ،

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

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

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

كيفية إصلاح الفشل

يُطلق عل هذا الأمر في البرمجة “تصحيح الخطأ”، تصحيح الخطأ هو عملية البحث عن الأخطاء في النظام. الخطأ بالطبع هو عبارة عن سطر مخادع من التعليمات البرمجية التي تسبب عقبة في اللعبة أو التطبيق. إليك مثال: هناك لعبة ركض حول مدينة كاملة تبلغ مساحتها 16 ميلاً مربعاً، يمكنك التفاعل مع المواطنين والقيام بمهام من أجل جمع المال وحتى قيادة المركبات، لذلك على سبيل المثال عندما يمشي اللاعب عبر الجدران أو لا يستطيع الخروج من السيارة يكون هناك خطأ. ثم يعلم فريق التطوير بطريقة ما (إما من خلال اختبار اللاعب الخاص بهم أو من خلال تقارير اللاعبين) عن هذه المشكلة بالذات وتتمثل مهمتهم في مطاردة الخطأ.

(بالمناسبة كما ذكرنا في المنشورات السابقة نشأ مصطلح “bug” “خطأ” في البداية عندما كانت أجهزة الكمبيوتر بحجم الغرف ذات المكونات الضخمة وكان من السهل دخول الحشرات إليها، كما كان الحال أحياناً عندما لا يعمل الكمبيوتر كما هو متوقع ويتعين على شخص ما الدخول إلى الكمبيوتر بنفسه لإزالة “الخطأ”.)

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

جزء من قانوننا الشخصي هو المساعدة

في دورات البرمجة المتزامنة عبر الإنترنت نشجع الطلاب على مساعدة بعضهم البعض، وستصبح العلاقات بينهم قوية ولذلك سيشعرون بالراحة عند طلب المساعدة. عندما يواجهون عقبة ولا يمكنهم حلها بمفردهم – مثل سطر من التعليمات البرمجية لم يتم كتابته بشكل صحيح 100٪ – تكون المساعدة متاحة. نظراً لأننا مدرسة متزامنة عبر الإنترنت سيتمكن الأطفال من التواصل مع بعضهم البعض. في الواقع احساس طلابنا بالانتماء مهم، المشكلة التي لا يلاحظها طالب تلاحظها عيون جديدة لطالب آخر.

تماماً كما هو الحال في الواقع، نظراً لعدد الأشياء التي يمكن أن تكون خاطئة في البرمجة، نحتاج جميعاً إلى يد العون من وقت لآخر، IRL، وتعني في الحياة الواقعية وهو الاختصار للغة الدردشة عبر الإنترنت، حيث يؤدي عدم طلب المساعدة إلى إبقائك عالقاً أو يجعل الموقف أسوأ.

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

حل المشكلات سبب آخر لكون الفشل أمر جيد

تحتاج أحياناً إلى أن تكون جيداً في الاستنتاج لتجد مكان سطر التعليمات البرمجية الذي يسبب المشكلة، ولكن ما هو مهم بنفس القدر هو معرفة لماذا يسبب حدوث مشكلات. يمكن أن يؤثر القليل من التعليمات البرمجية الخاطئة على حقول لا تبدو أنها مرتبطة ببعضها البعض، وهذا يجعل العثور عليها أمر صعب. ولمعرفة السبب يتطلب حل المشكلة استخدام كل من التفكير الجانبي والتفكير العمودي. نحن نُطلق على التفكير الجانبي “thinking sideways” وهذا يعني التفكير بطريقة تجعلك تربط بين أشياء مختلفة لا تبدو جلية للعلن،

ومع ذلك فهو ضروري في حل المشكلات. التفكير الخطي لا يكفي، وهو نهج تدريجي يشبه عندما تتصل بقسم تكنولوجيا المعلومات للحصول على المساعدة لأن جهاز الكمبيوتر الخاص بك لا يعمل وأول شيء يطلبون منك القيام به هو التحقق من توصيله بالكهرباء (والغريب في كثير من الأحيان أن هذا هو الحل). ولكن مع مشكلات البرمجة حيث لا يستجيب التطبيق كما ينبغي فإن النهج التدريجي على الرغم من أهميته لا يحل المشكلة دائماً.

التفكير الجانبي هو ما يسمى بـ “التفكير خارج الصندوق”، إنه المكان الذي تحاول فيه استخدام خيالك وإبداعك لإنشاء ارتباطات تتعلق بالمشكلة وما يمكن أن يسببها، يؤدي هذا إلى تنشيط الأجزاء الأقل استخداماً في الدماغ (لأننا بفضل نظام التعليم التقليدي تعلمنا التركيز بشكل أساسي على التفكير الخطي على حساب التفكير الجانبي).

في بعض الأحيان تكون الإجابة مثل البرق تماماً كعندما تقول “وجدتها!”، عندما يحدث ذلك ويتم إصلاح سطر التعليمات البرمجية مما يؤدي إلى اختفاء المشكلة وسيشعر الطالب بإحساس هائل بالنصر، وبعد هذا عادة هناك حالة من “الوضوح” ترافق ذلك. مثل كيف كان يجب أن نستوضح سبب المشكلة، فقط من خلال إجراء الاتصالات الصحيحة في الدماغ من البداية وستصبح الإجابة مرئية.

يعتبر حل المشكلات أمراً ممتازاً للعقل ولهذا السبب ربما يلعب الكثير من الناس الكلمات المتقاطعة في الصحف،

وقد حان الوقت لأن ينجحوا بسبب الفشل.

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

 

الردود

Comment below