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

السياق: أنا مطور ألعاب كمبيوتر لوحي ومسوق رقمي ، وبعد أن أمضيت وقتًا طويلاً حول الألعاب وأجهزة الكمبيوتر ، قررت أنني أرغب في تعلم البرمجة منذ حوالي 3 سنوات.

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

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

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

يمكنك أيضًا التخطي إلى أسفل لـ TL ؛ DR .

مقدمة: C ++

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

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

HTML و CSS و JavaScript و Python

قبل الشروع في هذه المغامرة ، كان لدي بالفعل القليل من الخبرة في HTML ، ووجدت Codecademy. لقد أحببت كثيرًا القدرة على إجراء دروس من داخل المتصفح ودون الحاجة إلى إعداد IDE (كان القيام بذلك لـ C ++ تجربة مجربة). استهلكت بسرعة جميع دروس Codecademy في HTML و CSS. كان المسار الطبيعي من تلك النقطة هو القيام بدورة JavaScript التي استمتعت بها. لكن سرعان ما وجدت نفسي في "مطهر تعليمي" (ليس مرجعي) ، أعمل من خلال دورة بايثون وغيرها.

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

لقد تعلمت الكثير من الأساسيات من Codecademy ومبادئ OOP العامة ، لكنني لم أقم بتطبيق الكثير منها دون مسار واضح للمضي قدمًا. عدت إلى بحثي (من أنا أمزح ، لقد أمضيت وقتًا طويلاً في البحث في الوقت نفسه عن لغات أخرى ومنصات تعليمية ومعسكرات تدريب على جميع مراحل العملية بأكملها) وقررت أنني أرغب في معرفة المزيد عن تطوير اللعبة من خلال الدورات التدريبية على Unity.

سي #

لقد وجدت دورة Ben Tristem's Unity في واحدة من مبيعات Udemy الدائمة بنسبة 10000 ٪ ، وعملت بجد من خلال البرامج التعليمية لبناء نسخ من كسر الطوب ثنائي الأبعاد وألعاب أخرى. لقد تعلمت ما يكفي من C # للحصول على ما يكفي ولكن ليس بما يكفي للشعور بالثقة في صنع أي شيء بنفسي.

ربما كانت الوحدة نفسها بمثابة عقبة هنا أكثر من تعليمات Tristrem وزملائها ، والتي كانت في الواقع جيدة جدًا. محرر الوحدة هو وحش المحرك ، مع الكثير من الأدوات الجيدة التي لا يمكن اختراقها للمستخدم المبتدئ (مرة أخرى ، يمكنك قراءة المزيد عن تجربتي مع Unity هنا).

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

رجوع إلى JavaScript

في أول أحمر خدود ، يتمتع freeCodeCamp بمظهر Codecademy أو Treehouse الأقل بريقًا. لكنني أحببت مدى وضوح البرامج التعليمية ولم أكن بحاجة إلى تجاوز جدار حماية لإحراز تقدم. لقد انتهيت من حيث توقفت مع تعلم HTML و CSS ، وأحرزت تقدمًا جيدًا حتى وصلت إلى مشاريع تصميم الويب المستجيب المطلوبة لإنهاء القسم الأول والحصول على شهادة.

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

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

المطهر بعد البرنامج التعليمي

تقدم سريعًا بعد ذلك بوقت طويل ، وأنا الآن أعمل على العديد من المشاريع المتعلقة بالألعاب في Phaser و Unity (وعلى الأخص ، نموذج رقمي للعبة بطاقة منضدية أقوم بتطويرها). لقد أمضيت وقتًا طويلاً في توثيق إطار العمل و Stack Overflow يبحث عن إجابات وأفضل الممارسات للأشياء (ربط هذا المنشور مرة أخرى للحصول على مقياس جيد). لقد طورت أيضًا صداقات مع عدد قليل من الزملاء الذين هم أنفسهم مبرمجون ، وكان من المفيد تشغيل الكود من قبلهم للحصول على المشورة والتعليقات.

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

إذا كنت تقرأ هذا وتبحث عن "وقد حصلت للتو على وظيفتي الأولى كمبرمج!" البيان ، أنا آسف لخيبة أمل! لم يكن هذا هدفي (على الأقل حتى الآن) ، ولكن لدي بعض أساسيات اللغة الهدف ؛ تعلم DR لمشاركتها قد يكون مفيدًا لأي شخص يبحث أيضًا عن لغة برمجة أو كيفية الهروب من مطهر البرنامج التعليمي.

TL ؛ DR

جافا سكريبت:

  • المؤيد: نقطة دخول جيدة جدًا في تعلم البرمجة الموجهة للكائنات ، خاصة إذا كنت مهتمًا بأي نوع من تطوير الويب (الواجهة الأمامية أو الخلفية). يمكنك تعلم ذلك من خلال معظم الأنظمة الأساسية ، ولكن أفضل تجربة كانت من خلال freeCodeCamp.
  • Con: ستخبرك العديد من المواقع أنه "يعمل فقط في متصفحك" لذلك "لا يتعين عليك إعداد IDE" وبالتالي يسهل تعلمه ، ولكن هذه العقلية ستأخذك فقط حتى الآن. إذا كنت ستقوم بأي تطوير ذي مغزى باستخدام أطر عمل JavaScript الشائعة (React ، Vue ، Express ، إلخ) ، فسوف ينتهي بك الأمر إلى إعداد شيء مجاور لـ IDE مع محرر كود ، مدير الحزم ، التبعيات ، إلخ ، بدون نوع الدعم الذي تحصل عليه ، على سبيل المثال ، من إعداد .NET أو ما شابه ذلك.

بايثون:

  • المؤيد: سهل للغاية للوافدين الجدد إذا كانت الأقواس المتعرجة في اللغات الأخرى مخيفة في البداية ، ونقطة دخول جيدة إذا كنت مهتمًا بالدخول في البرمجة الخلفية أو علوم البيانات. حصلت على تجربة إعداد أولية جيدة من خلال Codecademy.
  • السلبيات: خياراتك محدودة بعض الشيء إذا كنت تبحث عن تطوير للواجهة الأمامية أو تطوير اللعبة. هناك أطر عمل ، على سبيل المثال ، تسمح لك بإنشاء ألعاب (PyGame ، على سبيل المثال) ، ولكن إذا كنت تبحث تحديدًا في تطوير اللعبة ، فمن الأفضل أن يتم تقديمك في مكان آخر.

C #:

  • المؤيد: لغة لطيفة للغاية مدعومة جيدًا من قبل Microsoft ومجتمع المصادر المفتوحة. باستخدامه ، يمكنك القيام بالتطوير الخلفي ، وإنشاء تطبيقات سطح المكتب ، وإنشاء الألعاب (في الغالب مع Unity ولكن هناك محركات أخرى مثل Monogame هناك). قد يكون هذا رأيًا لا يحظى بشعبية ، لكنني أوصي أولاً بتعلم C # من خلال دروس Microsoft أو في أي مكان آخر ثم تعلم Unity لتخفيف بعض العبء المعرفي الذي يفرضه تعقيد المحرر.
  • يخدع: ليس كثيرا أن أتكلم من هنا، إلا إذا كنت حقا لا مثل مايكروسوفت أو حقا لا تريد العمل على تطوير الشبكة الأمامية نهاية (أفترض أنك يمكن أن ننظر إلى Blazor، ولكن أنا لا أوصي بدءا هنا). يمكنني التحدث كثيرًا عن كيفية تحسين Unity لتجربة المستخدم ، على سبيل المثال ، لكن C # نفسها رائعة.

أفكار عامة عن التعلم والهروب من المطهر التعليمي :

  • واحدة من إحباطاتي في عملي لطرح السؤال "ما هي لغة البرمجة التي يجب أن أتعلمها؟" كان ما شعرت به هو الإجابة غير الكافية عن "حسنًا ، ماذا تريد أن تبني؟" لقد واجهت هذه الإجابة كثيرًا ، ولا أعتقد أنها الطريقة الصحيحة للتعامل مع تعلم كيفية البرمجة إذا كنت لا تعرف بالفعل ما الذي تريد فعله بها. ليس لدى المبتدئ سياق كافٍ لمعرفة ما يمكنه بناؤه ، ناهيك عن الطريق للوصول إلى هناك (ما لم يكن من النوع الذي يريد فقط صنع ألعاب أو يريد فقط الحصول على وظيفة كمطور ويب ).
  • أفضل إجابة هي أن تقول ، "جرب بعض البرامج التعليمية على مواقع مختلفة وبلغات مختلفة ، واعرف ما إذا كان هناك شيء يثير اهتمامك. وإذا كان الأمر كذلك ، فالتزم به ؛ وإذا لم يكن كذلك ، فاختر واحدًا عشوائيًا وشاهد حيث يأخذك. ستساعدك الأشياء التي ستتعلمها بغض النظر عما ينتهي بك الأمر بفعله ".
  • بالإضافة إلى ذلك ، إذا تمكنت من إجبار نفسك على الخروج من النظام البيئي التعليمي وعمل أي شيء خارج البيئة المحمية التي تم إعدادها لك ، فسيساعدك ذلك في تعليمك أشياء ستحتاج إلى معرفتها في النهاية ، مثل إعداد IDE والبحث عن إجابات للأسئلة ومشاركة عملك.

آمل أن يكون هذا المنشور مفيدًا للآخرين الذين يبحثون عن لغة برمجة أو طريقة للهروب من مطهر البرنامج التعليمي وبناء أشياء رائعة. وأحب أن أسمع عن تجاربك أيضًا!

إذا كنت قد استمتعت بهذه المقالة ، فيرجى التفكير في التحقق من ألعابي وكتبي ، أو الاشتراك في قناتي على YouTube ، أو الانضمام إلى Entromancy Discord .

ماجستير فرزان ، دكتوراه. كتب وعمل لشركات ألعاب الفيديو رفيعة المستوى والمواقع التحريرية مثل Electronic Arts و Perfect World Entertainment و Modus Games و MMORPG.com ، وعمل كمدير مجتمع لألعاب مثل Dungeons & Dragons Neverwinter و Mass Effect: Andromeda . وهو المدير الإبداعي ومصمم الألعاب الرئيسي في Entromancy: لعبة Cyberpunk Fantasy RPG ومؤلف The Nightpath Trilogy . ابحث عن MS Farzan على Twittersominator @.