لماذا هو مفيد لإعادة اختراع العجلات



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

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

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

يعتبر المطورون أمرًا بديهيًا


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

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

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

return new Promise((resolve, reject) => { functionWithCallback((err, result) => { return err ? reject(err) : resolve(result); }); }); 

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

وصول الى الجذور


في عام 2012 ، عندما لم تتحقق بعد هيمنة الأطر الأمامية ، قرأ العالم مسج وأقرأ كتاب أسرار جافا سكريبت Ninja ، الذي ألفه جون رزيج ، مؤلف jQuery.

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

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

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

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

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

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

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

إعادة اختراع هذه العجلة


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

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

Source: https://habr.com/ru/post/ar472006/


All Articles