نصائح عملية وقصص لبدء التعلم إلى رمز

كيف تبدأ تعلم الكود

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

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

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

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

أتمنى أن يساعدك هذا!

عقلية

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

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

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

علم نفسك C ++ في 21 يومًا

نصيحة رقم 2: استمر في التعلم. كمهندس برمجيات ، يتمثل أحد التحديات التي تواجهني دائمًا في تتبع الأشياء الجديدة الناشئة في عالمنا: المكتبات الجديدة مثل ReactJS في عام 2013 وتطبيقات الويب مثل SPA و PWA والاتجاهات التكنولوجية مثل Machine Learning و AI و cryptocurrency (Blockchain Blockchain Blockchain !)، وما إلى ذلك وهلم جرا.

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

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

وقت القياس: عندما تريد إنقاص الوزن ، لن تبدأ بماراثون ، ربما تبدأ بمسافة ميل واحد.

بنفس الطريقة مع البرمجة ، لا تحتاج إلى الترميز والدراسة في كل وقت فراغك ، وتغيير جدولك بالكامل.

الذهاب لإجراء تغييرات صغيرة ، ولكن القيام بها بانتظام. رمز واحد في وقت واحد.

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

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

الممارسة هي المفتاح. البحث عن طرق لتعلم المفاهيم وممارستها. هذا هو نصيحة رقم 5. من المهم بناء الأساس بالمفاهيم والنظريات ، لكن كن عمليًا. محاولة. تجربة. سنغوص في هذا في وقت لاحق ، ولكن الممارسة هي المفتاح!

النظرية والمفاهيم

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

عندما بدأت تعلمت دورتين رائعتين عبر الإنترنت: Codecademy & CS50 في Harvard.

في ذلك الوقت ، تعلمت الأساسيات مع Python في Codecademy و C في CS50. ولكن رأيي هو: تحتاج فقط إلى البدء. اختر لغة برمجة واحدة وابدأ في فهم المفاهيم الأساسية (المتغيرات ، if-else ، حلقة ، بنيات البيانات).

كن لغة الملحد. اللغة هي مجرد أداة. من المفيد معرفة اللغة بعمق ، ولكن من المفيد أيضًا تعلم أشياء جديدة. لا يميل أفضل المطورين إلى التعريف كمطور ____. - جايل لاكمان ماكدويل

ربما ، عند اختيار دورة تدريبية ، سوف يعلمون لغة برمجة محددة. لكن لا تقلق! ركز على المفاهيم الأساسية (وربما تقع في حب لغة البرمجة كما فعلت مع بيثون وروبي).

لماذا اخترت هذه الدورات؟

بينما كنت أبحث عن شيء ما للبدء ، أردت أن أفهم بعمق المفاهيم وأن أكون عمليًا حيال ذلك. بدا CS50 أفضل مورد لبناء أساس متين. ديفيد ج. مالان هو بالتأكيد أحد أفضل الأساتذة الذين أمتلكهم. وساعد Codecademy الكثير عن كونها عملية. تدريب نفسي على رمز كل شيء كنت أتعلم. كود كود الكود. تذكر نصيحة رقم 5؟ البحث عن طرق لتعلم المفاهيم وممارستها.

الموارد الأخرى ذات المحتوى الرائع هي:

مقدمة في علوم الكمبيوتر عن طريق Udacity. إنه يغطي كل شيء تحتاجه لبدء فهم البرمجة. تحتوي دورات Udacity دائمًا على "وقت الممارسة" بعد كل نظرية ومفهوم تتعلمه.

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

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

التدريب ، الممارسة ، الترميز ، البناء

ممارسة الممارسة الممارسة. لا يمكنني القول بما فيه الكفاية مدى أهمية التطبيق العملي عند بدء تعلم الكود.

الشفرة. الكثير ... أفضل طريقة لتكون مبرمجًا عظيمًا هي الممارسة فقط - كثيرًا. - جايل لاكمان ماكدويل

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

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

كما فعلت ، يمكنك أن تبدأ مع Codecademy. أنه يحتوي على محتوى جيد حقًا وتجربة رائعة لترميز كل شيء تتعلمه.

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

كل هاكر رتبة المسار

شيء آخر أنا متحمس له حقًا هو البرمجة التنافسية. لقد فعلت ذلك لمدة عامين في الكلية في مسابقات مثل ACM ICPC. في الأساس ، لديك مجموعة من المشاكل ، وتحتاج إلى تنفيذ خوارزمية لتمرير كل واحدة منها. عند القيام بذلك ، اكتسبت ثقة كبيرة في مهاراتي في الترميز ، وأشعر بأنني مطور أقوى بعد تدريبي المكثف والمشاركة في المسابقات. (إليكم الريبو على جيثب - لقد حلت الكثير من المشاكل).

أنا مستخدم ثقيل في Quora ، وفي يوم من الأيام ، قرأت إجابة رائعة بواسطة Veni Johanna حول "هل تساعد البرامج التنافسية حقًا في تحسين معرفتك ومهاراتك كمطور؟". سأكتب بعض المهارات التي نكتسبها تعلم البرمجة التنافسية:

  1. لقد قمت بتطوير عادة لتحويل / نموذج لمشكلة محددة إلى واحدة مجردة.
  2. إنك معتاد على تسجيل الأنماط ومطابقة الأنماط مقابل بنك الأنماط الخاص بك.
  3. أنت تعرف كيفية التركيز والأداء تحت الضغط.
  4. لديك وعي وثقة بقدراتك وأوجه قصورك كمبرمج
  5. لقد تعلمت إدارة الوقت ، خاصة فيما يتعلق بعادات التفكير والترميز.
  6. كنت معتادا على مشاكل محددة جيدا.
  7. كنت معتادا على وجود هدف واحد في الاعتبار.
  8. يمكن أن تكون عالقًا في وضع "حل المشكلات".

أحببت تعليقاتها وأوافق 100٪ مع كل منها. نلقي نظرة على الجواب الكامل. يجب. انه لشيء رائع!

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

  • Codeforces: إنه موقع جيد بالفعل للتدريب والتعلم. لديها طن من مجموعات مشكلة كبيرة. الافتتاحية هي علامة زائد هنا (* الافتتاحية: يكتب مؤلف المشكلة كيف يجب عليك التعامل مع المشكلة وحلها - أي الخوارزمية أو بنية البيانات لاستخدامها).
  • Topcoder: هذا الموقع يشبه إلى حد كبير Codeforces من حيث نوعية المشاكل والتحرير. ومن المعروف أيضا لدروسها. كل "تعليمي" يعلم بعض التقنيات أو الخوارزمية أو بنية البيانات.
  • تصنيف Hacker: كما قلت أعلاه ، يحتوي Hacker Rank على العديد من المجالات المختلفة مثل الخوارزميات وهياكل البيانات والرياضيات ولغات البرمجة وما إلى ذلك. يعد موقع الويب UI و UX موقعًا رائعًا لـ Hacker Rank ، وهو جميل وسهل الاستخدام للغاية. لقد استخدمت الكثير من بيثون المجال لبناء أساس جيد على مهاراتي بيثون.
  • تعتبر Hacker Earth و Code Chef من المواقع الجيدة الأخرى.

الآن يمكنك اختيار موقع ويب والبدء في ممارسة :)

بعد أن تعلمت الأساسيات والترميز والممارسة كثيرًا ، شعرت بأنني عالق. أبدأ بالبحث كيف يمكنني الانتقال إلى المستوى التالي. وكانت مشاريع البناء الجواب بالنسبة لي. لذلك قمت بتدريس أساسيات الويب: HTML و CSS و Javascript وإطار عمل على الويب. في ذلك الوقت تعلمت روبي أون رايلز (روبي ويب فريم) وجانغو (بيثون ويب فريم).

كان أول مشروع لي هو موقع الويب الخاص بي. ثم قمت ببناء موقع إلكتروني لمطعم أمي. ثم لعبتين: لعبة تيك تاك تو والأفعى. جميع المواقع الثابتة.

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

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

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

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

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

"لقد حصلت على مساعدة من صديق لي الذي صمم بالفعل تطبيق بسيط. سألته عما إذا كان يعرف ما هي أفضل طريقة لفعل شيء محدد والحقيقة هي: لم يكن يعرف ذلك ، لكنني شعرت بمزيد من الأمان عند معرفتي أننا نبني بالطريقة نفسها. "- دوغ

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

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

"لقد قمت ببناء أول إصدار من التطبيق ونشرته على متجر Play. بعد ذلك ، تعلمت المزيد والمزيد عن Java / Kotlin / Android ويمكنني تنفيذ المزيد من الميزات على هذا التطبيق. لكنها كانت عملية تستغرق وقتا طويلا. كنت بحاجة إلى الكثير من المثابرة "- دوغ

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

يعمل دوغ الآن كمطور لنظام أندرويد. لديه مشروعان شخصيان (تطبيقات الجوال) تم نشرهما في Play Store ويقود تطبيق Worldpackers Android.

"لقد تعلمت كيفية البرمجة من خلال العمل على الكثير من مشاريع مواقع الويب المختلفة بدءًا من سن مبكرة جدًا. أفضل طريقة لتعلم مهارة جديدة هي التدريب والممارسة والممارسة. لا يهم ما تبنيه ، ما دمت تختار شيئا وتبدأ. "- Feross Aboukhadijeh

في إجابة Feross على Quora ، يروي كيف تعلم الكود من خلال بناء الكثير من المشاريع الجانبية. قصته ملهمة جدا. لاحظت كيف استمر في إحراز تقدم في المشروع حسب المشروع. نصيحته لتعلم البرنامج:

  • هل المشاريع الجانبية.
  • شراء وقراءة كتب البرمجة.
  • هل المشاريع الجانبية.
  • خذ دروس علوم الكمبيوتر.
  • هل المشاريع الجانبية.
  • قراءة بلوق البرمجة.
  • هل المشاريع الجانبية.

قراءة قصته كاملة هنا!

الوقت لمساعدتك على البدء في بناء الأشياء! فيما يلي قائمة بالمشاريع الجانبية التي يمكنك القيام بها.

  • إذا كنت من اللاعبين ، فربما يمكنك أن تبدأ بـ Tic-Tac-Toe و Sudoku و Flappy Bird.
  • إذا كنت من محبي البيانات ، فيمكنك القيام بإلغاء البيانات على الويب أو العمل مع واجهة برمجة تطبيقات الأسهم التجارية لإنشاء مخططات الأسهم وتحليلها.
  • إذا كنت ترغب في فهم الواجهة الأمامية بشكل أفضل ، فقم ببناء موقع الويب الخاص بك / محفظة.
  • إذا كنت ترغب في إنشاء منتج كامل ، فابدأ بمكتبة عبر الإنترنت ، أو جرد منتج ، أو مدونة.

والقائمة تطول وتطول. هنا قائمة أخرى يمكن أن تساعدك في اختيار المشروع. لكنني أتفق مع Feross ، لا يهم ما تبنيه ، طالما يمكنك اختيار شيء ما وتبدأ. لذلك ابدأ البناء! سيكون لديك مشاكل ، سوف تتعثر. لكنك ستتعلم الكثير!

أعلم أنه من الصعب جدًا الاستمرار في مشروعك.

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

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

عند البحث عن 100 يوم من قصص الأكواد البرمجية ، اكتشفت "كيف ترميز كل يوم لمدة 365 يومًا" لإميلي. هذه قصة ملهمة من الانضباط والرغبة في تعلم رمز.

إنه لأمر رائع كيف تكتب عن مشاريعها وكيف تعلمت خلال العام. كانت المشاريع من تطبيقات iOS التي تستخدم لغة برمجة Swift ، إلى تطوير الويب باستخدام الحزمة الكاملة (HTML ، CSS ، JS ، Flask - Python web framework). اذهب قراءة المادة كاملة.

الحفاظ على دوافع ، والحفاظ على بناء ، والحفاظ على الترميز! :)

بعض الموارد المفيدة

مواقع جيدة ومقالات ومقاطع فيديو

المواقع

freeCodeCamp هو موقع ويب كبير يركز على تطوير الويب وجافا سكريبت. خالية تماما (YEY!). تتشابه Udemy و CodeSchool و Khan Academy بشكل كبير من حيث أنواع الدورات ، لكن Udemy دفعت دورات ، و Khan Academy مجانية ، و CodeSchool هي مزيج من كليهما (الدورات المجانية والمدفوعة). لا يمكننا أن ننسى MOOC: Udacity و Coursera و edX. جميع هذه المواقع لديها دورات رائعة. جربها! :)

اتبع الناس على تويتر

إذا كنت مهتمًا بالتعلم الآلي ، فإن Andrew Ng هو الشخص المناسب! لأحب البرمجة ، أحب قراءة تغريدات من DHH (روبي أون رايلز المبدع) ، ودان أبراموف (مؤلف مشارك في Redux) ، وتريسي تشو (سابق في Quora ، و Pinterest) ، و Quincy Larson (منشئ freeCodeCamp) ، و Preethi Kasireddy ، و Dan بدر (يدير ريال بيثون) ، والقائمة تطول.

الناس الذين يوثقون رحلتهم على المتوسط

كيف لتدريس نفسك بنجاح كيفية رمز ليديا هالي

كيف ذهبت من عارضة الأزياء إلى مهندس البرمجيات في 1 سنة من قبل ماديسون كنا

BaseCS بواسطة Vaidehi جوشي

إليكم سبب تعلم كيفية استخدام الكود بطريقة صعبة بقلم كيفن كونونينكو

أريد أن أتعلم البرمجة ولكن لا أعرف من أين أبدأ بـ Robyn Silber

مدونات الفيديو وقنوات يوتيوب

أحب مشاهدة مقاطع الفيديو ومشاهدة أسلوب حياة الأشخاص على YouTube.

Fun Fun Function هي قناة يديرها Mattias Petter Johansson ، وهو مهندس Spotify سابق. لقد بدأ باستخدام JavaScript ، لكنه تحدث مؤخرًا عن التطوير بشكل عام. أحب حقًا كيف يطرح أفكاره ويقدم كل موضوع.

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

يركز CS Dojo حقًا على برمجة استشارات المقابلات والخوارزميات وأشياء بنية البيانات. هذه القناة من YK Sugishita ، وهو مهندس سابق في Google في كندا.

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

هذا كل شئ!

آمل أن يساعدك هذا المقال في البدء.

يمكنك الاطلاع على وثائق رحلتي الكاملة للتعلم وإتقان البرمجة هنا في منشور مطور النهضة الخاص بي.

إستمتع! استمر في التعلم والترميز.

آمل أن تكونوا قد أحببت هذا المحتوى. دعم عملي على Ko-Fi

بلدي التغريد وجيثب. ☺