كثير من الصبر.. قليل من الجنون!

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

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

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

 

مناقشات بيزنطية

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

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

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

وقد تسألني: من أين أبدأ تعلم لغات البرمجة؟

أجيبك فأقول: هناك قاعدة مفادها “ابدأ من حيث انتهى الآخرون” أو بمعنى آخر “لا تُعِد اختراع العجلة”، فلغات البرمجة تتطور بسرعة وبطريقة رهيبة، ولا يمكنك مجاراتها إلا إذا بدأت بما انتهى إليه الآخرون.

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

إنّني أصادف أحياناً أشخاصاً يريدون أن يتعلموا جميع اللغات البرمجية، مثل “الروبي، والبي اتش بي، والآي اس بي، والجي اس بي، والسي شارب”، وكل ما هو تحت مظلة برمجة المواقع، ولن أستغرب إذا لم يتمكن مثل ذلك الشخص من تعلم لغة واحدة في حياته.. فلماذا كل هذا التشتت؟

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

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

 

جنون (الأكواد)!

أنا شخص يقدر (الأكواد) (الشيفرات) بشكل جنوني، وجلّ وقته وكل اهتماماته وتركيزه في كتابتها، وأسعد لحظات حياته عندما يقرأ (كوداً) لشخص آخر أو يفك شيفرة مصدرية لتطبيق شهير.

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

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

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

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

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

وإذا كنت تودّ أن تكون مبرمجاً فيجب أن تمتلك مخيلة منطقية وخيالاً واسعاً وصبراً، لأنك لن تحقق هدفك من أول درس، ومن الممكن أن تتعدى المحاولات عشرات المرات دون جدوى، ولكن قم بالمواصلة وسوف تكتشف فجأة أنك أصبحت مبرمجاً محترفاً، ويجب أن تأخذ في الحسبان أنك تتعامل مع “آلة” هي الحاسوب أنت من يقوم بتسييرها، وأن الكمبيوتر ليس أذكى منك!

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