لا تنسى الإشتراك في قناة تعلم البرمجة على اليوتيوب 

كيف تصبح مبرمجا ناجحا فى ٣٠ ثانية؟

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



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


كيف يمكن أن أصبح مبرمجا من الأساس؟ وهل يتطلب ذلك مهارات خاصة؟
لا، لايجب عليك أن تطير أو تمشي على حبل معلق في الهواء أو تحارب دراكولا فى كهوف ترانسلفانيا، يكفى فقط أن يكون لديك تفكير منطقى قليلا و الكثير من حب المعرفة، فى الحقيقة هدفك هو أن تصل إلى مستوى جيد فى المهارات التالية:
1- مهارة حل المشكلات: أن تقوم بتحليل مشكلة ما كازدحام الطرق بطريقة منطقية واقتراح أفضل الحلول.
2- مهارة كتابة الأكواد البرمجية: وهى أن تكون قادرا على صياغة الحل بطريقة سليمة باستخدام أحد لغات البرمجة أو أكثر وأن تتبع القواعد والمفاهيم المتفق عليها فى كتابة البرمجيات.
3- مهارة تقدير الوقت والتكلفة: من المهارات التى يجب أن تنميها هى تقدير الوقت الكافي لإنهاء مهمة ما أو مشروع ما، من أشهر الأسئلة التى تحاول اكتشاف مستوى المتقدمين لوظيفة مبرمج فى تلك المهارة هى : “أذكر لى عدد محطات البنزين فى جميع محافظات مصر؟” الأسئلة لا تطلب عدد دقيق لكن أعداد تقديرية، توضح كيف يقوم المبرمج بتقدير كمية ما لا يعرفها لكن لديه فكرة عن كيف يمكن حسابها و تقديرها.
4- الإبداع: يجب على المبرمج أن يتميز بمخيلة خصبة تتيح له ابتكار حلول جديدة للمشكلات التى تواجهه، و من أشهر تلك الأسئلة التى تقيس تلك المهارة : “أذكر لى ٢٠ استخدام لأعواد الكبريت؟” أو “أذكر لى ١٠ استخدامات لدبابيس دباسة المكتب؟” ، الهدف منها ليس أن تذكر استخدامات حقيقية تفعلها كل يوم، لكن يمكنك ابتكار استخدامات جديدة من مخيلتك حتى وإن كانت مثيرة للسخرية.
5- مهارات العمل مع فريق: المبرمجون يعملون فى فرق، لا يقوم المبرمج بعمل كل المشروع بمفرده، لذا مهارتك فى التعامل مع أفراد الفريق ومديريك من المهارات الأساسية التى تتوقف عليها تقييم المبرمج.
المهارات أعلاه لا تنفى أن القاعدة الأساسية لأى مبرمج هو معرفته بالعلوم الأساسية للحاسب، وهى تلك العلوم التى تقوم بتدريسها كليات حاسبات و معلومات فى مصر و معظم الدول على السواء، تلك العلوم تقوم بوضع أسس صحيحة يمكن للمبرمجين بعدها اختيار المجال المناسب لهم و اختيار لغات البرمجة المناسبة التى ستساعدهم برمجة التطبيقات فى هذا المجال.


العلوم الأساسية التى يقوم طلبة علوم الحاسب بدراستها كالتالى :
1- * مقدمة فى علوم الحاسب 
2- * تنظيم الحاسب Computer Organisation 
3- * خوارزميات وهياكل بيانات Algorithm and Data Structures 
4- *Design patterns 
5-  *Object Oriented Programming 
6- * رسم بالحاسب Graphics 
7- * قواعد البيانات DataBases 
8- التنقيب على البيانات Datamining 
9- * شبكات الحاسب Networking
10- *التنقيب على البيانات Datamining 
11- نظم التشغيل Operating system Discrete Mathematics (يمـكن الإطلاع على دورة تعليمية على يوتيوب من جامعة UC Berkeley) 
12- التفاضل Calculus Ordinary Differential Equation Partial Differential Equation 
13- إحصاء Statistics 
14- فيزياء Physics بحوث عمليات Operation Research 
15- هندسة البرمجيات Software Engineering 
16- * برمجة الويب Web Development
المجموعة السابقة جزء من قائمة طويلة من المناهج التى يقوم بدراستها مرتادى كليات علوم الحاسب، بعضها أهم من غيرها وقد قمت بوضع علامة (*) أمام المناهج التى تؤثر بشكل مباشر على عمل المبرمج بشكل يومى وتترك فرق فى طريقة تفكيره و إنتاجه.

ماذا على أن افعل بالتحديد لكي أصبح مبرمجا ناجحا؟
1- قم بالتعرف على المناهج الأساسية التى يدرسها الطلاب الاكاديميين: تعرف على تلك الفروع من خلال صفحاتها على ويكيبيديا، قم بالتبحر قليلا بها وأبحث كما تريد، أنت تتعرف على ما يكون علوم الحاسب ويعطيها أهميتها فى حياتنا فاعتبر نفسك فى منزلك.
2- قم بدراسة منهج أو كتاب فى المناهج الأساسية التى قمت بالإشارة لها بعلامة (*): ستعطيك أساس قوى سيمكنك من البناء فوقه بسهولة فيما بعد، يمكنك أن تجد معظم المناهج على قناة MIT OpenCourseWare على يوتيوب أو إن كنت تفضل الكتب سيكون الأمر أفضل بالتأكيد و ستجد قوائم من الكتب على موقع أمازون إن قمت بالبحث باسم الفرع.
3- قم باختيار المجال الذى تحب أن تعمل فيه: تلك الخطوة ستكون الأصعب بالتأكيد، الكتير من طلبة حاسبات بل وبعض الخريجين لا يستطيعون تحديد مايريدونه حقا و تبدو الأمور مشوشة، لكن ها هى دفعة صغيرة لك لكى تقترب مما تريد: قم بتخيل نفسك فى سن ال٦٠، تصحوا يوميا لتذهب للعمل، ماذا تريد أن تكون نوعية البرمجيات التى ستعمل عليها؟ ما هو نوع التطبيقات التى أفنيت عمرك فى تطويرها و التخطيط لها؟”، هل هى برمجة الويب؟، مهندس قواعد بيانات؟ مهندس شبكات؟ مبرمج تطبيقات سطح مكتب؟ مبرمج العاب؟ الاختيارات غير محدودة و تعتمد على خيالك و اصرارك على النجاح.
4- قم باختيار لغة برمجة مناسبة للمجال: حاول أن تكون لغة البرمجة مريحة لك، مطلوبة فى سوق العمل، و لها تاريخ طويل ومجتمع يحيط بها كبير نسبيا، تعلم تلك اللغة، أغرق نفسك بمصادر لتعلمها، تابع مواقع المبرمجين الخاصين بها، تابع أخبارها من كل المصادر المتوفرة وكل موقع ممكن ان تستخلص منه معلومات عن لغة البرمجة تلك.
5- كن على اتصال دائم بالمبرمجين الذين يعملون فى نفس مجالك: انضم لمجموعاتهم على الشبكات الاجتماعية، انضمامك لهم و مشاهدتك لمناقشاتهم فقط ستحسن من مستواك و ترفع من وعيك بالمجال الذى تعمل فيه.
6- أظهر أعمالك: يمكنك أن تكون جيد كما تريد لكن بدون إظهار أعمالك لن يعرف احدا أنك موجود من الأساس، اصنع تطبيقاتك، نفذ أفكارك الخاصة و قم بعرضها للناس، اهتم بتسويق نفسك وأعمالك و مهاراتك، سيوفر لك هذا العمل الذى تتمناه، وعند عرض أعمالك و التعرض للنقد سيحسن ذلك من مستواك و يدفعك دوما للأمام.
7- كن مرنا: لغات البرمجة مجرد أدوات لتصل إلى هدفك وهو إنجاز المشروعات، فى سبيل ذلك نقترب جدا من لغات البرمجة لنعرف عنها الكتير و ننسى تلك المعلومة الأساسية جدا و يتحول الأمر إلى ارتباط عاطفى أكثر منه علاقة عمل، إن كانت لغتك بها بعض العيوب أو أصبحت تشعر بأن هناك لغة أخرى أفضل منها انتقل لها تدريجيا، لغات البرمجة ليست أديانا و عليك أن تعاملها كما هى “أداة لبرمجة تطبيقاتك” يمكنك أن تبدلها بأفضل منها متى شئت.
8- حافظ على شغفك و حبك للعلم: إن توقفت يوما عن القراءة و التعلم فأعلم انك تراجعك خطوة للوراء، العلم فى كل المجالات يتقدم بشكل سريع إن اكتفيت بما تعلمته فى يوم من الأيام، ستجد أنه يوما ما لن تعلم ما الذى يجرى حولك ولا ما الجديد فى تلك اللغة وأن عملك لم يعد مهما لأن الجميع يقوم بعملك بشكل أسرع وأكثر كفاءة وحرفية، لذا عليك دائما بتعلم الأدوات الجديدة، اكتشاف لغات برمجة أفضل و متابعة أخبار التكنولوجيا بشكل عام.
فى النهاية، أن تكون مبرمجا ناجحا طريق طويل يعتمد على الكتير من المهارات و يتطلب التضحية و المثابرة، وهو فى الحقيقة طريق ممتع من جوانب عدة، ولن يكون هناك أفضل من تلك المقولة التى توضح لك كيف أن اجتهادك و مثابرتك قد تجعلك على قوائم أغنى الرجال فى العالم :
"الطريقة المثلى لتكون مبرمجا ناجحا هو أن تكتب تطبيقات، وأن تدرس تطبيقات عظيمة كتبها مبرمجين غيرك، فى حالتى، قمت بالنبش فى صفائح القمامة فى مركز علوم الحاسب وقمت بإصطياد قوائمهم عن أنظمة التشغيل الخاصة بهم." 
                                                                                                                 بيل جيتس مؤسس شركة ميكروسوفت




تعبيراتتعبيرات