إرشادات للمطورين كاملة المكدس من مُنشئ مكتبة نماذج Redux
نشرت: 2022-03-11في فبراير 2019 ، أطلق فريق مجتمع Toptal مبادرة جديدة تمامًا: فرصة شهرية للتفاعل مع خبراء شبكة Toptal في الوقت الفعلي. جلسات Ask Me Anything (AMA) مفتوحة لجميع أعضاء فريق Toptal الأساسي وشبكة المواهب - يمكن لأي شخص طرح سؤال. في هذه المقالة ، قمنا برعاية أسئلة وإجابات محددة من AMA باستخدام JavaScript وخبير Redux Erik Rasmussen. يناقش إريك تحديات تطوير البرمجيات مفتوحة المصدر ، ونصائح المطورين ، وعالم JavaScript المتقلب ، وكيف يتعامل مع متلازمة المحتال والإرهاق كمطور مطلوب ، وأهم توصيات البودكاست الخاصة به.
Erik هو خبير JavaScript كامل المكدس يتمتع بخبرة تزيد عن 25 عامًا في التطوير ، ومتخصص في React و Redux والنماذج في React و GraphQL. على GitHub - خدمة استضافة قائمة على الويب للتحكم في الإصدار مع أكثر من 28 مليون مستخدم - حصل على مكان في أفضل 100 مستخدم بأكثر من 20000 نجمة. وهو أيضًا مؤلف أول وثالث مكتبات النماذج الأكثر شيوعًا في React: Redux-Form و React-Final-Form.
نموذج إعادة التشغيل وحالة البرامج مفتوحة المصدر
لماذا قررت إنشاء مكتبة نماذج أخرى بعد النجاح الهائل وراء نموذج Redux؟
لقد تعلمت العديد من الدروس على طول الطريق مع Redux Form واكتسبت رؤى حول احتياجات مطوري React Form في جميع أنحاء العالم. لا يمكن معالجة بعض مشكلات نموذج React بدون إلقاء نظرة جديدة على المشكلة. (مزيد من التفاصيل هنا.)
يحلم الكثير من المطورين بإنشاء مشروع مفتوح المصدر ذائع الصيت. ما هي بعض النتائج غير المتوقعة (الجيدة والسيئة) لنجاح مشروع مثل نموذج إعادة التشغيل؟
إنه أمر مجزي للغاية عندما تتمكن من إصلاح خطأ كان يعيق مطورًا أو فريقًا بأكمله من إكمال مشروع. إنه أيضًا رائع حقًا عندما يجد الأشخاص الأخطاء ويصلحونها بأنفسهم. حتى الآن ، كان الناس لطيفين للغاية وكريمين عندما طلبوا المساعدة ؛ لم أتفاعل حتى الآن مع مستخدم صالح يعتقد أنني مدين لهم بالإصلاح.
على الجانب الصعب ، يعتبر الإرهاق أمرًا حقيقيًا ، ولم نكتشف بعد طريقة لتعويض مطوري OSS لإعطاء وقتهم وطاقتهم لمشاريع OSS. تُستخدم Redux Form من قبل الشركات التي تبلغ قيمتها مليارات الدولارات في جميع أنحاء العالم لإجراء معاملات تجارية ، وقد وفر وجودها آلاف ساعات التطوير للفرق التي قامت بتثبيتها ، ولكن لا يوجد حل جيد لمنح حتى جزء من هذه الأموال للمؤلفين .
هل هناك أي حلول واعدة في العمل لتعويض مطوري البرامج مفتوحة المصدر مثلك؟
بدأ صديق لي هذه الشركة المسماة CodeFund. كانت لديه فكرة ، "ماذا لو تمكنا من وضع إعلانات على وثائق مكتبة الشفرات؟" كمطورين ، نقضي اليوم كله في البحث في الوثائق ومعرفة كيفية تنفيذ أي شيء نقوم به. بالإضافة إلى ذلك ، يكسب المطورون أموالًا أكثر بكثير مما يحققه متوسط تصفح الويب الخاص بك ، لذلك نحن منتج فاخر.
توصلت CodeFund إلى فكرة أن التوثيق هو حقًا مكان رائع للإعلان. كنت أحد الطيارين الأصليين. لقد عملت بشكل جيد ولكنهم واجهوا مشكلة مع GitHub. في الأصل ، كنا نضع إعلانات على مستودع GitHub نفسه ، لكن GitHub والمحامين انقضوا وقالوا لا. وهو عار. تفاوضت CodeFund معهم لفترة من الوقت ، لكنهم قالوا لا في النهاية.
مع وثائق المكتبة التي يتم الاتجار بها جيدًا ، يمكنك الحصول على 150 دولارًا شهريًا ، وهو ما لا يدفع مقابل ما يستحق. هناك بعض المكتبات النادرة - مثل Babble أو Webpack - حيث يوجد ما يكفي من الأموال الممنوحة لهم بحيث يمكنهم دعم مطورين أو ثلاثة مطورين بدوام كامل يعملون على تحسين هذا الشيء. Babble و Webpack - شركات بمليارات ومليارات الدولارات تعتمد على بنيتها التحتية وبالتأكيد ، Redux Form تدعمها.
في أي موقع ويب تذهب إليه تقريبًا ، يمكنك البحث في المصدر ويمكنك رؤية بعض التعليمات البرمجية التي كتبها شخص معين لم يتم تعويضه بشكل صحيح. يجب رفع مستوى الوعي لجعل الناس أكثر تقديرًا لما هو المصدر المفتوح والساعات التي يقضيها البعض منا.
لماذا تصنع شيئًا مفتوح المصدر ومجانيًا؟ ما هو الحافز للمطورين مثلك؟
السبب وراء إنشائه هو أنك بحاجة إليه مهما كان ما تعمل عليه في الوقت الحالي. عندما تطلقه ، يأتي الآخرون ويجعلونه أفضل. حلم المصدر المفتوح هو أن تقول ، "لقد صنعت عربة صغيرة تساعدني في نقل صخري من هنا إلى هناك" ، ثم يأتي أحدهم ويقوم بتحسينها. في مشروعك التالي ، تعود وتستخدم نفس المكتبة وتقول ، "توقف ، هذا الشيء يتحرك بشكل أسرع. انه افضل الآن."
إنها أيضًا مجزية جدًا. أصاب بالدوبامين عندما يقول الناس ، "لقد كان هذا يعيقنا لمدة ثلاثة أسابيع وهذا الإصلاح الصغير الذي استغرق منك ثلاث ساعات للقيام به قد وفر لنا ثلاثة أسابيع من الوقت." هناك القليل من دورة الإدمان مع ذلك ، حيث تحصل على تعزيز إيجابي ويشعر بالرضا.
مع مكتبة النماذج الثانية الخاصة بي ، لم يكن الناس يقولون ، "مرحبًا ، نريد مكتبة نماذج أخرى" ، لقد فكرت فقط في طريقة لتحسينها.
هذا نوع من الحلم لماذا تفعل ذلك. لكنها بالتأكيد ليست من أجل المال.
في عالم مثالي ، ما مقدار التعويض الذي ستحصل عليه مقابل إنشاء برنامج مفتوح المصدر؟ فقط بعض الجليد على الكعكة؟
لا أمانع إذا دفع لي أحدهم ستة أرقام مقابل العمل في المصادر المفتوحة طوال اليوم. إذا نظرت إلى القيمة الناتجة مقابل التكلفة ، فإن نسبة المصدر المفتوح عالية جدًا. يمكنك الوصول إلى مكتبات صغيرة صغيرة تقوم بشيء واحد ، وشيء واحد حقًا ، بشكل جيد حقًا.
إذا كان على كل شركة في العالم تعيين فريق مطور خاص بها للقيام بذلك ، فإن النتائج ستختلف على نطاق واسع. حقيقة أن لدينا مصدر مفتوح ويمكن أن يكون لدينا حل واحد لذلك - فقاعة خوارزمية واحدة في الأعلى وهي الأفضل - تعني أن كل شخص في العالم لديه هذه الكفاءة مضمنة.
قيمة أخرى من المصدر المفتوح هي أنك إذا كنت تستخدم شيئًا كتبته وشركتك فقط تستخدمه. . . قارن ذلك بشيء تستخدمه 1000 شركة. لقد وجدوا كل زاوية وركن صغير في مساحة الحشرة التي من المحتمل أن تكون مشكلة ، وأنت تأخذ ذلك وتقوم بتوصيله بالشيء الخاص بك - أنت ذهبي. سيكون لديك ثقة أكبر في ذلك.
العالم الديناميكي لجافا سكريبت
بعد أن كنت في مساحة JavaScript لفترة طويلة ، يجب أن تكون قد شاهدت العديد من الأطر الجديدة الساخنة [لبناء تطبيقات JavaScript] تأتي وتذهب. كيف تحافظ على نبض الصناعة حتى تتمكن من تحديد أطر العمل التي يجب الالتزام بها؟
عليك أن تشعر برياح مجتمع التطوير. المعركة الحالية بين TypeScript و Flow هي مثال رائع. اخترت الحصان الخطأ في هذا السباق في البداية ، على افتراض أن Facebook سيكون مشرفًا أفضل على إطار عمل الكتابة. لكنني أعتقد أن TS قد ربح تلك المعركة إلى حد كبير ، والآن أنا أقوم بترحيل الأشياء ببطء في هذا الاتجاه.
هناك ركن في Twitter وهو "المطور Twitter". إذا تابعت عددًا كافيًا من الأشخاص - ربما تحتاج إلى عينة بحجم مائة أو نحو ذلك - يمكنك التعرف على مكان هبوب الرياح وما الذي أصبح شائعًا. ستحصل على الكثير من المنشورات مثل ، "اعتدت استخدام المكتبة أ ، لكنني تعلمت للتو عن المكتبة ب وكل شيء أصبح أسهل كثيرًا." تحصل على ما يكفي من هؤلاء وأنت مثل ، "حسنًا ، ربما يجب أن أراجع هذه المكتبة الأخرى."
تظهر الاتجاهات وتذهب في مساحة JavaScript. هل سيكون دائما في حالة حركة؟
أعتقد (وآمل) أن تستمر في التطور. الركود هو الموت في التكنولوجيا. حتى Java تبتكر بشكل كبير في الوقت الحالي: الأشياء التي يمكنك القيام بها في Java 10 لا تشبه Java 6 لجدتك.
قد يكون إنشاء تطبيقك باستخدام Tech X أمرًا مرهقًا لترى أن جميع الأطفال الرائعين يستخدمون الآن Tech Y. ولكن هذا هو المجال الذي نحن فيه.
في رأيك ، ما هي مفاهيم JavaScript المهمة بشكل خاص لفهمها حقًا لاكتساب إتقان اللغة؟
أود أن أقول أن البرمجة الوظيفية وفكرة تمرير الوظائف مهمة جدًا. خاصة إذا كنت قادمًا من لغة مثل Java أو C ++.
هل تعتقد أنه يجب استخدام React لإنشاء تطبيقات ذات صفحة واحدة (SPAs) أم فقط لمكونات في صفحة عادية؟
هذا هو جمال React: إنه متعدد الاستخدامات. لقد بدأت في تقديم React ببطء لجميع الميزات الجديدة في تطبيق Java / jQuery قديم في وظيفتي اليومية. تعمل React بشكل جيد مع وجود عقدة DOM للعمل عليها. لا يلزم أن يكون متحكمًا في التطبيق بأكمله.
عند بدء تطبيق React جديد ، ما هي الأدوات والمكتبات التي تستخدمها بانتظام من البداية؟
أعتقد أن create-react-app
هو الفائز الواضح في هذا الآن. قبل أربع سنوات ، عندما لم يكن هناك شيء من هذا القبيل ، كان الأمر أكثر صعوبة.

كيف تتعامل مع حالة التطبيق في تطبيقات التفاعل الخاصة بك؟
عندما ظهر Redux كان من الواضح أن الإجابة. ومع ذلك ، فقد اكتشفت أن الكثير من "حالة" Redux الخاصة بي كانت عبارة عن أشياء مثل loading
و listOfObjects
، وقد استخدمت مؤخرًا Apollo GraphQL لهذه الأشياء. يمكن إدارة أشياء أخرى مثل isSideNavOpen
بمكونات تستند إلى السياق بسهولة تامة. ومع ذلك ، لا تزال هناك بعض حالات الاستخدام المشروعة لـ Redux ، لكن لم أجد أيًا منها في تطبيقات React البسيطة الخاصة بي.
ما هو محرر / IDE المفضل لديك؟
آه ، هذا السؤال!
لقد جئت من Java ، وكنت سعيدًا جدًا بـ JetBrains IntelliJ لسنوات عديدة ، لكنها بطيئة بعض الشيء بالنسبة لـ JS. ذهبت أولاً إلى Atom ، لكنني استقرت أخيرًا على VS Code. تكامله مع Jest و Flow و TypeScript لا يهزم.
ما رأيك في التطور المتماثل مثل opal
الذي يترجم ruby
إلى JS
ثم يفتح الطريق أمام روبيست لكتابة تطبيقات React / Flux-Structured في Pure Ruby (بدون كتابة أي JS)؟
أعتقد أن حقيقة أن JavaScript قد انتقل إلى الخادم يعد أمرًا مهمًا. تعد القدرة على تقديم نفس الشفرة على كل من العميل والخادم أمرًا ضخمًا ، وعلى الأرجح طريق المستقبل.
ما هو برأيك أكبر مشكلة في أطر عمل JS الحالية الأكثر شيوعًا؟
لست متأكدًا تمامًا ، لكني أحب حقًا اتجاه css-in-js ، و serverless ، و SSR الذي تتبعه شركات مثل Zeit مع Next.js.
إنه أمر مضحك حقًا بالنسبة لي ، كشخص كان يقوم ببناء مواقع ويب في أواخر التسعينيات ، أننا نعود إلى مواقع الويب الثابتة. سنعود إلى إنشاء كل شيء في وقت الإنشاء ، وبعد ذلك لديك الأشياء الثابتة الخاصة بك على الخادم ثم يمكنك إضافة عناصر ديناميكية من خلال ما يسمونه إعادة الترطيب. بعد أن يتم عرض الصفحة بالكامل ، يمكنك الحصول على JavaScript إضافي لجعل الأشياء متحركة بالفعل وتحريك المكونات.
يدعم Zeit ، من خلال إطار عمل Now الخاص بهم ، أيضًا البناء الثابت لموقع الويب الخاص بك ، لأنه لا يوجد شيء أسرع من تنزيل ملف HTML ثابت. إنه مجرد ملف نصي ثم بوم ، لقد حصلت عليه. بينما إذا كنت تضرب خادمًا ، فيجب أن تضرب قاعدة بيانات ربما أربع أو مائة مرة فقط لإنشاء أي صفحة تريد عرضها. هذا بطيء للغاية.
الفكرة الثابتة تكتسب شعبية.
هل تشعر أن JavaScript يمكن أن يتعامل مع اللغات "الناضجة" (مثل Java و C ++) وأن تصبح اللغة المفضلة للمؤسسات؟
بالتااكيد. الأشياء التي يقوم بها الأشخاص الآن باستخدام عقدة "بدون خادم" قابلة للتطوير للغاية وأعتقد أن واجهات برمجة التطبيقات المؤسسية [واجهات برمجة التطبيقات] يمكن إعادة كتابتها في JavaScript ، على الأقل من قبل الشركات الأكثر مرونة وتطلعات المستقبل.
ما الذي يجب أن يبحث عنه المطور في العميل؟
تريد مستوى من الثقة والاستقلالية الممنوحة لك ، على افتراض أنك كبير بما يكفي لتستحقه. لا أرغب في الحصول على وظيفة حيث كان هناك شخص ما ينظر فوق كتفي طوال الوقت. الكثير من الوقت ، مع أعمال التطوير ، يمكن أن يكون لديك شيء يستغرق خمس دقائق لإصلاحه ، لكنك تقضي أربع ساعات في العمل على بعض المشاكل الصغيرة في التصميم الذي يجعله لا يمكنك اختباره بالفعل. هناك الكثير من الأوقات حيث سأقضي ثماني أو عشر ساعات في حل مشكلة - حيث أعمل حقًا ، وأركز حقًا طوال الوقت - والحل الفعلي يشبه سطرين من التعليمات البرمجية. أنت تريد صاحب عمل لديه هذا المستوى من الفهم لما يشبه عملك.
على متلازمة Imposter ، الإرهاق ، وإزالة التوتر
يبدو أن متلازمة الدجال ظاهرة شائعة بين المطورين. هل تشعر به ، وإذا كان الأمر كذلك ، كيف تتعامل معه؟
إطلاقا. خاصة عند التحدث في مؤتمر. (أو تفعل AMA؟)
عندما يتعلق الأمر بالتدريس / التوجيه ، عليك أن تدرك أنك تعرف المزيد عما تفعله أكثر مما عرفته في الشهر الماضي. حسنًا ، هناك دائمًا أشخاص عادوا إلى حيث اعتدت أن يكونوا قد يستفيدون من معرفتك.
من المهم أيضًا أن تكون قادرًا على قول ، "لا أعرف ، فلنحقق في الأمر معًا" (أيضًا نصيحة أبوية جيدة).
ما هو يوم في حياتك مثل؟ كيف يمكنك جدولة كل شيء بحيث لا تعمل 100 ساعة في الأسبوع وتحترق؟
عندما أكون عميقة حقًا في المصادر المفتوحة ، فإن ذلك يستغرق الكثير من وقتي ؛ في بعض الأحيان ، يجب أن أتراجع لمدة شهر أو نحو ذلك في كل مرة. آخذ أطفالي إلى المدرسة ثم أقضي الوقت في البحث عن نوع المشاكل التي يواجهها الناس. إذا كانوا جادون حقًا ، فأنا أبذل بعض الجهد في محاولة علاجهم أو الرد بطريقة مفيدة.
لدي وظيفة يومية لا تتعلق على الإطلاق بالمصدر المفتوح ، الأمر الذي يستغرق الكثير من وقتي. طوال اليوم ، لديّ إشعارات تم إعدادها حتى أتمكن من معرفة ما إذا كانت هناك مشكلة خطيرة في أي شيء. إذا تم إطلاق ميزة جديدة أو شيء من هذا القبيل ، فمن المحتمل أن تكون هناك أخطاء في ذلك الوقت.
لقد تعلمت أن كل من يكتب متطلبات مشروع ما متأكد من أن "هذا كان يجب أن يتم بالأمس ، فلماذا لم يتم ذلك بعد؟" لقد مررت بالعديد من المرات التي يستغرق فيها أي فريق يتلقى عملي ثلاثة أسابيع لوضعه قيد الإنتاج. وأنت مثل ، "حسنًا ، ما سبب كل هذا التوتر؟"
إذا كانت هناك مهمة يجب القيام بها بحلول يوم الجمعة ، وانتهى الأمر بها بحلول يوم الجمعة التالي ، فلن يتم إغلاق العمل أبدًا لأنك فشلت. عندما تكون صغيرًا ولا تعرف أي شيء أفضل ، يبدو الأمر كما لو ، "يا إلهي ، علينا إخراج هذا من الباب." ولكن بعد القيام بذلك مرات كافية ، وسترى ، "انتظر لحظة ، ما قالوه لنا لم يكن صحيحًا حقًا ،" يمكنك أن تقول ، "حسنًا ، نعم. ما من أي وقت مضى. سيتم إنجازه عند الانتهاء ".
لقد أصبت بالإرهاق قليلاً في أكتوبر الماضي عندما أعلنت React عن هذا الشيء المسمى React Hooks. إذا كنت هناك ، وعلى استعداد لتناول أي شيء جديد والتعامل معه ، كان بإمكاني الحصول على الكثير من الأميال لكوني من أوائل الأشخاص الذين دخلوا في React Hooks. أنا نوعا ما أراقب ما يمكن أن يكون الشيء الكبير التالي.
ماذا تفعل في وقت فراغك لتقليل التوتر؟
أتنزه وأستمع إلى المدونات الصوتية التي لا تتعلق بالتنمية.
هل يمكن أن توصي؟
ملفات البودكاست التقنية الحقيقية الوحيدة التي أستمع إليها هي The Undefined Podcast ، والتي تتعلق بشكل عرضي فقط بنصائح التكنولوجيا والمطورين. أستمع أيضًا إلى React Podcast - والذي سأظهر عليه قريبًا (آمل أن يكون له معنى ، اعتمادًا على جودة المحرر).
بالنظر إلى أداة التقاط البودات التي اخترتها ، Overcast ، فإن البودكاست ذات الأولوية الخاصة بي تشمل:
- رودريك على الخط
- منطقي
- بودكاست التكنولوجيا العارضة
- أعمال الطرق
- الأس
- مرحبًا بالإنترنت
- راديولاب
- رد على الكل
في الآونة الأخيرة ، بدأت بالفعل في تشغيل اثنين من البودكاست بنفسي:
الأول يسمى البحث عن العدالة ، حيث أنا شخص ذكي بدرجة معتدلة لا يعرف شيئًا تقريبًا عن نظام العدالة الجنائية ، أقابل صديقًا لي قضى حياته المهنية بأكملها في فحصه والعمل على إصلاحه. إنه يعمل بشكل مباشر مع حكام العديد من الولايات الأمريكية لتقليل عدد نزلاء السجون والعودة إلى الإجرام بعد إطلاق سراحهم. إنه ليس موضوعًا كنت مهتمًا به حقًا ، لكن مضيفي المشارك يأسرني في كل حلقة.
والثاني هو عرض للسخافة الخالصة ، يُدعى Happy Hour with Dennis and Erik ، حيث نشارك أنا والصديق نفسه في بعض المشروبات المسائية ونتحدث عن حياتنا ونضحك بعضنا البعض. إن برنامج Seek Justice مخصص لتنقلاتك الساطعة إلى العمل ، وساعة Happy Hour مخصصة لقيادتك للاسترخاء إلى المنزل.
لإعادته إلى المطورين ، ساعدتني مساعدي في البودكاست في حل مشكلة لم أتمكن من إيجاد حل لها في الصناعة: مشغل MP3 سهل ، مع صورة ألبوم ، يعمل أيضًا كبطاقة Twitter. لذلك كتبت AudioCard.