١٤ يوليو ٢٠٢٠

رحلتي في عالم البرمجة

By null

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

حياتي قبل اكتشاف البرمجة الجدية 👶

انا طول عمري كنت طالب متفوق, دايماً في الـ 10 الاوائل, و متكرم كذا مره في مدرستي (اللي قضيت فيها ابتدائي و اعدادي). كنت طالب ملتزم (على الرغم من اني كنت احياناً بخلي المدرسين يشدوا فشعرهم 😂) و كان عندي (ومازال) شغف كبير للتعلم و البحث. دايماً كنت بدور ف جووجل و اقلب في اي حاجة تخطر ع البال. مع بداية اعدادي و دخولنا في مادة الكمبيوتر (اللي مدرسيني فيها كانوا ناس يشكروا على مجهوداتهم بحق) بدأنا واحدة واحدة نقرب من البرمجة. ابتدينا مع الهاردوير و الحاجات البسيطة ازاي بيشتغل الكمبيوتر و هكذا, و بعد كده (تقريباً ف تانية اعدادي؟) دخلنا في برمجة Visual Basic.

كان الهدف منها اننا نشوف البرمجة و نقدر كطلبة نعمل برامج بسيطة زي آلة حاسبة او اي اداة صغيرة نقدر عليها. البروجكت الطبيعي للمبتدئين. في الوقت ده الاستاذة اللي كانت مسؤولة عن المادة اعتذرت لأسباب طبية و جه بدالها استاذة تانية مكانتش مهتمة تشغل كمبيوتر اصلاً. و من هنا بدأ اعتمادي على نفسي في البرمجة.

عوائق السن

حد ممكن يسأل: "طب اعتمدت على نفسك ازاي في السن ده؟", بس الحقيقة ان دي حاجة انا متعود عليها من قبل ما ادخل المدرسة. طول عمري بذاكر لنفسي و محدش يعرف حاجة عني ف الدراسة الا نتايجي اللي بتطلعني من ال10 الاوائل دايماً. لما كنت احب اعمل حاجة بدور ازاي اعملها و اعملها, عمري ما كنت بستنى مساعدة حد (من باب اني مبقاش عبء على حد و من باب اني اي سيرش هعملها هتوصلني لنتايج اكتر من اني اسأل حد مش متخصص).

اما عن عائق اللغة (بما ان اغلب المصادر انجليزية و بدون التطرق لرحلتي ف تعلم اللغة اللي انا نفسي معرفش حصلت ازاي), فأنا برضة كنت متفوق في اللغة, و مش لغة المنهج بس, مكنتش "حفيظ" زي ما بيقولوا, كنت بدور مع نفسي برا المنهج و بقرأ كتب صغيرة و روايات, اي حاجة تقربني للغة اكتر. وبالتالي اعتمادي على نفسي في دراسة مصادر باللغة الانجليزية مكانش عائق بالنسبة نهائياً.

البدايات

في اواخر 2013 كان عندي تشانل على اليوتيوب صغيرة محدش يعرفها الا صحابي ف الوقت ده كنت بنزل عليها فيديوهات مونتاج للألعاب, كنت بسجل اللعبة وانا بلعب و اعمل ايديت للفيديو بحيث يبقى جامد و روش و كده :"D, الموضوع ده فتحلي ابواب كتيرة.

اول الابواب دي اني كنت عايز اعمل موقع و ابلكيشن ع الموب للتشانل, بجانب اني كنت بحاول افهم هو ازاي برامج المونتاج بتشتغل اصلاً. كل ده وصلني لمعنى كلمة "برمجة". بحثي على ازاي اعمل موقع وصلني لـ Wordpress, و اللي من خلالها وصلتني للـ Templates. وقتها استغليت مواقع زي Weebly و Wix و خواص الـ Drag & Drop.

في نفس الوقت كنت بحاول اعمل Root للاندرويد اللي كان معايا ساعتها و كنت بحاول اغير شكل ويندوز و اعمل mods للألعاب, و ده وصلني للهاكنج و الـ modding و عرفت ان دول برضه بيتعملوا بالبرمجة.

بجانب ده كله كان في بقى CheatEngine و "تهكير" الالعاب. من ضمن الـ Google Searches في يناير 2014 (حسب موقع MyActivity بتاع Google) كنت عملت سيرش "How to hack online games using VB" و "Learn hacking". وصلني البحث بتاعي للموقع ده How To Become A Hacker و لما قريته لقيت ان اول مهارة مطلوبة كانت... You guessed it... البرمجة. ساعتها قولت لا بقى, هو كل حاجة برمجة؟ و بدأت اتسحب في الموضوع واحدة واحدة.

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

رحلة التعلم ما قبل 3 ثانوي 🎓

بصيت دلوقتي ف السيرش بعد الصفحة دي لقيت اول سيرش معمولة كانت عن C++ و حاجات زي "Top 5 websites to learn hacking" و اللي بدورها وصلتني لأنواع الهاكرز زي White hat و Black hat. نفس الموقع وصلني لموقع Cybrary, و اللي منه اخدت كورس Comptia A+ التجهيزي بتاعهم و عرفت منه ازاي الهاردوير زي الهارد ديسك و الرام و الماذربورد بيشتغل و اساسيات النيتورك زي البروتوكولات المختلفه المتوفرة و ازاي الاجهزة بتتوصل ببعض.

ساعتها بدأت اتعلم C++ و كان الهدف اللي موجود عندي هو تعلم الهاكنج باستعمالها. وصلت فيها لحد الـ OOP وخلصته و عملت لعبة console بسيطة حسيت فيها بإنجاز و اتشديت اكتر للبرمجة. اللي هو انا بكتب شوية كود الاقي الكمبيوتر بيسمع كلامي. و الموضوع فضل يشدني اكتر و اكتر.

كل ده كان قبل 2015. و بدأت ثانوي بعد كده. ساعتها حبيت اني اثبت نفسي ف ثانوي و للأسف التصحيح في المدرسة الحكومية اللي كنت فيها ظلمني لدرجة ان درجاتي كانت نازلة النص ف كل المواد. قولت ما بدهاش (عمري ما كنت من النوع اللي بيعيط لما يخسر حاجة, كنت بفكر ازاي اعوضها و ءا move on), و بقيت هدفي ف ثانوي (ع الاقل لحد 3) هو اني اعدي و خلاص. ده اداني سنتين اقدر فيهم اتفرغ لمذاكرتي البرمجة.

بدايات اهتمامي بمجال تطوير المواقع 👨‍💻

Snippet from my 2015 google searches

خلال تفرغي للبرمجة بدأت ادور على ازاي اعمل مواقع بنفسي, كنت زهقت من ووردبريس و شغل الـ templates و قولت اكيد في حاجة low-level اكتر من كده. وصلت ساعتها لتكنولوجيا الويب المختلفه. و زي ما موجود ف الصورة, بدأت اتعلم PHP و كنت بتعلم ساعتها C++, بجانب اني اتعلمت HTML و CSS و اساسيات JavaScript.

بدأت ساعتها ادور على "المجالات" و التخصصات. لقيت بقى المعروفين و اللي كان من ضمنهم الـ Web Development وبرمجة برامج الديسكتوب. اهتميت اكتر بالويب و بدأت ادور فيه اكتر. بحثي وصلني لمواقع زي codecademy و ده اول موقع اتعلمت عليه ويب بجد و freeCodeCamp اللي لسه بدخله لحد النهاردة.

ف الفترة دي انا كنت بعرف اعمل برامج بـ Visual Basic و console باستعمال C++ (وكنت بقلب فالـ GUI شوية) و كنت بعرف اعمل مواقع بسيطة جداً و بعدها بشوية بدأت ادور ازاي اعمل ابلكيشنز للاندرويد, بس الموضوع مشدنيش و سيبته بسرعة. كنت كمان بعرف استعمل SQL باستخدام PostgreSQL و بقدر اعمل سيرفرات لوكال ع الاقل باستخدام XAMPP.

وهنا اخدت القرار النهائي اني هبقى Web Developer. وبدأت معاها 3 ثانوي. 3 ثانوي كانت اقل سنة productive بالنسبة لي. تقدروا تقولوا مفتحتش البرمجة فيها الا قليل جداً بس كنت برضه بدور. كان هدفي الوحيد خلال السنة دي اني اجيب مجموع هندسة و اخش حاسبات. (قريتوها صح اه, اجيب مجموع هندسة و اخش حاسبات).

كنت واخد قرار كمان اني بمجرد اني اخلص امتحانات هروّح اذاكر ويب حسب خريطة LearnCode.Academy كان عاملها و الخريطة السنوية بتاعت Brad Traversy. بجانب الخرايط الموجودة على Roadmap.sh. وحقيقي الشكر يرجع لـ Brad و Wesbos في اني ابقى عايز اعمل كونتنت اشرح فيه اللي انا اعرفه لغيري. هو كان الدافع الاساسي ليا و من المثل العليا القليلين اللي كنت بتابعهم.

الأول من يوليو, 2018 😤

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

اول ما خرجت من اللجنة كانت الفرحة مش سايعاني, ولا كأن النتيجة طلعت و نجحت. روّحت جري على البيت و دخلت من غير حتى ما اغير هدومي فتحت الجهاز و بدأت FreeCodeCamp من اوله. ذاكرت منه و ذاكرت كورسات Brad و Wes. و على مدار الـ 6 شهور اللي بعد اليوم ده كنت بعمل حاجة واحدة. بصحى من النوم افتح الجهاز اذاكر ويب لحد ما انام. مكنتش بفتح ولا لعبة. مكنتش بتفرج على حاجة غير البرمجة الا قليل جداً. كنت عايز اعوض الوقت اللي ضاع ف 3 ثانوي.

عبال ما السنة الجديدة بدأت و دخلت اول جامعة حاسبات القاهرة كنت وصلت لـ React و Redux و Jest. و عملت بيهم بروجكت صغير اول واحد شافه صديق جديد اكتسبته من الكلية, و على الرغم ان البروجكت مخلصش ولا شاف النور الا اني فهمت من خلاله حاجات كتيرة جداً.

السنة الدراسية عدت و كنت بقدر اعمل كل حاجة الـ Frontend Developer بيعملها. حتى الديزاين. كنت بقدر استعمل Figma و Photoshop كويس جداً و كنت بعمل الديزاين و الكود و الـ Deployment كلها بنفسي.

ما بعد اولى جامعة

مش هتكلم عن اللي حصل ف الكلية نفسها لإني مش حابب اقرفكوا 😃, بس حقيقي كانت سنة مخدتش منها اي حاجة الا الصحاب الجدعان اللي عرفتهم. اول ما السنة خلصت دورت على Internship و اتقبلت في Startup كل اللي فيها ناس كانوا زي العسل و يتحطوا ع الجرح يطيب. ناس supportive و welcoming لأبعد الحدود اللي تتخيلوها.

خلال ال internship دي (واللي كانت مدتها شهرين) طبقت فعلياً على Jest و اتعلمت حاجات اكتر بكتير من ضمنها الـ A11y Testing, CI/CD, و ازاي الشركات بتمشي في موضوع الشغل ده.

خلال الوقت ده برضه كنت عملت معسكر تاني, وهدفي كان اني ابقى job-ready على نهاية 2019. و حصل فعلاً, خلال الفترة دي مكنتش بنزل الا كل فين و فين, و كان اغلب يومي متركز على الدراسة. السنة دي كانت سنة كبيرة بالنسبة لي. خلصت فيها اول internship ليا, بدأت community تساعد الناس انهم يدخلوا المجال, عملت قناة على اليوتيوب و عملت كورسات, وعملت blog خاصة بيا. كمان ركزت كل جهودي اني احسن من مهاراتي اللي كان جزء منها rough around the edges.

باقي رحلتي 🚀

رحلتي لسة طويلة و مستمر فيها بعزيمة و إصرار. الكلام ده ماهو الا فضفضة, حبيت اقيس بيه انا مشيت ازاي و حبيت اوريكوا انا وصلت للي انا فيه ده ازاي. دي مش حياتي 100%, انا ركزت على جانب واحد فقط من حياتي في الفترة دي.

مش لازم تمروا بنفس اللي مريت بيه, الحقيقة اني خبطت كتير, و يمكن لو كان في ارشاد من حد فاهم موجود كان زماني وصلت المكان ده اسرع او بطريقة مختلفه, او مكنتش هوصل خالص.

المهم ان كل شخص ليه رحلته, عالم التكنولوجيا كبير و مش لازم كلنا نبقى سطمبة واحدة. اهم حاجة انكوا تنظموا وقتكوا صح, متسيبوش التفاهات تستولى على وقتكوا كله, حطوا نظام لكل حاجة بتعملوها, و ابقوا consistent. اوقات كتيرة هتلاقوا الدنيا واقفه فوشكوا و بتزقكوا لورا (زي اللي حصلي ف 3 ثانوي) بس ده مش معناه اننا نقف محلك سر و نستسلم. والأهم من كل ده: اعملوا اهداف و امشوا وراها.

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

لو حاسين نفسكوا تايهين في بحر الكورسات و بتخرجوا من كورس تخشوا ف التاني من غير اي افادة حقيقية فا ده برضه من ضمن المشاكل اللي واجهتني و عرفت ان اسمها Tutorial Purgatory. تقدروا تقرأوا المقالة اللي كتبتها عنها برضه.

النهاية

طولت عليكوا انا عارف, بس كل كلمة حقيقي طالعة من قلبي. دي عصارة سنين, و مكانش من السهل اني الم كل ده في وقت قصير. كتابة المقالة دي خدت مني حوالي 5 ساعات. لو عندكوا اي اسئلة تقدروا تسألوهالي على اي مكان تلاقوني فيه. بصوا ف الصفحة الرئيسية ع الموقع عشان تعرفوا تتواصلوا معايا ازاي.

لو حابين تعرفوا الادوات اللي بقدر استعملها في مجال الويب تقدروا تخشوا على صفحة الـ Tools.

After all, tomorrow is another day.

مصادر


Written by Nabil Tharwat

Nabil Tharwat is a software engineer and mentor who's super in love with all things accessibility and performance. He's host of The Weekly Noob podcast and his content has reached thousands of people around the world.

Learn more about Nabil.