البرمجة والتفكير، لماذا عليك أن تتعلم البرمجة وأن تعلم أبناءك البرمجة؟

2


أهلا وسهلا أيها القارئ الكريم...
 أيها القارئ، أنا لا أعلم من أنت
ولا أين تعيش
ولا ماذا تدرس
ولا ما تخصصك
ولا ما عمرك
ولا ما جنسك
ولا ماذا تحب
ولا ماذا تكره،
 لكني أعلم أنك يجب أن تتعلم البرمجة!

"ماذا تقول أيها المؤلف؟ أنا تخصصي (كذا)، كما أني لا أحب الكمبيوتر والرياضيات، لم قد أهتم بالبرمجة؟!"

حسنا أيها القارئ، من حقك أن ترى كلامي غريبا بعض الشيء وألا تقتنع، فمن يحب الحواسيب سوى هؤلاء الغرباء الشواذ؟! ولكن شرفني من فضلك بقراءة هذه الكلمات التالية مني عسى أن أقنعك. في الواقع أنا لا أريدك أن تتعلم البرمجة فحسب، بل وأن تشجع أبناءك على تعلمها! تشعر أني بالغت، أليس كذلك؟

كل من في هذا البلد يجب أن يتعلم كيف يبرمج الكمبيوتر، لأنها تعلمك كيف تفكر.

ستيف جوبس، مؤسس شركة آبل، في لقاء تلفزيوني

هذه ليست الأسباب الوحيدة، لكنها موضوع المقال فحسب!

موضوع هذا المقال هو تأثير البرمجة على حياتك اليومية وطريقة تفكيرك، ولكن هذه ليست الأسباب الوحيدة التي تجعلك تتعلم البرمجة، فالبرمجة هي المستقبل! في المستقبل القريب ستستحوذ مجالات التكنولوجيا على أغلب الوظائف، لكني سأتحدث هنا عن تأثير البرمجة على طريقة تفكيرك اليومية، إذا لنبدأ!

البرمجة وحل المشاكل

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

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

البرمجة تحسن مهارات حل المشاكل

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

ما أهمية مهارات حل المشاكل؟

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

هل تريد التأكد من ذلك؟ ائت بطفل درس قانون حجم المكعب (طول ضلع المكعب تكعيب)، أعطه السؤال التالي:

مكعب طول ضلعه 5 سم، احسب حجمه.

 سيجيب الطفل غالبا على السؤال جيدا وسيقول أنه سؤال سهل، الآن اسأله السؤال التالي:

حاوية مكعبية طول أحد أحرفها 2 متر نريد أن نخزن بها عددا من الصناديق مكعبية الشكل، حجم كل صندوق منهم 0.5 متر مكعب، كم صندوقا نستطيع أن نضع بالحاوية؟

سيقول الكثير من الطلاب للأسف أن هذا السؤال أصعب قليلا، مع أننا لم نخرج عن قانون حجم المكعب. سيقول لك أنه لم يدرس قانون هذا السؤال! وسؤالي لك هو: عندما يخرج الطالب للحياة والعمل فهل سيقابل مشاكل من النوع الأول أم الثاني؟

علاقة البرمجة بالتفكير النقدي

إذا.. هل شرحت له إجابة هذا السؤال أو عرفها بنفسه؟ الآن اسئله هذا السؤال:

حاوية بشكل متوازي مستطيلات، أبعادها 1 متر، 1.5 متر، 2متر، نريد أن نضع بها صناديق حجم كل منها 0.5 متر مكعب، كم صندوقا نستطيع أن نضع بالحاوية؟

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

على النقيض تستطيع أن تضع مربعين داخل مستطيل (بأبعاد محددة) مساحته الضعف لأن الشكلين متوافقان.  


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

التفكير النقدي ليس ضرورة في الحياة الوظيفية فحسب بل ومهم أيضا في الحياة اليومية

أنا من الناس الذين يرون أن البرمجة تعلم الإنسان التفكير النقدي، ولست وحدي، انظر هذه المقالات 1  2  3.  لماذا أرى ذلك؟ لعدة أسباب منها أن البرمجة والتفكير النقدي يتشاركان في الكثير من الصفات والخطوات. 1: عرف المشكلة 2: حلل المشكلة 3: عدد الحلول الممكنة 4: جرب واختبر حلك 5: كرر. عندما نبمرمج فإننا في الواقع نمارس التفكير النقدي. نحن نمارس التفكير النقدي في كل برنامج نكتبه.

دروس أخرى...

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

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

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

ليس لهذه المقولة علاقة بالموضوع سوى أن قائلها مبرمج، لكني وجدتها جميلة وأردت عرضها لكم.

علينا أن نشجع الفتيات على دخول مجال البرمجة

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

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

التعليقات

هنا أنت الكاتب، قل ما تريد، كن مهذبا

  1. موقع جميل جداً ومعلومات مفيدة وممتعة .
    شكراً لك واتطلع للمزيد :)

    ردحذف

يُشَغَّلُ من Blogger

تصميم الورشة مع تعديل وتطوير مني