السلام عليكم و رحمة الله تعالى و بركاته
كثر الحديث في أيامنا هذه عن البرمجة و عن ضرورة تدريسها أو جعلها كمادة أساسية في المدارس , و أيضا عن جدواها في التحرر من عبأ الوظيفة اليومية التقليدية بالعمل الحر مثلا أو تأسيس شركتك الخاصة و ما إلى ذلك من حجج في مختلف المجالات .. و بطبيعة الحال إزداد عدد من يودون تعلمها و إزداد شغفهم بها بقدر إطلاعهم على محاسنها و بقدر كبر أهدافهم .. لذلك رأينا أن الكثيرين بدؤوا بدراستها مباشرة من دون تخطيط أو تحديد مجال البرمجة الذين يودون دراسته من دون حتى سؤال أهل الخبرة عن أقصر و أفضل طريق لذلك , فتجدهم يتخبطون هنا و هناك مشتتين في بحر من التقنيات البرمجية المختلفة .. لذلك في هذا المقال سأقوم بتوفير الوقت لهم بحسب ما مررت به أنا من تجارب .
أولا : البرمجة مجرد وسيلة .
تعلم البرمجة هو فقط وسيلة لتحقيق غايتك المرجوة بعد تعلمه , يعني لا تتعلم البرمجة من أجل البرمجة , تعلمها من أجل أهدافك .. التقنيات تولد و تموت و حبك لتقنية ما لن يدوم .. لذلك وجب على من يعقل أن يتعلم ما يمليه عليه مخطط هدفه .
ثانيا : عمرك محدود .
و التقنيات و لغات البرمجة غير محدودة لأنها متجددة و ستبقى تطارد التعلم و لن تصل لنهايته مادمت تتعلم من أجل التعلم , لذلك تعلم من أجل هدفك .. فهو أقصر طريق لظهور نتائج تعلمك بسرعة .
ثالثا : إختر هدفك و لا تجعله ضيقا فتختنق به و لا تجعله واسعا فلا تستطيع مجاراته ..
لنفصل هذه النقطة بسؤال المبتدئين المعتاد :
أريد تعلم البرمجة , ما هي اللغة الأفضل لكي أبدأ بتعلمها ؟
أولا هذا السؤال مبهم جدا و لكي نساعد أحد ما على الإجابة عن هذا السؤال فيجب أن يساعدنا بالإجابة عن هذه الأسئلة أولا :
1- لما تريد تعلم البرمجة ؟
-هل تريد تعلمها من أجل العمل كفريلانس ؟ ما هو السوق الذي تستهدفه .. أجانب أو عرب ؟
-هل تريد تعلمها من أجل عمل مشروعك ؟ تقليل مصاريفه ؟
-العمل لدى شركة تطوير برمجيات ؟
-هل تريد تعلمها كهواية ؟
-... إلخ
2- ما هو المجال الذي تريد دراسته ؟
-تطوير الويب ؟
- -تطوير تطبيقات الأندرويد ؟
- -تطبيقات سطح المكتب ؟
- -تطوير الألعاب ؟
- -تطوير تطبيقات الذكاء الإصطناعي ؟
- -معالجة البيانات الضخمة big data ؟
- -مجال الحماية و الإختراق ؟
- -... إلخ
لو فرضنا أنك تريد العمل كفريلانس و المجال الذي دراسته هو تطوير الويب :
فأولا عليك بتحديد السوق الذي تريد أن تصبح فريلانس فيه (عربي/أجنبي) , فرضا أنك إخترت السوق العربي فهنا يظهر لنا إحتمالين :
الأول دراسة تطوير الويب مباشرة من دون دراسة ما يطلبه السوق العربي و بعد عناء تتجه للسوق العربي لتفاجأ بأن ما كنت تدرسه لا يطلبه أحد أو أن المنافسة شديدة جدا ... إلخ
الثاني أن تتجه الآن إلى السوق العربي و تقوم بالمراقبته و تحليل الطلبات و العروض , عددها في اليوم , هل المنافسة شديدة هنا .. لكي تخرج بمخطط لما ستدرسه . السؤال الآن أين أجد هذه الأسواق ؟ أسواق الخدمات العربية كثيرة منها :
مستقل , خمسات , بعيد , فرهالي , مجتمع التسويق الإلكتروني , كفيل , بيكاليكا , إستكتب .. إلخ
بعد ذلك تطوير الويب كمعلومات بدائية ينقسم إلى قسمين :
أ- الواجهة الأمامية Front_end :
و هي الواجهية الرسومية للموقع , الجزء الظاهر , ألوان أزرار , تقسيمات الموقع , كتاباته , صور , التناسق بينها ... إلخ كل هذا يندرج تحت مسمى الواجهة الأمامية .. يمكنك من تطوير هذا بدائيا ب :
HTML : لغة ترميز , بها يمكنك صنع جداول أو إدراج نصوص أو صور ... لكن ستكون غير منسقة .
CSS : و هنا يأتي دور هذه النقطة , هي مختصة في تنسيق محتوى الصفحة أو بعبارة أخرى تنسيق ال html , مثلا تصغير الصور , تغيير لون الكتابة , وضع تقسيمات بجانب/أسف بعضها البعض , و في الأخير تظهر لنا صفحة منسقة من أعلاها إلى أسفلها .
JS : بالإضافة لما سبق هنالك الجافاسكريبت (لغة برمجية) التي بإمكانها جعل الصفحة حيوية و متجاوبة مع أفعالنا على الصفحة , مثالا يمكننا إخفاء شيئ معين و إظهاره فقط إن قام المستخدم بفعل معين , مثلا إن ضغط المستخدم على عنوان الموضوع فستظهر له نافذة تخبره بتسجيل الدخول لأن المحتوى مرخص قراءته فقط من قبل الأعضاء .
ب- الواجهة الخلفية Back_end :
و هي الواجهة الخفية التي لا تظهر للمستخدم , و فيها تكمن كل الحسابات و المراحل المنطقية التي أعدها المبرمج لسيرورة موقعه مثلا
لو أن المستخدم (أ) أرسل رسالة للمستخدم (ب) فإن ما بين نقر (أ) على زر الإرسال و ظهور الرسالة ل (ب) عدة مراحل برمجها المطور ليضمن وصولها .
لدراسة الواجهة الخلفية يكفي إبتداءا دراسة لغة برمجية مخصصة للواجهة الخلفية , و هنالك الكثير : PHP , PYTHON , RUBY , GOLANG , NODE.JS .. إلخ . بعدها أدرس إحدى قواعد البيانات التي تنقسم إلى قسمين : قاعدة بيانات علاقئية SQL مثلا MYSQL أو لا علائقية NOSQL مثلا MONGODB .
الآن بالجمع بين الواجهتين معا يصبح لدينا Full Stack أي بإمكانك أن تتخصص في إحدى الجانبين أو تدرسها معا .. و لدراستهم معا Full Stack إجمع بينهم أي أدرس الواجهة الأمامية ثم بعد أن تنتهي أدرس الواجهة الخلفية .
لذلك إبدأ أولا بتحديد هدفك و هو سيتكفل بتحديد ما ستفعله لاحقا .
في الدراسة الاكاديمية يتم تعليم علوم الحاسب للطالب وبالتالي هو يستوعب جميع لغات البرمجة من نفس النوع حيث ان لغات البرمجة المختلفة كلها تحمل نفس القواعد الاساسية
اما التفاصيل فهي ضمن مكتبات جاهزة يتم استعمالها لا اكثر ولا اقل
بعد انتهائي من الجامعة، انا الان قادر على استعمال اي لغة برمجية بدون الحاجة لتعلمها، بالطبع احتاج لقراءة المستندات الخاصة بها وربما البحث في جوجل واليوتيوب وهذا شيء ستفعله حتى مع اللغة التي تدرسها
دراسة اللغة نفسها ومحاولة اخبار الاخرين بان كل لغة مستقلة او تحتاج للتركيز فقط امر خاطئ بالنسبة لي! تعلم الاساس فقط وستعرف كل اللغات مرة واحدة.
التعليقات