نصائح للمقبلين على تعلم البرمجة
كثر الحديث في أيامنا هذه عن البرمجة و عن ضرورة تدريسها أو جعلها كمادة أساسية في المدارس , و أيضا عن جدواها في التحرر من عبأ الوظيفة اليومية التقليدية بالعمل الحر مثلا أو تأسيس شركتك الخاصة و ما إلى ذلك من حجج في مختلف المجالات .. و بطبيعة الحال إزداد عدد من يودون تعلمها و إزداد شغفهم بها بقدر إطلاعهم على محاسنها و بقدر كبر أهدافهم .. لذلك رأينا أن الكثيرين بدؤوا بدراستها مباشرة من دون تخطيط أو تحديد مجال البرمجة الذين يودون دراسته من دون حتى سؤال أهل الخبرة عن أقصر و أفضل طريق لذلك , فتجدهم يتخبطون هنا و هناك مشتتين في بحر من التقنيات البرمجية المختلفة .. لذلك في هذا المقال سأقوم بتوفير الوقت لهم بحسب ما مررت به أنا من تجارب .
أولا : البرمجة مجرد وسيلة .
تعلم البرمجة هو فقط وسيلة لتحقيق غايتك المرجوة بعد تعلمه , يعني لا تتعلم البرمجة من أجل البرمجة , تعلمها من أجل أهدافك .. التقنيات تولد و تموت و حبك لتقنية ما لن يدوم .. لذلك وجب على من يعقل أن يتعلم ما يمليه عليه مخطط هدفه .
ثانيا : عمرك محدود .
و التقنيات و لغات البرمجة غير محدودة لأنها متجددة و ستبقى تطارد التعلم و لن تصل لنهايته مادمت تتعلم من أجل التعلم , لذلك تعلم من أجل هدفك .. فهو أقصر طريق لظهور نتائج تعلمك بسرعة .
ثالثا : إختر هدفك و لا تجعله ضيقا فتختنق به و لا تجعله واسعا فلا تستطيع مجاراته ..
لنفصل هذه النقطة بسؤال المبتدئين المعتاد :
أريد تعلم البرمجة , ما هي اللغة الأفضل لكي أبدأ بتعلمها ؟
أولا هذا السؤال مبهم جدا و لكي نساعد أحد ما على الإجابة عن هذا السؤال فيجب أن يساعدنا بالإجابة عن هذه الأسئلة أولا :
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 إجمع بينهم أي أدرس الواجهة الأمامية ثم بعد أن تنتهي أدرس الواجهة الخلفية .
لذلك إبدأ أولا بتحديد هدفك و هو سيتكفل بتحديد ما ستفعله لاحقا .