بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
حين اتذكر الاشخاص الذين تعرفت عليهم فى المجال ويعملون فى عالم البرمجة
اتذكر الاجابة التى اسمعها عند سؤالى لهم ماذا تعمل ؟
كثيرا مااسمع الاجابة - مبرمج كمبيوتر او مطور برمجيات
Computer Programmer او Software Developer
حقا انها ليست اجابة شافية ابدا ذلك لانها تدفعنى الى ان اسأل العديد من الاسئلة حتى اعرف
بالتحديد مع من اتحدث
كنت فى بدايتى بسيطا جدا اسال سؤالا شائعا ثم اتوقف عن الكلام
حضرتك شغال بلغة ايه ؟
فكنت اسمع اجابات بسيطة عبارة عن اسم لغة برمجة مثل فيجوال بيسك او سى ++ على
سبيل المثال لا الحصر
ومع الوقت تفتحت عينى وعلمت ان المحترفين يستخدمون اكثر من لغة برمجة وهذا مايطلق
عليه Mixed Language Programming وهو الخلط او الدمج بين اكثر من لغة
برمجة اما من خلال استخدام مكتبات يتم ربطها عن طريق Static Linking او Dynamic Linking او عن طريق تكنولوجيا COM او DCOM او +COM على
سبيل المثال لا الحصر.
وحينها اصبح السؤال
ايه اللغات الى حضرتك اشتغلت بيها ؟
وعندها اصبحت اسمع عددا من اللغات مثل بدات بلغة باسكال ثم تغير السوق وانتقلنا الى كليبر
ثم الفيجوال بيسك وهكذا.
ومع الوقت وحين ادراكى الحقيقى لان هناك اكثر من نظام تشغيل على الساحة بعضها نظم
متطورة تتنافس على الصدارة وبعضها انظمة قديمة ولكنها مازالت مستخدمة فى اماكن خاصة
اصبح فى جعبتى سؤال اضيفه الى السؤال السابق
هو حضرتك بتبرمج لنظام ايه ؟
فكنت اتوقع ان اسمع اجابة مثل دوس او ويندوز او يونكس او لينكس او ماكنتوش
ومع تمرسى ومعرفتى بان هناك مايعرف بالتطبيقات المتنقلة Portable Applications وهى التطبيقات التى تعمل على اكثر من نظام تشغيل تطور السؤال ليصبح
هى ايه الانظمة الى حضرتك بتبرمج ليها ؟
وحينها اكون متوقعا لان اسمع اجابة مثل انا شغال جافا Java مش تفرق معايا او انا شغال سى ++ وبختبر برامجى على ويندوز ولينكس وماكنتوش لانى شغال Qt او wxWidgets
مع ادراكى للشبكات واهمية التطبيقات التى تدعمها اصبح السؤال التالى محل نظر
هو حضرتك بتعمل برامج Desktop والا شبكات Networks؟
ومع ثورة الانترنت ازداد الطلب على تطبيقات الانترنت والنظم الموزعة واصبح لدينا سؤال اخر
هو حضرتك اشتغلت فى Web Applications ؟
ولان الموبايل اصبح تقريبا فى كل منزل وانتشرت تطبيقاته اصبح معنا السؤال التالى
هو حضرتك اشتغلت فى برمجة تطبيقات الموبايل Mobile Applications ؟
ولانى ارى من حولى العاب كثيرة على الاقل قمت بتجربة العشرات منها فان لدى سؤال
هو حضرتك اشتغلت فى برمجة الالعاب Games Programming قبل كده ؟
ولمعرفتى لان امن المعلومات Information Security اصبح يلعب دورا كبير
اصبح هناك سؤال اخر
هو حضرتك اشتغلت فى Security قبل كده ؟
وهكذا مع الابحار فى عالم البرمجة اصبحت كل خطوة تضيف سؤال الى محادثة الحوار التى
تتم بينى وبين من اتعرف عليه من مطورى البرمجيات
وطبعا فى وقتنا الحالى اصبح من الصعب ان تسال 1000 سؤال لمعرفة مع من تتحدث من
المبرمجين او المطورين
ولهذا كان لابد من ان اجعل فى زاكرتى اسئلة سريعة ومحددة حتى اعرف مااريد بسرعة
اولا : اسئلة تحدد المكان الذى يسكنه المبرمج او المطور فى عالم البرمجة
1 - حضرتك شغال بلغات ايه ؟
2 - حضرتك بتبرمج لنظم تشغيل ايه ؟
3 - حضرتك اشتغلت فى مجالات ايه ؟
4 - حضرتك عملت مشاريع ايه ؟
ثانيا : اسئلة تحدد مستوى الخبرة فى المكان الذى يسكنه المبرمج او المطور
5 - حضرتك بدات البرمجة امتى ؟
6 - حضرتك اشتغلت فى فريق عمل قبل كده ؟
7 - كام شخص فى الفريق ؟
8 - موقعك فى الفريق ؟
اما بخصوص المهارة فان الاسئلة اذا بدات لن تنتهى
والاسئلة تتوقف على المجال الذى سوف يعمل فيه الشخص
مثال :-
فيما يلى نموذج لاسئلة فنية تتناسب مع مجال معين من المجالات وتتطلب مهارات خاصة
حيث ان المبرمج سوف يستخدم برمجة الكائنات احيانا والبرمجة الهيكلية فى احيان اخرى
وسيكون مطرا للتمثيل كم هائل من البيانات فى الذاكرة والتعامل معه كما ستكون هناك حاجة
لان يتم التعامل مع الواجهة الرسومية من الصفر بالاضافة الى التعامل مع ملفات البيانات من
النوع xBase اى ملفات DBF بالاضافة الى ضروة التحكم بسير العمليات من خلال بناء
نظام لادارة الاحداث Event-Driven System من الصفر او التعامل مع نظام موجود
بالفعل.
9 - ماهو هو مفهومك عن البرمجة الهيكلية ؟
10 - ماهو مفهومك عن برمجة الكائنات ؟
11 - متى تستخدم البرمجة الهيكلية ومتى تستخدم برمجة الكائنات ؟
12 - ماهو هو مفهومك عن هياكل البيانات ؟
13 - هل سبق وان استخدمت فى مشروع اكثر من 500 مصفوفة متعددة الابعاد ؟
14 - هل سبق وان استخدمت فى مشروع العديد من Tree كيف ترتبها برمجيا ؟
15 - ماهو مفهوم عن نظام ادارة الاحداث Event-Driven System ؟
16 - ماهو الفرق بين نظام ادارة الاحداث وبين تعدد المهام Multi Tasking ؟
17 - ماهو وجه الشبه بين نظام ادارة الاحداث ونظام تعدد المهام ؟
19 - هل سبق وان تعاملت مع Pointers ؟ اذكر مثال حيوى ؟
20 - هل سبق وان تعاملت مع Function Pointers ؟ اذكر مثال حيوى ؟
21 - لماذا صممت SQL ؟
22 - هل سمعت عن xBase ؟
23 - ماهو الفرق بين SQL و xBase ؟
24 - متى تستخدم SQL ومتى تستخدم xBase ؟
25 - هل سبق وان تعاملت مع كارت الشاشة مباشرة ؟
26 - هل لديك خبرة فى عمل مكتبة جرافك Graphic Library ماذا تعرف عن VESA؟
27 - هل لديك خبرة فى عمل واجهة رسومية GUI ماهى مراحل بنائها ؟
28 - هل قمت مسبقا بعمل برامج للتصميم مثل مصمم النماذج Form Designer ؟
29 - كيف تقوم ببناء نظام لادارة الاحداث ؟ هل سبق وان تعاملت مع احدى هذه النظم ؟
ويشترط فى النموذج ان تكون الاسئلة شاملة المهارات المطلوبة
وفى نفس الوقت غير معقدة بمعنى لا تتطلب ساعات للاجابة مع مراعاة ان العديد من المبرمجين
المهرة لايستطيعون حل المسائل بالكلام او بالكتابة فقط وانما بالتجربة العملية ولهذا فان المناقشة
ليست ساحة للعمل وانما لمعرفة هل الشخص مناسب للعمل.
والان دورك عزيزى القارىء ان تقوم بتعبئة الكارت الخاص بك ليشمل اللغات ونظم التشغيل
والمجالات والمشاريع التى عملت فيها حتى تكون مستعدا لمثل هذه المحادثات وايضا كى ترى
ماذا ينقص الكارت حتى تكمله او تقلل من النقص قدر ماتستطيع فانا اعلم جيدا ان مجالنا اذا حدث وكان له بداية فانه بلا نهاية (على الاقل مقارنة بقدرتنا كبشر)
والله الموفق


