السلام عليكم
في الفترة الاخيرة لاحظت ان كثيراً من معارفي اتجهو لطريق حل المشكلات البرمجية وتعلم اجزاء معينة حصراً بدون الالمام باي شئ اخر
فاحببت التكلم والمقارنة بين البرمجة في حياتنا الواقعية vs التحضر لحل المشكلات والمسائل ومسابقتها
ملاحظة: كل ماسأقوله عبارة عن راي شخصي لا أكثير , ليس بالالزام ان يكون مناسب لك او تقتنع به
في الفترة الاخيرة اتجه عدد كبير من الناس ليبداو تعلمهم للبرمجة بالاساسيات ثم OOP ثم DS , Algorithms وهذا هو الطريق الصحيح لاينكر احد ذلك بتاتاً.
لكن ماياتي بعد ذلك , بعد ان تكون اتممت تعلمك لاساسيات البرمجة وتقنياتها غالباً ستتقنها من خلال لغة برمجية وحيدة ولكن فهمك الجيد لها سيسهل لك انتقالك لاي لغة اخرى.
ينتقل الاشخاص للتدرب لمسابقات مثل ACM ECPC ثم يتاهلون لشئ اعلى ACM ICPC يكون كل تركيزهم على مسائل رياضية ومسائل محدودة في بعض المكتبات الاساسية واشياء اخرى بسيطة.
الامر جيد , لكن ان تقضي كل وقتك حتى تنهي الجامعة في حل المسائل بدون احتكاك باي شئ واقعي او انتاجك وتدربك على البرامج في الحياة الواقعية.
اشبه الامر باختبار عندما كنت في المرحلة الثانوية في السعودية يدعى امتحان القدرات نعم انا افهم مسائل واحلها في وقت اسرع واتدرب ولكن بعد هذا الكم والتعب خلال سنتين او ثلاثة ماذا استفدت لا شئ يذكر.
عندما تفكر في تلك المسابقات لكي تقضي معظم وقتك في حل المسائل انت تضع بين نصب عينيك ان تترشح وتعمل في كبرى الشركات المرموقة Big 4 مثلا Google , Facebook , Microsoft , Amazon وغيرها , لاننكر طبعاً ان اي مبرمج يتمني ان يصل الى هناك باي ثمن
لكن بعد تضييعك ل4 سنين وفي اسوء الحالات لم تحقق مركز جيد في المسابقة او في حين حققت مركز جيد ولم تعمل في احد الشركات , كل شئ قضاء وقدر , سوف تفكر ان تعمل , وحينها ستصطدم بالحياة الواقعية , الشركات تطلب ان يكون معاك عدة تقنيات حديثة او لغتا برمجة على الاقل ويكون لك مشاريع بهما , ستجد ان اقرانك يحققون المتطلبات في حين يمكن الا يكون لديهم نفس الخلفية البرمجية او نفس الاساس المتين الذي لديك لكنهم لديهم مايطلبه سوق العمل لكي يعملو, اما انت فلا , لو دخلو في interview في شركة عالمية للمتخرجين حديثاً Fresh Graduated ستنجح انت لانك اقوى منهم , وهم يكمن ان يمرو او لا , لكن هل تضمن ان تمر من مرحلة الفلترة لعدد مهول من المقدمين وتمر مباشرة لمرحلة الانترفيو بدون recommendation من قبل احد يعمل بداخل الشركة , الامر يصبح اصعب
لذا رايي ونصيحتي للجميع:
لابد لكي تصبح مبرمج جيد وتكون مؤهل للعمل في اي مكان ان يكون لديك اساسي برمجي قوي وان تكون على معرفة جيدة بال Data Structures و الAlgorithms بجانب ذلك يجب ان تتقن لغة برمجة او تقنية معينة مطلوبة في سوق العمل وتقوم بعمل بعض المشاريع عليها , في حين لم يوافقك الحظ في شركة عالمية , سيكون متاح لك ان تعمل في اي شركة تريدها لان اساسك قوي مع معرفة جيدة بتقنية وهذا جلُّ مايريدون.
جميل جدآ اخوى ولكن هل لديك اى افكار مشاريع بالجافا ؟