السلام عليكم و رحمة الله تعالى و بركاته

كثر الحديث في أيامنا هذه عن البرمجة و عن ضرورة تدريسها أو جعلها كمادة أساسية في المدارس , و أيضا عن جدواها في التحرر من عبأ الوظيفة اليومية التقليدية بالعمل الحر مثلا أو تأسيس شركتك الخاصة و ما إلى ذلك من حجج في مختلف المجالات .. و بطبيعة الحال إزداد عدد من يودون تعلمها و إزداد شغفهم بها بقدر إطلاعهم على محاسنها و بقدر كبر أهدافهم .. لذلك رأينا أن الكثيرين بدؤوا بدراستها مباشرة من دون تخطيط أو تحديد مجال البرمجة الذين يودون دراسته من دون حتى سؤال أهل الخبرة عن أقصر و أفضل طريق لذلك , فتجدهم يتخبطون هنا و هناك مشتتين في بحر من التقنيات البرمجية المختلفة .. لذلك في هذا المقال سأقوم بتوفير الوقت لهم بحسب ما مررت به أنا من تجارب .

أولا : البرمجة مجرد وسيلة .

تعلم البرمجة هو فقط وسيلة لتحقيق غايتك المرجوة بعد تعلمه , يعني لا تتعلم البرمجة من أجل البرمجة , تعلمها من أجل أهدافك .. التقنيات تولد و تموت و حبك لتقنية ما لن يدوم .. لذلك وجب على من يعقل أن يتعلم ما يمليه عليه مخطط هدفه .

ثانيا : عمرك محدود .

و التقنيات و لغات البرمجة غير محدودة لأنها متجددة و ستبقى تطارد التعلم و لن تصل لنهايته مادمت تتعلم من أجل التعلم , لذلك تعلم من أجل هدفك .. فهو أقصر طريق لظهور نتائج تعلمك بسرعة .

ثالثا : إختر هدفك و لا تجعله ضيقا فتختنق به و لا تجعله واسعا فلا تستطيع مجاراته ..

لنفصل هذه النقطة بسؤال المبتدئين المعتاد :

أريد تعلم البرمجة , ما هي اللغة الأفضل لكي أبدأ بتعلمها ؟

أولا هذا السؤال مبهم جدا و لكي نساعد أحد ما على الإجابة عن هذا السؤال فيجب أن يساعدنا بالإجابة عن هذه الأسئلة أولا :

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 إجمع بينهم أي أدرس الواجهة الأمامية ثم بعد أن تنتهي أدرس الواجهة الخلفية .

لذلك إبدأ أولا بتحديد هدفك و هو سيتكفل بتحديد ما ستفعله لاحقا .