بدات بتعلم البرمجة بعمر 15 سنة اول عام في حياتي و الانترنت في المنزل 24h في اليوم اذا حينها قررت انه الوقت المناسب لبدا
مع بداياتي في التعلم الذاتي والعزلة والبقاء لساعات طويلة امام الحسوب بدات العائلة تقلق وفي الكثير من الاحيان ادخل في صراعات مع ابواي حتى يسمحا لي بالاتصال بالانترنت واكمال التعلم الذاتي (لا الومهما اطلاقا فذالك العام تحصلت على ادنى معدل في حياتي ...) ومع انخراطي في التعلم الذاتي ادركت مدى جهلي في لغات سواء الفرنسية او الانجليزية وشعرت بالندم حينها عندما كان اقراني يتحمسون لدروس اللغات في المتوسطة وانا اعتبرها ساعات من الجحيم ... فالموقع الذي بدات به ( كان نصيحة من صديق درس معي في تلك المرحلة) كان codecademy ومثل ما هو الان لا يدعم العربية فاستعملت اللغة الفرنسية واكملت العديد من دورات في برمجة الويب في وقت قصير كما وقعت في خطئ التسرع ومباشرة بتعلم لغة اخرى بمجرد اكمال الاولة .. مما كلفني بعض الوقت في اعادة مذاكرة
اكملت html css javascript mysql php في مدة حوالي 4 اشهر (3 ساعات من التعلم اليومي) اتجهت الى اليوتوب لمتابعة دورة ما لانشاء مشروع متكامل
وجدت دورة برمجة موقع تواصل اجتماعي من قناة نجمة
الدورة كانت في بداياتها ومدة نشر الفيديوهات كانت طويلة جدت والان هذه القناة محذوفة
الحمد لله ان الفيديوهات الاولة كانت موجودة كونها مهمة جدا لشخص اكمل لتوه الجزء النضري فمن خلالها تعلمة كيف انشاء الملفات وترتيبها كيف اعداد sessions و cookie في php واستعمال super global get في ادارة الصفحات اي جعل كامل الموقع يضهر في الصفحة الرئيسية index وانشاء نضام عضوية وربطه بقاعدة البيانات mysql وكذا انشاء علاقات بين جداول من خلال ids الى اخره من تطبيقات العملية الاساسة لكل موقع ويب. ولحسن الحظ ان الدورة اصبحت بطيئة في نشر الفيديوهات ! فهذا منحني الوقت لبحث وتحسين الكود والاهم تعديله واضافة javascript (الدورة ركزت على php فقط)
في وقت ما توقفت الدورة مؤقتا لمدة 4 اشهر حينها استلمت الدفة. بدات اضافة خواص جديدة كاضافة الاصدقاء و حذفهم والاطلاع على حساباتهم وانشاء منشورات وزر اعجبني...
ثم توجهت الى جزء الذي طالما سحرني وهو نضام التراسل الفوري والاشعارات حينها لم اكن اعرف websocet واو حتى معنى api لذا الطريقة الوحيدة هي بajax (api باستعمال ) وبالفعل انشئت نضام التراسل الفوري والاشعارات بطلبات الصداقة من خلال ارسال طلب استعلام ب ajax كل 20 ثانية وهاذا حللت مشكلة التزامن وبعد بحث صغير وجدت ان هذه الطريقة هي الاسوء ولاكن هناك طريقة اقل سوء قليلا وهي عند طلب استعلام بجديد الاشعارات ادخل السرفر في Infinity loop حرفيا باستعمال while(true) والطريقة الوحيد لخروج منها هي بتوافر اشعار جديد طبعا بداخل الحلقة دالة sleep(1) بمعنى انتضر ثانية قبل انتقال لحلقة اخرى كي لا يتعطل السرفر
كان هذا استفساري عن هذه التقنية في حسوب
ومع الوقت اضفت العديد من التحسينات عليه ومن افضل التحسينات هي جعل موقع متجاوب* عن طريق php !! اي من السرفر
نعم اعرف. ولاكن هنا بدات بالبحث عن طرق لدمج php مع javascritp ومع البحث والتجربة والندم لاختياري هذا التخصص تعرفت على api وانشأت واحد وظيفته ارسال مقاس الشاشة ل php !!! ما هذا الغباء :(
كما سبق وذكرت في بداية هذه المساهمة انني كنت متسرع جدا وفوت العديد من الدروس ولاكن انضر لما اوصلني الامر :)
ومع كبر الكود اصبح سيء جدا وصعب التتبع والتحديث نضرا لاستخدامي ل php في جعله متجاوب XD (لا تسالني كيف . مجرد معجزة كمعجزة بناء الاهرام ورفع الحجارة الضخمة ) لذا تخليت عن الموقع الذي اعتقدت قبل انشائه بكثير انني سوف اجني منه الكثير وهو فريد من نوعه وو... (قبل عام او عامين من بداياتي كان انشاء بريد الايليكتروني اقصى احلامي بجانب انشاء موقع اليكتروني بسيط)
باكمالي لذالك المشروع استطعت اكتساب خبرة كافية لبدا الجدي في تعلم البرمجة واحترافها كان ذالك الموقع الشوط الاول وانجزته بنجاح تام 100% (بعد ايام قليلة من اتمامي للموقع بكافة مشاكله وخصائصه استكملت قناة نجمة الدورة بناء موقع تواصل اجتماعي XD وبعد فيديوهات قليلة توقفت مجددا لتكمل عام بدون نشر اي فيديو جديد. كانت تصللي جميع الاشعارات XD) تلك الخبرة اتاحة لي الفرصة لدخول لسوق العمل الحر واخترت خمسات للغته العربية. وانجزت اول مشروع لي ( عبر حساب صديق لي كان بالفعل باع بعض خدمات افضل من البدا من الصفر عبر حسابي ) عبارة عن موقع يعرض بعض الصور ويحتوي على اقسام طلبه مني طالب ليكون مشروع تخرجه استعملت html css وبعص javascript مع jquery لانشاء قائمة مسندلة!! عجبا مكتبة بحجم 80kb ثقيلة على انترنت الخاص بي لانشاء قائمة مسندلة يمكن صناعة ب css فقط
ثم مشروعي الثاني هو موقع اختصار روابط بنضام تتبع مصدر الزيارات (اي الروابط المؤدية لها الموقع ) والبلدان الزوار ومع استخدام رسم بياني يعرض نشاط الموقع.. استخدمت مكتبة خاصة لرسم المنحنيات وapi لوصول لاسم البلد من خلال ip Adresse
ثم مشروعي الثالث هو تعديل لمشروع الثاني ليكون لاستخدام داخل شركة خاصة فقط
ثم مشروع الرابع هو موقع حراج كان اثقل مشروع لي في العمل الحر حيث تطلب مني جهد كبير و 20 يوم من العمل اليومي (في رمضان ) بمبلغ 40$ فقط حيث كان شرط العمل هو البدا من الصفر في البرمجة (لم اكن ولا زلت لا اجيد اي فريموورك )
وفي هذه المرحلة انجزت العديد من المواقع الشخصية التي انتهى بها الامر في مجلد www مخزن في ارشيف الخاصة بي وتزامنة مع بداية اخر سنة في التعليم الثانوي او عام البكالوريا لذا وبطبيعة الحال توقفت عن برمجة المواقع واقتصرت على برمجة بعض العاب 2d وانشاء محاكات او اعمال فنية ان صحة التعبير باستخدام javascript وهذا في نهاية كل اسبوع وفي بعض الأحيان جلسة واحدة فقط في الشهر
في الحقيقة تعرفت على قناة codingtrain في صيف ذالك العام.. ولاكن بدات مشاهدة فيديوهات وتطبيق في بداية العام الدراسي كانت فيديوهات تلك القناة معتمدة على مكتبة p5 الخاصة ب javascript واحيانا لغة prossessing المبنية على java اي انه لم يكن يبدا لي مشروع من نقطة الصفر 100%
وهنا كانت المشكلة فهو يعتمد على canvas في ما يخص javascript وانا لم اتعلمها بعد لذا اضطرت لانشاء مكتبة خاصة لرسم على الشاشة (عن طريق dom حرفيا!! ) وكلما يستخدم دالة built in في p5 او prossessing كان علي برمجتها من الصفر
تعلمت من خلال فيديوهات oop ووصلت لمراحل متقدمة فيها في javascript وانشئة لعبة snake game من الصفر و العديد من الخوارزمية الرائعة ومكتبة متكاملة لرسم على الشاشة باستخدام dom
ثم باقتراب موعد البكالوريا توقفت عن البرمجة تماما وتفرغت لدراسة وكانت نصب عيني تخصص mi (رياضيات واعلام الي ) فعلت المستحيل لدراسة لحصول على معدل 14.50 الذي لم يسبق لي في حياتي ان تحصلت عليه بل كنت غالبا ما اتحصل على 11 او 12
اتى موعد البكالوريا واجتزته دام اسبوع وعند انتهاء ذالك الأسبوع رجعت لبرمجة ملهوفا وفي ذهني العديد من الافكار الرائعة لمشاريع تستحق التجربة ( لا النجاح) غالبيتها لم انجزه لا يزال محفوض في تطبيق google keep ولاكن ما انجزته مباشرة هو موقع يرسل تنبيهات بجديد اعمال مفتوحة في قسم طلبات الغير موجودة على خمسات وهذا باعتماد على فلترتها انطلاقا من كلمات مفتاحية يدخلها المستخدم. (مؤخرا نشرته هنا
ومع مرور شهر من اجتيازي لامتحان ضهرت النتائج البكالوريا. والحمدلله حصلت على معدل فاق توقعاتي بنتيجة 15 من 20 وهذا كافي لاضمن دخولي لتخصص لطالما تمنته.. هذا مساهمة شرحت فيها طرق استعمالي لتطبيق google keep في تحظيري لشهادة
بالاضافة لبعض مساهمات المجهولة التي عبرت من خلالها عن قلقي اتجاه هذا الامتحان
ومع بداية عطلة فصل الصيف حددت لنفسي بغباء هدف تعلم شبكات العصبية الاصطناعية وتطبيقها على لعبة snake game التي برمجتها من قبل. كان هذا غباء تام لانني احتاج لرياضيات لم تدرس لنا في الثانوية في النهاية شعرت بالاحباط وخصصت نصف ساعة يوميا لدراسة linear algebra (اتممت المصفوفات matrices مع بداية العام الدراسي!!) وتابعت دورة natural of code لنفس قناة codingtrain فعلا دورة مميزا والاغرب انها مجانية بال الغريب ان كل قناة مجانية. (انصح كل مهتم بتحميلها قبل ان يعود صاحبها لرشده ) تعلمت من هذه الدورة العمل بsin و cos وتطبيقهما في خوارزميات الرسم والعمل بالاشعة vectors وطبقت بعض قوانين الفزياء الحركة : السرعة والتسارع ومعادلة نيوتن لمجموع القوى net forces (لا اتذكر ان كانت لنيوتن ام لغيره )
العجيب ان كل تلك المفاهيم درستها في الثانوية وانا كلي احباط وملل حتى حين طبقتها في الواقع شعرت كانها سحر magic اما فزياء الحركة فكانت ضمن موضوع البكالوريا XD
واكملت جزء genitic algorithm من تلك الدورة فعلا احسست اني امتلك قوة خارقة انذاك تمزح معي استطيع برمجة نضم فزيائية ورسم وتحريك باي طريقة احببت وجعل النظام يتعلم من اخطائه فعلا دورة تستحق المتابعة (سارع قبل ان يعود لرشده صاحب القناة )
ولاكن لم اكملها لكون الشبكات العصبية الاصطناعية تتطلب رياضيات وانا لا اريد تعلمها بخبر 0 في الرياضيات
اسطعت في النهاية جعل الحاسوب يلعب snake game عن طريق genitic algorithm ولاكن هدفي كان عن طريق ann (artificial neural network )
مع بداية اول عام دراسي لي في الجامعة واجهت صعوبات جمة في التعود على الجامعة وخاصتة ان الدروس كلها بلا استثناء بالفرنسية (تخصص تقني 99٪ يدرس بغير لغة الإنجليزية!! انها الجزائر الفرنسية كما كان يتخيلها ديغول على الاقل 50٪ من تخيلاته )
ولاكن مع بداية 2019 عدت لبرمجة والان وضعت خطط
جديدة لعودة لمسار التعلم والتوقف عن العمل الحر مؤقتا
اهدافي لعام 2019
تعلم vuejs (50٪ تم بفضل نشر قناة elzoro لبعض فيديوهات ضمن دورة vuejs المتوقفة حاليا ولا كن استكملها بدورة قناة ninja اكملت الاساسيات الان تبقى لي التطبيق )
lareval
firebase
بنهاية 2019 بالاظافة لمهارات جانبية
flatter
artificial neural network
cryptography
blockchain
بعض نصائح من تجربتي
شرط سماح لنفسك بدخول المجال : قدرتك على ضبط نفسك عندما تحس انك لا تعرف اي شيء و تكمل المسارك
شرط سماح لنفسك بدخول المجال : ان تكون لك القدرة على التعلم المستمر اي ما هو شعورك حاليا عندما تمسك documentation الخاص بتقنية ما وتقرئه من الالف حتى الياء ان قلت مستحيل فالبرمجة ليست مناسبك لك :(
من الأفضل عندما تريد تعلم شيئ جديد ابحث عن دورات الجديدة التي لم تكتمل بعد لتكون بنفس المستوى مع الدورة وان حدث وان توقفت عن النشر فهده اللحظة لتستلم الدفة ابحث... عد الى documentation واقرءه ولاكن لا تبدا دورة اخرى من الصفر او تنتظر الفيديوهات الجديدة وانت مكفوف البدين
عند تعلمك لاي شيء وثقه بمعنى انشئ ملف نصي مثلا واكتب فيه كل ما تعلمته بشكل مفصل والمعيار هو ان منحته لشخص اخر هل يستطيع الاستفادة منه + ان كانت لغة الإنجليزية ليست جيدة اجعل ذاك الملف بالغة الانجليزية لا عليك من الاخطاء المهم عبىر باستعمل الترجمة...
التطبيق ثم التطبيق عند تعلمك شيئ جدا طبقه على الفور والاهم لا تقارن مشاريعك مع مشاريع الاخرين (اقصد مقارنة السلبية)
ان خطرت في بالك فكرة طبقها كهما بدت مستحيلة فمثلا في بداية مشواري طبقت فكرة مستحيلة وهي التجاوب ب php.. فانت لا تعرف ربما ستتعلم من خلالها اشياء عديدة اخرى
صديقك ورفيق دربك في البرمجة هو جوجل لذا تعلم طرق الفعالة في البحث فيه
لا تسال اي احد ان واجهت مشكلة في بداية مشوارك لانك حينها ستضيع الوقت في الانتضار.. لن تعتاد على البحث عن حلول عن طريق جوجل.. لن تتعلم الصبر وطرق حل مشاكل البرمجة debugging.. سوف تضيع فرص تعلم تقنيات جديدة.. لن تتعرف على مكون السحري في البرمجة عموما (سوف افسد عليك دراما الحل لجميع مشاكل المبرمج بطل القصة هو موقع stackoverflow XD)
يمكنك تعلم البرمجة باقل موارد متاحة خاصة برمجة المواقع (محتوى مجاني. انترنت بطيئ. حسوب قديم.. ليس هناك اعذار )
طبعا هناك العديد من المواقع وسكريبتات شخصية التي برمجتها اثناء هذه الرحلة لم ارد ذكرها كون المساهمة بالفعل فاقت الحجم المطلوب
التعليقات