تسألني لم أنني أنا، وأن حالي كما ترى؟
ليست امور اخترتها، وانما اختارتني هي
ليست امور اخترتها، وانما اختارتني هي
هذه قصة حياتي في الفترة من نهاية 2007 إلى منتصف 2008. وهي فترة مفتاحية، إذ اثرت على حياتي منذ وقتها حتى كتابة هذه السطور.
كنت معيداً في الكلية منذ سنوات. بلا تقدم وظيفي يذكر، . وبدأت تظهر لي آلام في اليدين من استخدام لوحة المفاتيح/الماوس. وكان التدريب الصيفي على الابواب.
كنت دائماً اقدّم سكاشن هياكل البيانات/البرمجة الشيئية بالفرقة الثانية، وكنت كل عام ارى المستوى يزداد سوءاً. هناك في كل دفعة عدد ما من الطلبة المتفوقين، لكن المستوى العام محبط. وكنت - مثل كثير من المعيدين - اعتبر هذا صفة من صفات المجتمع لا دخل لي بها: التعليم يسوء، القيم تتغير (مثل قيمة الاجتهاد او العلم)، ماذا افعل انا؟
ثم جاء الحديث عن التدريب الصيفي...وفكرت: إن الطلبة يأتون لنا من الفرقة الأولى لا يعرفون شيئاً عن البرمجة تقريباً، ماذا لو سددنا لهم تلك الثغرة؟ ألن تكون حياتنا كمعيدين في مواد الفرقة الثانية اسهل بكثير؟
ماذا لو توقفنا عن التحسر على حال الطلبة، واعتبرنا ان لديهم القدرات لكن تحتاج فقط إلى من يعلمهم بطريقة صحيحة؟
المشكلة الاساسية بالنسبة لي كانت ان الطلبة لا يبرمجون اصلاً. معظم البرامج التي يصنعونها هي اشياء محفوظة مثل sum/average/minimum...لماذا لا يكتبون شيئاً جديداً له معنى؟
كنت وانا طالب اكتب برامج رسومية ذات مؤثرات وادخل السكشن واشغلها على جهاز المعمل لكي استعرض..ثم يأتي الزملاء في الاسبوع التالي ويكتبون برامجاً اكبر واكثر ابهاراً كتحدي..الا توجد طريقة لإعادة إنتاج هذه المنافسة؟ لماذا لا يصنعون رسومات والعاباً؟
لكن المكتبات الرسومية معقدة جداً...DirectX, OpenGL, SDL...كلها تحتاج شيء من الاعداد. ربما يأخذ دقائق بالنسبة للمبرمج الخبير لكن بالنسبة لاشخاص مازالوا يتدربون على كتابة while loop ولا يعرفون بعد كيفية عمل open project؟ لن ينفع. لكن ماذا لو صنعنا مكتبة بسيطة جداً، تكفي دقائق للمبتديء كي يكتب بها برنامجاً صغيراً؟
بدأت افكر فيها: سوف تكون الرسومات بها مثل كمبيوتر صخر: خطوط ومستطيلات ودوائر، لكن من اجل الالعاب سوف نصنع لهم اشكالاً متحركة sprites. سوف يكون هناك 30 شكل متحرك، كل منهم له رقم (لنتفادى البرمجة الشيئية)، لماذا 30 بالذات؟ لأن هذا هو العدد الموجود في كمبيوتر صخر.
لا تظن انني فعلت هذا فقط حباً في صخر: هذا قرار عملي جداً؛ هذه الاشكال الـ30 كانت تكفي لصنع كل الالعاب التي لعبتها في طفولتي، إذاً هي أيضاً تكفي للطلبة لكي يصنعوا العاباً ممتعة.
تعمدت ان اضع حدوداً للمكتبة: لا يوجد مثلاً امر لمسح الشاشة، اوامر الرسوم قليلة، التعامل مع الماوس غير مفصل، وهكذا. لماذا؟
لأنني لا اريد من الطلبة ان يكونوا "مستخدمي مكتبات"، بل اريدهم ان يكونوا مبرمجين! سوف يستطيعون بذكائهم ان يسدوا كل الثغرات الموجودة: لكي تمسح الشاشة ارسم مستطيل يشمل مساحتها كلها. دالة التعامل مع الماوس يمكن ان تحقق بها ما تريد ببعض التنظيم المنطقي. اريدهم ان يفكروا، وان يتخيلوا، وان يقابلوا مشاكل ويحلوها. أريدهم أن يتعلموا.
هذه هي المكتبة لمن يريد ان يعلّم احد بها.
كان هذا في صيف 2007. كتبتها في ثلاثة أيام، وتحملت آلام اليدين اثناء الكتابة. إن ألام اليدين قد جعلت البرمجة صعبة، والجلوس امام الانترنت صعباً. وبدأت افتح صناديق الكتب واقرأ. ولم تكن كلها كتباً برمجية. قرأت عن علم الاجتماع، واسباب التأخر الذي يحدث في مصر، والتاريخ، والدولة العثمانية، والحرب العالمية الاولى...
لقد انتهت الدولة العثمانية عام 1922. أي انه هناك اشخاص يعيشون بيننا الآن - من هم فوق سن التسعين - عاشوا في طفولتهم في دولة اسلامية موحدة. كان يحكمهم "أمير المؤمنين". ربما دولة ضعيفة او متأخرة لكن...موجودة. ليس الامر بعيداً كما يتخيل المرء.
وبدأ التدريب الصيفي بنجاح محدود. لم يكن هناك اهتمام حقيقي بالموضوع سوى مني ومن معيد صديق لي، الباقي كانوا يخافون خوفاً من تعلم المكتبة الجديدة. لكن الطلبة كانوا شيئاً آخر. ظهر منهم اشخاص يذكرونني بالأيام القديمة الجميلة. واخذت افكر كيف يمكن تحسين التعليم في الكلية، ربما لأول مرة افكر في هذا الامر بتعمق. ربما هناك الكثير مما يمكن عمله...
...خسارة ان هذا التفكير لم يظهر سوى في ايامي الأخيرة كمعيد. لقد كانت الاستقالة على الابواب.
كانت g4c هي بداية اشياء كبيرة: ان استخدم عقلي ليس لحل مشاكل برمجية، لكن لحل مشاكل خاصة بالمجتمع. نوع من التعميم لمفهوم problem solving.
قدمت المحاضرة الاخيرة في التدريب الصيفي. كانت عن المستقبل: لابد لك كطالب ان تتعلم تكنولوجيات جديدة وانواع جديدة من البرامج (web, mobile, GUI...)، لكن طور نفسك أيضاً في علم الـcomputer science. تعلموا لغات كثيرة، لا تصدقوا من يقول لكم ان لغة واحدة تكفي..ولا تتعلموا فقط اللغات المشهورة. انظروا إلى Haskell أو Lisp، وهي اقوى بكثير من كل ما تعرفون.
ثم في هذه الفترة ظهرت لي خصوبة فكرية...كنت اكتب قصصاً، وافكر في لغة برمجة للموبايل اسمها Kitty (لم انتهي من تصميمها حتى الآن للاسف، وسبقتني مايكروسوفت بلغة TouchDevelop)، وافكر في لغة برمجة عربية...ولم لا؟ فقط لو وجدت لها اسماً جيداً..
ذهبت لمعرض الكتاب في ربيع 2008. وكنت قد استقلت من الكلية واجهز للذهاب للعمل في مايكروسوفت. كانت هناك دار نشر اماراتية لترجمة الكتب الاجنبية اسمها كلمة. بدأت اشعر ان العالم الاسلامي على ابواب نهضة. الا يقولون دائماً ان النهضة الاوروبية بدأت بترجمة الكتب العربية؟ (لكن الاسم قد اوحى لي بإسم للغة البرمجة الجديدة أيضاً..)
هل سأذهب إلى مايركوسوفت أم ابقى في مصر؟
هل سينهض المجتمع فعلاً؟
ما سيكون دوري في نهضته؟
ما اسم لغة البرمجة العربية الجديدة؟
قد جاءت 2012، وبعض هذه الاسئلة نعرف إجابته والبعض لا. تابعوا معنا هذه القصة المثيرة.
هناك تعليق واحد:
متابع حتى 2050 بإذن الله :)
إرسال تعليق