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

المصدر: https://themindblower96.wordpress.com/2015/05/21/54/

إن كونك متعلمًا فعالًا لا يقل أهمية عن كونه مشفرًا فعالًا.

عندما تكون مطورًا ، فإن وظيفتك تتطلب منك أن تتعلم كل يوم - على الرغم من الإغراء المستمر للانحرافات مثل Hacker News و Twitter و Reddit و Facebook.

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

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

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

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

ومع ذلك ، فإن التعلم لم يكن سهلاً بالنسبة لي.

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

"كيف في العالم هذا المستدامة؟" اعتقدت لنفسي.

"إذا كان هذا هو ما يفترض أن يتعلمه تعلم الكود كل يوم ، فسأكون بائسة. هل هذا حقا شغفي؟

"لن يكون هذا سهلا بالنسبة لي إذا كان هذا هو شغفي؟ هل يناضل الفنانون لإنتاج الفن؟ هل يناضل الكتاب لكتابة كتاب عظيم؟ هل يناضل الرياضيون من أجل تحقيق نتائج جيدة في السباق؟ هل من المفترض أن نكافح عندما نتابع مشاعرنا؟ "

"ألا أجد متعة في هذا؟"

هل أصبحت أسهل؟

نعم إنها كذلك. بعد مرور عام ، لا تزال معالجة مفاهيم البرمجة الجديدة "صعبة" بمعنى أنها تتطلب الانضباط والعمل الجاد.

لكنها أصبحت أيضًا عملية ممتعة ، وليست عملية ساحقة.

ما حدث في العام الماضي لجعل هذا التحول ممكن؟

بسيطة: لقد غيرت وجهة نظري في التعلم. ما صدمني ذات مرة على أنه "صعب" أصبح "جذابًا".

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

لقد بدأت للتو

تعلم رمز هو أصعب في البداية.

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

يبدو الأمر كما لو كنت تعلم التلاعب - ولكن بدءًا من ثمانية عشر دبوسًا بدلاً من اثنين.

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

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

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

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

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

التعلم عملية وليست هدفًا

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

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

بدلاً من ذلك ، إذا كنت ترى التعلم كعملية ، فستقدر الانتصارات والرؤى الصغيرة على طول الطريق. هذا سوف يدفعك للمضي قدما باستمرار.

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

ممارسة يخلق حلقة ردود فعل إيجابية:

وينطبق الشيء نفسه على التعلم.

تحويل التعلم إلى عملية جذابة

تخيل بناء أول تطبيق ويب لديك.

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

لحسن الحظ ، قررت أن تذهب لذلك على أي حال.

ومنذ ذلك الحين ، يصبح تركيزك الرئيسي هو القيام بخطوة صغيرة واحدة في كل مرة.

أولاً ، أنت تخلق فكرة. ماذا سوف نبني؟ من هو المستخدم النهائي؟ ما هي القيود؟

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

ثالثًا ، يمكنك البحث في اللغات والأدوات والأطر التي ستعمل بشكل أفضل مع متطلباتك.

خطوة بخطوة كنت الانضباط عقلك لتوجيه كل طاقاتها نحو هذا الهدف واحد.

في بعض الأحيان كنت تكتب رمز.

في أكثر الأحيان ، توقفت عند بعض الأخطاء أو الأخطاء.

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

في أوقات أخرى ، لا تشعر أنك ترغب في كتابة التعليمات البرمجية. حسنا. تقضي وقتك في البحث أو القراءة في الموضوعات المتعلقة بمشروعك.

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

لقد حولت ما كان نشاطًا مروعًا أو مروعًا إلى نشاط معقد وجذاب.

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

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

بمعنى آخر ، سيبدأ الصراع والتمتع بمعنى نفس الشيء. تذكر الدورة:

نهج واحد لتعلم الموضوعات التقنية

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

دعنا نستخدم عملية تعلم مكتبة React.js كمثال.

ما هو الدافع لتعلم هذا؟

الخطوة الأولى: لقد بدأت بالبحث في Google عن وثائق React.js وقرأت قليلاً عن الخلفية والدافع للمكتبة.

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

  • كيف يختلف هذا عن الحلول الأخرى؟
  • ما مدى فائدة هذا بالنسبة لي؟
  • ما هي المشاكل التي يهدف هذا الحل إلى حلها؟
  • هل هذه مجرد أداة لامعة جديدة لن تكون مفيدة إلا لبضعة أشهر أم أنها ستغير بشكل جذري الطريقة التي أفكر بها ورمزها؟

قراءة وفهم المفاهيم الأساسية

ثانياً ، قرأت أي مقالات مقدمة أو أمثلة مقدمة في المستندات.

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

على الرغم من أنني قد أكون قادرًا على الفرار باستخدام React.js عمياء دون تعلم المفاهيم الأساسية ، إلا أنه في النهاية سوف يلحق بي عندما أواجه خطأ.

المرة الأولى الترميز

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

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

عندما تتعثر

... وبعد ذلك ، لا محالة ، أتعثر.

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

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

إليك ما أقوم به بدلاً من ذلك:

  1. لقد ضاقت أولاً وأكتشف ما أعلق به فعلاً - أي تحديد المشكلة. ثم توصلت إلى فرضية لما أعتقد أنه يمكن أن يكون السبب الجذري للمشكلة. حتى لو لم يكن لدي أي فكرة ، فأنا أحزر.
  2. ثم ابتعد عن المشكلة وجهاز الكمبيوتر الخاص بي وأفعل شيئًا يريحني. من الصعب للغاية القيام بذلك عندما أكون غاضبًا للغاية من المشكلة التي أواجهها ، لكن التخلي عن المشكلة يعمل بشكل رائع. (لاحظت من أي وقت مضى كيف الأفكار العظيمة دائما في الحمام؟)
  3. الآن أحاول تصحيح فرضيتي في الاعتبار. أحصل على أقصى ما أستطيع من فرضيتي دون البحث عن إجابات عبر الإنترنت - هناك شيء جميل يحدث عندما تحاول حل المشكلات عن طريق التفكير حقًا في التفكير بها أولاً بأول. حتى لو كنت تسير في الطريق الخطأ ، فإن حقيقة قيامك بهذا الجهد تعلمك كثيرًا وتتذكر أن مساحة المشكلة أفضل بكثير في المرة القادمة التي تجري فيها.
  4. إذا كانت فرضيتي تؤدي إلى إجابة ، فاختر انتهيت. إذا لم يكن الأمر كذلك ، أبحث في Google عن الوثائق أو منشورات المدونات أو مشاركات Stack Overflow التي قد تساعدني في الاقتراب من الإجابة.
  5. أثناء القراءة ، أقوم بتدوين ملاحظات حول أي وجميع المعلومات التي قد تكون مفيدة.
  6. لا يوجد حتى الآن حل؟ هذا جيد. أنا متأكد من أنني تعلمت شيئًا ذا قيمة من خلال قراءة كل ذلك ، حتى لو لم يساعدني ذلك مباشرة في حل المشكلة المطروحة. من يدري متى قد تأتي هذه المعرفة في المرة القادمة؟
  7. في هذه المرحلة ، إذا كنت عالقًا حقًا ، فسوف أقوم إما بنشر سؤال على Stack Overflow أو طرح سؤال على عامل أو مطور أعرفه.
  8. خلاف ذلك ، أشطف وأكرر حتى اقترب من الحل النهائي. في مرحلة ما ، تأتي الإجابة دائمًا.

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

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

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

اشطف و كرر

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

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

على سبيل المثال ، إذا كان هناك مثال على CRUD todos (بالطبع) يستخدم React.js ، فربما أقوم بإنشاء نوع مختلف من تطبيق CRUD. مختلف تمامًا بما يكفي لإبقائي مخطوبًا ، لكن ليس مختلفًا لدرجة تجعلني أشعر بالإحباط إذا حدث خطأ ما.

تمكن

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

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

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

أخيرًا ، أتأكد من الابتعاد حالما أجد نفسي محبطًا جدًا من الاستمتاع بالمشروع.

التعلم ممتع

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

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

مثل السحر ، يصبح "أسهل" للتعلم.

كيف تتعامل مع مواضيع جديدة؟ أي أفكار أو لحظات اختراق ترغب في مشاركتها؟ يرجى التعليق أدناه. أحب سماع أفكار جديدة :)