أصبح تعلم البرمجة شائعًا في الفترة الأخيرة، وخاصة مع ظهور وباء كورونا في أواخر العام 2019 الذي أفقد الناس عملها وبدء البحث عن أعمال آخرى والخوض في تجارب جديدة من أجل إيجاد أعمال يمكن أن تُنفذ من المنزل ومنها البرمجة التي لها بريقها الخاص ضمن قائمة الأعمال عن بعد.

لذا فالكثير من الشباب وحتى الكبار بدأوو بتعلم البرمجة سواء عن طريق دورات مدفوعة أو عن طريق اليوتيوب.

أقدم لك في هذا المقال خبرتي البرمجية والحياتية المتواضعة التي اكتسبتها خلال ال 8 سنوات الماضية وهي عبارة عن سرد وتفريغ للذاكرة والتي كانت من الممكن أن تكون أفضل بكثير لولا بعض الأخطاء التي قمت بها وبعض الثغرات في رحلة التعلم التي جعلتني أحس بالعجز في بعض المواقف لذا سأقدم لك كل ما أستطيعه من نصائح من خلاصة تجربتي الماضية، التي أرجو أن تنفعك بإذن الله في رحلتك الخاصة في تعلم البرمجة بشكل عام وفي تصميم الويب بشكل خاص.

البداية مع Code Academy

بدأت في تعلم البرمجة في أواخر العام 2014 حيث اشتركت في مجموعة على Facebook لتعليم أساسيات الويب.

وكان المصدر الذي ندرس منه هو موقع Code Academy الذي نتعلم منه أساسيات HTML و CSS وبناء على دروسنا كانت تعين لنا بعض التمارين لنقوم بها ونقدمها على المجموعة.

كانت هذه الدروس بمثابة مقدمة تعرفك بصفحات الويب وتصميمها وكانت كلها عبارة عن أمثلة من مواقع حقيقية، فمثلًا تعمل على تصميم صندوق يحوي على صورة ونص ورابط ولذلك تتعلم بعض المعلومات السريعة عن الرأسيات Headings وعن وسم الصورة img ووسم الرابط a وأيضًا تعلمنا bootstrap 3.

ولكن هذه الطريقة جيدة من أجل أن يكون لك مدخل إلى هذا العالم من أجل التعرف بسرعة على ما ستعمل عليه مستقبلًا، لكنني لا أجدها طريقة منهجية في التعليم وليس من الممكن أن تعطيك أساسًا قويًا وبالفعل كانت لدي الكثير من الثغرات والأساسيات التي لم أتعملها بشكل جيد.

من خلال المجموعة أيضًا تعرفنا على موقع w3schools والذي كان كمرجع جيد جدًا فيما تتعلمه وتعلمت منه الكثير من الأشياء في ذلك الوقت وملأت بعض الفراغات التي تركها لي موقع Code Academy.

في هذه الفترة أيضًا كنت أتنقل بين الكثير من دورات موقع Lynda الذي كان أشهر من نار على علم والذي استحوذت عليه منصة Linkedin منذ سنوات وأصبح يسمى Linkedin Learning.

كل هذه الأشياء مجتمعة شكلت لي قاعدة جيدة بلغتي HTML و CSS تخلل خلال هذه الفترة القراءة الانتقائية من بعض الكتب البرمجية والتي كنت أبدأ بها ولا أكملها فالالتزام بكتاب برمجي هو شيء صعب وخاصة في البدايات وخاصة مع اللغة الانكليزية التي كنت أملكها.

في هذه الفترة كنت قد أصبحت في السنة الثالثة من كلية الاقتصاد وتخصصت في قسم نظم المعلومات الإدراية Management Information System وكان لدينا مادة عن أساسيات الويب وكانت تعطي الأساسيات بشكل مبسط جدًا وكنت متفوقًا في هذه المادة عن أقراني في القسم بسبب أنني بدأت في تعلمها بشكل شخصي وعزز هذا الفصل فهمي لبعض الأشياء التي كنت لم أستوعبها بشكل كامل.

بالإضافة إلى أنه تم تدريس لغة JavaScript في هذه المادة، وهنا كان خطأي الأول.

البداية مع jQuery وليس JavaScript

إذا كنت قد بدأت في تعلم الويب بين العام 2009 ول 2015 فأنت حتمًا ستعرف مكتبة jQuery المتخصصة في إضافة التأثيرات إلى المواقع والتي هي بالأصل مكتوبة بلغة JavaScript، ولكن في ذلك الوقت كان معظم الأشخاص يتعلم jQuery ويعمل بها قبل أن يبدأ بتعلم لغة JavaScript وهذا خطأ كبير وقاتل بالنسبة لي وستعرف فيما بعد ذلك، وأحذرك من أن تقع في هذا الخطأ فكيف تقوم بتعلم مكتبة أو إطار عمل قبل أن تستوعب اللغة التي كُتبت فيها هذه المكتبة أو أن تعرف أساسياتها بشكل قوي.

وللأسف هذه الظاهرة ما زالت منتشرة إلى الآن فمثلًا الكثير من الأشخاص يتعلمون إطار عمل Laravel قبل ان يتعلم أساسيات لغة PHP بشكل جيد.

تعلمت بعض الأساسيات بسرعة للغة JavaScript كتعريف المتغيرات Variables والدوال Functions وبعض أنواع البيانات، وفورًا بدأت بتعلم مكتبة jQuery التي كانت حرفيًا مستخدمة في كل موقع أراه أمامي على الويب.

أصبح لدي خبرة جيدة في مكتبة jQuery وكنت قد بنيت بها العديد من المشاريع التجرييبية بتقليد دورة على يوتيوب أو لوحدي.

تجربة العمل الأولى والتعرف على PHP و WordPress

ذكرت سابقًا أنني في البداية تعلمت من مجموعة على Facebook وكان مؤسسوا هذه المجموعة والمشرفين عليها موجودين في مدينتي، وبعد انتهاء الدورة قرروا الاجتماع مع الأشخاص الموجودين في نفس المدينة وهذه المجموعة أسست شركة صغيرة لخدمات الويب وتصميم تطبيقات الجوال.

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

لكنني في أول جلسة وجدت أنني أعرف هذه المعلومات وهي بالنسبة لي بسيطة جدًا.

فتحدثت مع المسؤول وأخبرته أنني اعرف تلك المعلومات، فكانت وسيلته للتأكد أن أعطاني اختبارًا بتقليد الصفحة الرئيسية لموقع Microsoft Azure وأذكر أننهي أنجزتها في يومٍ واحد وكانت ردة فعله إيجابية جدًا حول العمل الذي قمت به، ووعدني بفرصة عمل قريبة.

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

كان المشروع عبارة عن موقع تعريفي لشركة مع منتجاتها وعرض مقالاتها، وكانت وظيفتي هي استخدام WordPress لإنشاء تلك الصفحات وتعريبها وما إلى ذلك بالإضافة إلى تعديل في تصميم القالب المستخدم بواسطة HTML و CSS ولغة PHP المبنية عليها WordPress.

استمر العمل على هذا المشروع تقريبًا 3 أشهر وتقاضيت عليه 100$ وكانت أول مبلغ مالي أحصل عليه من البرمجة ولا يمكن أن أنسى تلك اللحظة لأنني أثبت لنفسي ولمن حولي أنني قادر أن أكمل في هذا المجال.

استمررت في العمل مع الشركة كمستقل لمشاريعهم وعملت على موقع ووردبريس آخر وبعض مشاريع تصميم المواقع.

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

وهنا بدأت بتعلم إطار عمل Laravel من أجل إنجاز مشروع التخرج لأنه يجب أن يكون لدينا قواعد بيانات في المشروع وكان مشروعي يحتاج إلى النظم الخلفية Back-End للتعامل مع المنطق وقواعد البيانات في المشروع.

كان تعلم إطار عمل Laravel تجربة مميزة وممتعة جدًا بالنسبة لي وتعلمه كان أفضل من تعلم jQuery لأنني كنت ملمًا بشكل جيد بلغة PHP وأعرف كيفية بناء موقع PHP من دون الاعتماد على إطار عمل.

ولكن قبل أن أبدأ العمل على مشروع التخرج كان لدي الكثير من العمل الجانبي الذي كنت أجني منه المال، لذا قل اهتمامي بمشروع التخرج كثيرًا لأنني كنت أفضل الحصول على خبرة السوق عن الدراسة الأكاديمية.

لذا أنجزت مشروع التخرج ببضع ساعات باستخدام WordPress قبل أن أسلم المشروع ب 3 أشهر وركنته حتى يحين موعد عرضه وكان ذلك في سنة 2016.

التخرج وإنجاز بعض الأعمال البرمجية

قدمت مشروع التخرج ونجحت فيه، وأنهيت الدراسة الأكاديمية ولم يكن معدلي ممتازًا حتى أكمل مرحلة الدراسات العليا ولم يكن لي اهتمام بذلك الوقت في أن أكمل وذلك لأنني أحببت مجال العمل أكثر والخبرات التي أكتسبها من السوق ، لذا عرفت أنني سأتابع في المجال البرمجي وسيكون هو عملي بقية حياتي إن كتب الله لي التوفيق.

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

وانضممت إليه في الفريق التقني ولم نكن نتقاضى الأجور ولكن وفرت لنا أحد تلك الجمعيات مكانًا للبقاء والعمل فيه.

أتذكر أنني عملت مع صديقي على موقعين وأحدها يختص بالبرنامج الذي أنشئه هو لتوفير توثيق للبرنامج وفيديوهات تعليمية ومقالات، والموقع الثاني كان لمباردة خيرية أيضًا تستمر لوقت معين وكل الموقعين عملت عليهما باستخدام إطار عمل Laravel حيث أصبح لدي خبرة جيدة فيه.

بقيت مع صديقي تقريبًا لفترة سنة وبعد ذلك قررت بدء شيء جديد والسفر إلى بلدٍ آخر.

الاصطدام مع واقع خبرتي في لغة JavaScript

بعد أن انتقلت إلى البلد الجديد بدأت البحث عن عمل عن طريق أصدقائي ومعارفي في المجال في بلدي وكنت لا أعرف أحدًا في البلد الجديد، وأثناء البحث عن عمل كنت أرى ما التقنيات الجديدة التي يمكن أن أتعلمها وما الذي يُطلب في سوق العمل حاليًا.

ووجدت أن مكتبة React هي الخيار الأنسب وبدأت بتعلمها وكان ذلك في العام 2017.

تجربت تعلمي ل React في البداية كانت فظيعة لأنها طريقتها في بناء تطبيقات الويب مختلفة جدًا وهي تقدم منهجًا جديدًا في العمل لم أعتد عليه من قبل وهو مختلف اختلافًا كليًا عن ما كانت عليه منهجية تصميم مواقع الويب سابقًا.

في هذا الوقت وجد لي أحد معارفي عملًا في شركة صغيرة في مكان آخر، وانتقلت إلى تلك المدينة وسكنت في شقة مشتركة مع 4 أشخاص وبدأت العمل.

كان العمل عبارة عن مشاريع React/React Native وهناك بدأت أدرك كم الثغرات التي لدي في لغة JavaScript على الرغم أنني عملت مع مكتبة jQuery لسنوات ولكنني كنت ضعيفًا جدًا في لغة JavaScript نفسها وساعد على ذلك أنني لم يكن لدي إطلاع على نسخة ES6.

و سبب هذا واضح وهو عدم تعلم اللغة بشكل جيد وإدراك أساسياتها بشكل جيد وأدركت هنا أنه يجب علي تعلم لغة JavaScript من جديد بالإضافة إلى نسختها الجديدة ES6 وبدأت رحلة التعلم ومما ساعدني على التقدم بسرعة أنني كنت أواجه ما أتعلمه مباشرة في عملي وهذا ساعدني على الرجوع إلى الطريق الصحيح بسرعة ومن مزايا React أيضًا أنها تجبرك على تعلم JavaScript من أجل زيادة مهاراتك فيها وأجد هذه نقطة من أفضل نقاط مكتبة React أنها تقدم لك عدد محدود من المزايا والباقي يجب أن تنجزه باستخدام لغة JavaScript.

مثلًا في React إذا أردت أن تعرض مصفوفة على شكل قائمة في واجهة المستخدم، يجب عليك استخدام دالة map الخاصة بلغة JavaScript.

تعلم NodeJs

بعد عام تقريبًا أصبح لدي خبرة جيدة في React، ورافق تعلمي ل React تعلم NodeJs على التوازي وذلك بسبب أنك تشغل مكتبة React في وضع التطوير باستخدام NodeJs وتبني المشروع عندما تبنيه باستخدام محزم Webpack الذي يتطلب بعض الخبرة في NodeJs.

وأدركت أن NodeJs خيار جيد جدًا لبناء تطبيقات الويب الخلفية Back-End وكان من مزاياها أنها تعمل بلغة JavaScript أي أصبح بإمكاني الآن استخدام لغة JavaScript من أجل بناء واجهات المستخدم والمنطق البرمجي الخاص بالخوادم.

وأدركت أن هذا أفضل من أجل التطوير ومن أجل التخصص لأنه من الصعب من وجهة نظري أن تملك لغتين برمجيتين تعمل بهما على شيئين مختلفين وتكون ممتازًا في الاثنتين.

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

والآن أصبح من الصعب حتى أن تتخصص في شيء واحد وخاصة في عالم JavaScript لأنه يمكن أن أعدد لك على الأقل 10 مكتبات لبناء تطبيقات الويب وهناك اختلافات كبيرة فيما بينها.

لذا كانت هذه أيامي الأخيرة مع PHP و Laravel بالرغم من حبي للغة PHP و إطار عمل Laravel والإطلاع على أخبارهما من وقت لآخر.

تجارب عمل متعددة

كان راتبي الذي أتقاضاه قليلًا في تلك الشركة وكان يكفيني للعيش فقط بدون أي إدخار بالرغم من أنني لست من المبذرين.

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

إلى هنا أكون قد أنهيت سرد تجربتي بشكل مختصر، وأرجوا أن أكون وفقت في هذا السرد.

في الأقسام القادمة سأتحدث عن نصائحي لمتعلمي البرمجة بالإضافة إلى المصادر التي أنصح بها.

نصائحي

  • لا تضيع وقتك في التخطيط الزائد
    مشكلة التخطيط الزائد هي مشكلة موجودة لدى الكثير من الناس فهو يجلس ويخطط بالساعات للبدأ في التعلم ولكن للأسف هو يخطط فقط، لا تنسى أن الخطط تتغير مع مرور الزمن وسوف تتغير تفضيلاتك ونوع خططك لذا لا تواصل التخطيط وأنت لم تبدأ بعد.
  • لا تضيع نفسك في مصادر التعلم
    هذه المشكلة واجهتني بشكل شخصي وهي تحميل الكثير من المواد التعليمية والكثير من الكتب وفي النهاية أحتار بماذا أبدًا لكثرة الخيارات المثل لدينا (إذا بدك تحيره خيره)
    إن كنت ستتعلم لغة JavaScript مثلًا فيمكنك حصر تعليمك في دورتين مثلًا، أو كتابين.
    نصيحتي لك اجمع 5 مصادر لتعلم شيء معين وشاهد بعض دروسها وفي النهاية اختر من ترتاح لشرحه وخذ من هذه ال 5 مصارد مصدر أو مصدرين على الأكثر وخصوصًا في بدايات التعلم وهذا المثال ينطبق على الكتب أيضًا.
  • طبق ما تتعلمه بمشاريع جانبية
    إن لم تطبق ما تتعلمه فحتمًا سوف تنساه، وخاصة في بدايات تعلمك يجب أن تطبق ما تتعلمه بكثرة حتى تتعود كتابة الشيفرة.
    لنفرض أنك تعلمت مبادئ HTML و CSS ، الخطوة المنطقية التالية هي تطبيق ما تعلمته في تقليد موقع ك واجهة موقع Facebook مثلًا أو إنشاء فكرة خاصة بك.
  • حافظ على وقتك (نصيحة لي ولك)
    الوقت هو أهم رأس مال الإنسان وفي العمل البرمجي أجده من أثمن ما يفرط فيه، لا أقول لك كن كالآلة ولا ترتاح أبدًا ولا ترفه عن نفسك.
    ولكن رفه عن نفسك بما يفيدك في عملك وحياتك، ما الذي تستفيده من حفظ أسماء لاعبين كرة القدم، ومتابعة أخبار انتقالاتهم، وحياتهم الشخصية وحتى الدخول في مشاحنات مع أشخاص آخرين من أجل لاعب أو من أجل فريق (وهذا هو الغباء المحض) ما الذي تجنيه؟ هل تأخذ أموالًا؟ هل تستفيد شخصيًا من ذلك؟
    متابعة التوافه والماجريات تؤثر عليك بطريقة سلبية أو آخرى ولا تفيدك، إن لم تملًا عقلك بشيء مفيد فحتمًا ستملئه بشيء تافه لا يوجد خيار ثالث.
    أصبح عمري 30 سنة تقريبًا وأنا نادم على أوقات كثيرة ضيعتها في غير فائدة.
    أنصحك بشدة بقراءة كتاب “الماجريات” للمؤلف ابراهيم عمر السكران.
  • البدايات صعبة فلا تستسلم
    في بداية تعلم كل شيء، ستواجه بعض الصعوبة لأن عقلك سيقاوم ذلك بشدة، ويجب أن تعلم هذا.
    لذا لا تستلم للبدايات الصعبة، ابحث واسأل حتى تحصل على جوابك وحتى إن كان لا يرضيك بنسبة 100% ولكنه يعطيك بعض الطمأنينية والفهم فهذا يكفي وخاصة في بدايات التعلم

هذه أهم النصائح التي عايشتها من واقع خبرتي ولم أرد أن أستكثر منها حتى تستطيع أن تستوعبها كلها وتستذكرها.

المصادر

سأذكر في المصادر فقط الفيديوهات والدورات لأنها أفضل للمبتدئين ويمكن أن تستعين في الكتب لاحقًا
أنصحك البدء بالمصادر المجانية في البداية من أجل أن تتعرف أكثر على ما تريد التخصص فيه قبل دفع الأموال:

  • إن كنت تفضل التعلم باللغة العربية فعليك بأكاديمية الزيرو على Youtube
  • إن كنت تفضل التعلم باللغة الانكليزية فعليك ب Free Code Camp على Youtube أيضًا.

من admin

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *