البرمجة .. عالم فريد من نوعه ، لا أتكلم لك هنا عن مهارات الويب و السيو و الربح من الأنترنت و ما الى ذلك ، فأنا حقا اؤمن تماما ان تلك المهارات يمكن لأي شخص ان يكتسبها ، كذا البرمجة ، لكن البرمجة تتطلب أشخاصا محنكين في مجال الحاسوب هذا ، ربما تخبر يوما مبرمجا انه لديك مشكل في القرص الصلب او الرام ، فيجيبك ببساطة " لا أدري ما المشكلة ! " فتنتقده و تنظر إليه نظرة إحتقار ، لا عيب في ذلك صديقي ، فنحن مبرمجون و لسنا مصلحي حواسيب ، نحن نصلح البرامج و المواقع .. حدثتك في وقت سابق على موقعنا عن أشياء تجعل من المبرمج أفضل صديق لك ، و أخبرتك عن شخصية المبرمج و نفسيته وما الى ذلك ، لكن قد تفكر يوما في إمتهان او الدخول الى عالم البرمجة لتكون انت ذلك الصديق ، لا مشكلة في هذا ، دعني إذن أشرح لك في هذا الموضوع بعض المشاكل و الصعوبات التي ستواجهها اثناء إمتهانك لمهنة البرمجة ، فإن كنت مبرمجا جديدا ، فمن شأن هذه الصعوبات و المشاكل ان تحفزك أكثر لتتعلم و تجتهد في هذا المجال ، و إن كنت مبرمجا من قبل ، فأعتقد انك ستضحك طيلة قرائتك لهذا الموضوع ، لأنني سأحكي عن مشاكل واجهناها جميعا
.. لنبدأ :
- البرمجة امر صعب :
لا أحد يخبرك بهذه الحقيقة ، الكل يخبرك
بأن البرمجة سهلة ما هي إلا حفظ أكواد عن ظهر قلب و إعادة إستدعاءها من أجل الإشتغال
بها ، نعم ربما يمكننا ان نقول ذلك إذا ما تحدثنا عن الHTML ،
إن كانت هي أصلا لغة برمجة من أساسه ، فكل من يريد ان يبدأ عالم البرمجة يبدأ بالHTML فيتعلم كيف يكتب كودا فالBody فيلقب نفسه بالمبرمج المحترف ، لا ألومه
رغم ذلك ، عالم البرمجة صعب ، فالحاسوب لا يستقبل سوى رقمين 0 و 1 ، إما ان يفعل ،
و إما ان لا يفعل ، فأن توصل له فكرة ان يفعل شيئ ما من خلال سيرورة من الأكواد لهو
أمر جد صعب ، قد لا تجد هذه الصعوبة اثناء برمجتك لعبارة Hello
World ، و ربما قد لا تجد هذه الصعوبة أيضا اثناء برمجتك
لآلة حاسبة بسيطة تشتغل على الكونسول ، لكن صدقني ، ستجد هذه الصعوبة حتما عند برمجتك
لبرنامج متكامل بكل حذافره ، او برمجتك لتطبيق كامل أيضا ، او موقع من الألف الى الياء
. لذلك ، إن كنت مبرمجا جديدا في هذا المجال ، فعليك ان تدرك ان البرمجة تتطلب الذكاء
قبل الحفظ ، اما ان كنت مبرمجا سابقا ، فأجزم انك واجهت العديد من الصعوبات أثناء صناعتك
لبرنامج مصغر .
- الBUGS :
من المشاكل الكثيرة و المتعددة التي ستواجهك
أثناء مسيرتك في عالم البرمجة ، قلما نجد مبرمجا يكتب كودا مطولا ثم يقوم بتشغيله فيشتغل
في الوهلة الأولى ، في الحقيقة ، نادرا ما نجد هذا الأمر ، فحتى المبرمجون المحترفون
و المحنكون يحدث لهم ما يحدث لك ، المشكلة
ليست في ان يظهر لك المشكل او الBug ، المشكل صديقي هو انك تكتب سطرين من الاكواد البرمجية ، و يظهر لك 5 أخطاء
في الكود الخاص بك هههه ، المشكل الأخر أيضا صديقي المبرمج ، انك ستقضي 15 دقيقة في
كتابة الأكواد ، و 5 ساعات في حل المشاكل ، بل العجيب و الغريب في الأمر صديقي ، قد
تجد في الأخير ان سبب المشكل ما هو الا انك نسيت ان تقفل كود برمجي (;) ، بل حتى انه
يمكنك فقط ان تقفل البرنامج و تذهب لتشرب كوبا من القهوة و تعيد تشغيل البرنامج و قد
يشتغل معك ، مشاكل معقدة ، في الغالب انت لا تدري ماهية المشكل و ما سببه ، انت فقط
تخمن هنا و هناك و تلقي بالأكواد ميمنة و ميسرة حتى يتم إصلاح المشكل ، حتى بدون أن
تعلم كيف أصلحته او ما سبب المشكلة من أساسه ... مرحبا بك صديقي في عالم البرمجة .
- ان تصلح برنامجا لم تكتبه :
عندما يتعلق الأمر ببرمجة برنامج من الصفر
، قد تتذمر قليلا ، لكنك فور ان تبدأ تحليل البرنامج و بناءه شيئا فشيئا في عقلك ،
حتى تتوقف عن التذمر و تبدأ في التكويد ، الأمر مخالف 180 درجة عند اعادة كتابتك لبرنامج
لم تكتبه او التعديل عليه او إصلاحه ، لكن هل تعرفون ما الأسوأ ؟ ان لا يحتوي الكود
سورس على تعليقات مناسبة توضح كل سطر من الأكواد ، ستضطر في هذه الحالة الى ان تعيد
قراءة الكود سطرا بسطر ، بل و أن اغلبية الأكواد لن تفهمها و ستضطر الى ان تجرب كودا
بكود من أجل معرفة ماهيته و كيفية إشتغاله ، بل ستصل الى مرحلة تخبر رئيسك ان صناعة
نفس البرنامج بمؤهلات أفضل و تعديلات احسن سيكون أفضل من التعديل على هذا الكود ، لكنه
سيرفض لا محالة ، و ستضطر لقضاء الأيام العشر القادمة في فهم الكود و طريقة إشتغاله
، و بعدها التعديل عليه و انت تلعن صاحب هذا الكود الذي لم يضع تعليقاته على برنامجه
، مبرمج هاوي !
.
- عدم إشتغال البرنامج بعد تسليمه :
لا يخفى عليك انني وقعت في نفس هذا المشكل
مرة ، و دعني أحكي لك قصتي البسيطة ، طلب مني في أحد المرات ان ابرمج برنامج صغير مختص
في الإدارة ، قمت ببرمجة البرنامج بلغة الC# ، بعد أن انتهيت من كل شيئ من أكواد و تصميم واجهات
و صناعة قاعدة البيانات ، حانت اخيرا لحظة تجربة البرنامج ، قمت بتشغيله و جربته من
كل زر و كل إمكانية ممكنة ، و إشتغل البرنامج بشكل صحيح ، ناديت على صديقي الجالس بجانبي
و طلبت منه ان يجرب البرنامج ، و جربه و كان كل شيئ في محله ، ثم ناديت على احد الأشخاص
من المكتب المجاور ( وهو المكتب الذي سيشتغل بالبرنامج بعد تسليمه لهم ) و جرب البرنامج
بكل حذافره فكان كما المطلوب من كل النواحي و بدون أخطاء ، قمت أخيرا بإستخراج ملف
التثبيث
Setup للبرنامج و قدمته لهم ، بعد تنصيب البرنامج ، تهاطلت
الأخطاء من كل الأماكن ، كان موقفا محرجا جدا بالنسبة لي ، شيئ لم اتوقعه ان يحدث ،
لم اكن مضطرا لإعادة كتابة البرنامج او شيئ من هذا القبيل ، فقد كان مشكل بسيط في الكود
قمت بإصلاحه ، لكنه لم يصلح ذلك الموقع المحرج الذي تعرضت له .
الخلاصة صديقي ، عند إشتغالك كمبرمج ، قد
لا تدري من اين تتهاطل عليك الأخطاء و المشاكل ، و راجع الأمر مرات و مرات حتى لا تسقط
في نفس الموقع الذي تعرضت له
.
- عامل الوقت :
إن كنت مبرمج هاوي او تمارس البرمجة من
حين لأخر ، فأعتقد انك هذه الفقرة غير مخصصة لك ، لكن ، بالنسبة لمن يحترفون البرمجة
او هي مصدر دخلهم و رزقهم فأعتقد انهم سيفهمونني جيدا ، الوقت عامل جد مهم صديقي ،
حتى في حياتنا اليومية ، لكن في مجال البرمجة ، فالوقت يبقى معضلة جد كبيرة ، فأن يطلب
منك مديرك او زبونك ( حسب وضعية إشتغالك ) ان تنشأ برنامجا مختصا في إدارة المعاملات
المالية الخاص بالشركة في ظرف أسبوعين لهو أمر جد صعب ، المشكلة ليست برمجة البرنامج
، بل المشكلة تكمن في وقت برمجته ، فأنا لا ادري انواع الأخطاء و المشاكل التي قد تواجهني
، قد اسقط في مشكلة ربما لن أحلها الا على بعد أسبوعين او اكثر ، لا امزح معك صديقي
، ستواجه مشاكل تقعد في حلها بالشهور ، و أرجو ان يكون لك عوين أثناء ظهور هذا المشكل
، لا ننسى فترة برمجة البرامج و غيرها ، فهي الأخرى ستأخذ منك الوقت ، و إن فكرت في
تحميل برنامج مشابه من موقع
GitHub و إعادة تعديله ، فلازالت مشكلة الوقت معضلة
أمامنا ، فكل ما يمكنني قوله ، طوبى لهواة البرمجة و الذين غير مضطرين لإحترام جدول
زمني لبرمجة برامجهم ، و لا تنسى تداخل البرامج في مدة زمنية معينة ، حقا ستتمنى او
ان الدقيقة تمر كالسنة من أجل التوفيق بين برامج لتقديمها في الوقت المعين .
- ان لا تجد إجابة لسؤالك على موقع StackOverFlow :
لا يوجد مبرمج في هذا العالم لا يعرف موقع StackOverflow ،
فهو حلال المشاكل بالنسبة للمبرمجين ، إن حدث لك مشكل اثناء برمجتك لأحد البرامج او
المواقع بأي لغة كانت ، او كنت تبحث عن كود معين لإنجاز مهمة معينة ، فيكفي ان تكتب
مشكلتك في جوجل ، لا تبحث عن رابط لموقع مايكروسوفت او اوراكل للبحث عن الإجابة ، إبحث
في الروابط عن موقع
Stackoverflow ، شاهد السؤال المطروح و هل
يناسب وضعيتك ، ان كان الجواب نعم ، انزل قليلا الى الأسفل لتجد جوابا مختوما و مجربا
، قم بفهمه ، اخذه ، جربه ، و ها قد تم حل المشكل بنجاح ، لكن ليس في كل مرة تسلم الجرة
، قد تطرح سؤالا في أحد الأحيان و تجده على موقع Stackoverflow ، فتنزل قليلا ، و لا تجد
إجابة لإستفسارك ، يا لها من خيبة أمل ، و المشكل ، ان تجد ان السؤال تم طرحه سنوات
خلت ، يا رباه ! هل سيتوجب علي الأن ان اجد الحل في مواقع أخرى ؟ لا ، ان لم تجد الحل
في موقع
Stackoverflow فلن تجده في مواقع أخرى و أضمن لك هذا ،
سيتوجب عليك الأن ان تعود للوضع التقليدي و تحضر ورقة و قلما ، و تفكر و تخطط و تشغل
مخك و ذكاءك قليلا و بروية الى ان تستخرج بنفسك الكود و تجربه ، و لندعو ان يشتغل معك
، فإن إشتغل ، لا تنسى مشاركته على
Stackoverflow حتى يستفيد منه غيرك ، هكذا سياسة المبرمجين
، وسأضمن لك انك ستتصفح موقع
Stackoverflow مستقبلا اكثر من أي موقع اخر على الإطلاق .