أستعجب ممن يحاولون تعليم الأطفال أو المُراهقين البرمجة و يوجهونهم بكل غباء لتعليم البرمجة من الصفر كأنهم بالغين فيحولونها بكل سذاجة من مُتعة عقلية و رياضات ذهنية لعمليات روتينية مملة سخيفة, فما فائدة تعليم من لا يعرف القراءة بل لا يعرف حروف اللغة بعد,  أن يقرأ معاجم معقدة فى النقد البلاغى؟

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

قلت و أكرر و سأكرر أن الطفل يجب أن يوضع فى إطار إنتاج ما يهتم به و يُعلمه فى نفس الوقت و يشعر بالإنتاجية و هنا أشير على الكثير بوضع أبنائهم بمسار برمجة الألعاب لعدة أسباب:

أولها: أنها ستعلمه إغلاق مشاريعه و هذا الأهم, و الكثير من المطورين و المبرمجين لا يتعلمون و يعرفون كيفية "تقفيل" مشاريعهم الخاصة بسهولة.

ثانيها: برمجة الألعاب تعلمه تحديد أهدافه و تقسيمها لمراحل كاللعبة تماماً

ثالثها: سيتعلم كيفية إدارة العناصر البرمجية بشكل تدريجى مطلوب, و ليست العناصر البرمجية فقط, بل الفنية أيضاً, كالشخصيات, و الرسوم, و الأنيميشن و غيرها

رابعاً: حل المشاكل فبرمجة الألعاب بمراحلها و ستعلمه كيفية التعامل مع المشاكل و تفصيصها أو تشريحها و حلها بشكل برمجى ممنهج منظم.

خامساً: الرياضيات, لا داعى لشرح هذا الأمر, فبرمجة الألعاب برياضياتها المُعقدة أفضل الرياضات الذهنية

سادساً: التخطيط وضع الخطط و تنفيذها, و هذا سيكون مُلزماً له عند تصميم اللعبة و مراحلها و قواعدها و قوانينها

سابعاً: أنه سيكون منفذا و منتجاً و مستخدماً أيضاً و مُختبراً لمنتجه, و هذا قلماً وجد بين المطورين و المبرمجين؟

ثامنا: قواعد اللعبة, لكل لعبة قواعد, بل لكى شئ فى الحياة قواعد و قوانين, فتعلم اكتشاف هذه القواعد عبر برمجتها هى أفضل تدريب حقيقى لهم على التحليل المنطقى لاكتشاف قواعد ما يتعلمون أياً كان, (يقولون أنى أتعلم بسرعة, لا الحقيقة أنى أجد القواعد لما أتعلمها بسرعه و أتقنها فأتقدم بسرعة).

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

عاشراً: التقدم المُستمر, برمجة الألعاب تُعلم بذاتها التقدم سواءاً فى التخطيط, الهدف, الوظيفة, أو التعلم, فكل شئ مراحل و كل مرحلة لها قواعد و قوانين.

إحدى عشر: الثبات و الإنتاجية و العملية, مبرمج الألعاب يميل للثبات و العملية و الإستقرار عن غيره, و من كان له تجربة ببرمجة الألعاب يكون أكثر عملية من غيره.

إثنى عشر: برمجة الألعاب ليست كغيرها, فالمشكلة عادة "معرقلة" لما بعدها و تتطلب الحل للإستمرارية, و تحدى النفس هو رأس الحرب و سن السيف هنا.

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


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


و عن تجارب.