تعلم لغات البرمجة في العملية: مطور برامج حول المشاريع المعقدة



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

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

توصي Skillbox: المهنة عبر الإنترنت "مهنة مطوري الويب" .
نذكرك: لجميع قراء "هبر" - خصم 10000 روبل عند التسجيل في أي دورة من دورات Skillbox باستخدام الكود الترويجي "هبر".

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

تمت مساعدة المطور على الاحتفاظ بالكتب العائمة ودروس الفيديو والدورات. وهو أمر بسيط للغاية - أن تقضي كل وقتك في التدريب دون أن تبدأ العمل في المشروع.

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

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

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

يجب دراسة لغة البرمجة جيدًا بحيث يمكنها أداء مهام معينة.

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

دعني أعطيك مثالاً آخر - تجربتي في تعلم Node.js.

حتى يناير 2009 ، عملت في فريق Java SE في Sun Microsystems. ثم كتبت عددًا كبيرًا من المقالات الفنية. بصفتي معجبًا بـ Java ، قارنته بجافا سكريبت ، وأظهر فضائل الأول. كانت وظيفتي التالية بالفعل في Yahoo ، ثم واصلت استخدام Java ، وفي نهاية عام 2010 ، انتقلت تدريجيًا إلى Node.js - ثم كانت تقنية جديدة.

لقد انغمس على الفور في جافا سكريبت حيث بدأ فريقنا العمل على Mojito / Manhattan ، منصة استضافة للتطبيقات. في نهاية عام 2010 ، أخبر ريان دال سابقًا موظفي ياهو عن Node.js. في نفس الوقت ، عملت مع باكت للنشر على كتاب عن Node.js كمستشار تقني ، وبعد ذلك بقليل قيل لي أن مؤلف الكتاب قرر التخلي عن المشروع ، اقترح الناشر أن أصبح مؤلفًا. لم يكن لدي أي فكرة عن كيفية كتابة الكتب على الإطلاق ، وافقت على ذلك بسهولة.

والآن ، بعد معرفتي إلى حد ما بجافا سكريبت ، بدأت في استخدامه لحل مشاكل العمل في Yahoo ، أثناء كتابة كتاب عن Node.js. تم إصدار نسخته الأولى في أغسطس 2011 ، والرابع - في يونيو 2018.

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

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

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

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

لنتحدث عن بعض المبادئ الرئيسية قبل أن أتحدث عن المشروع الذي أعمل عليه حاليًا.

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

أعلاه ، تحدثت عن مشروعي. هذا البرنامج ، والمهمة معقدة للغاية. سأقوم بإنشاء تطبيق سطح مكتب يسمح للمستخدمين بإنشاء كتب إلكترونية بتنسيق EPUB3. سيستخدم البرنامج الملفات بتنسيقات مختلفة موجودة في دليل معين وتنسيقها وفقًا لمعيار EPUB 3.0.1. سيعتمد التطوير على Electron ، أخطط لإصدار نسخة الإصدار في متاجر تطبيقات Apple و Microsoft. سأقوم بإنشاء واجهة مستخدم تستند إلى Vue.js باستخدام مكتبة مكونات Buefy.

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

ومع ذلك ، آمل أن أكمل جميع أجزاء مشروعي.

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

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

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

بعض الأشياء معروفة لي الآن ، على سبيل المثال ، مواصفات معيار EPUB3. منذ حوالي أربع سنوات ، استيقظت مع فهم أن EPUB هو مجرد أرشيف ZIP لملفات HTML. لمدة ثلاثة أيام ، درست المشكلة وأدركت أن EPUB3 عبارة عن مجموعة من ملفات XHTML ، ويستخدم هذا المعيار عناصر HTML5 و CSS ، ويستخدم ZIP تنسيق الحزم. بعد ذلك بقليل أنشأت أداة على Node.js ، سمحت لي بتجميع مستندات EPUB. ستكون النسخة الأكثر تعقيدًا قليلاً من هذا المستند هي جوهر طلبي الجديد.

واجهت مؤخرًا مشكلة معقدة نوعًا ما. والحقيقة هي أن تطبيقي يتلخص في إنشاء واجهة تكوين رسومية لملفات XML مع البيانات الوصفية. يحتوي ملف OPF (Open Package Format) على العديد من عناصر البيانات ، مثل dc: identifier أو dc: title tags ، والتي يمكن اعتبارها كجدول. يمكن أن يحتوي الكتاب على عدة معرّفات مختلفة ، بما في ذلك رقم ISBN و DOI وعناوين قصيرة وطويلة وأسماء مختلفة بلغات مختلفة ، وما إلى ذلك.

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

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

ولكن من المستحيل تأجيل المهمة إلى أجل غير مسمى - ولقد شرعت في ذلك. في النهاية ، تمكنت من تحقيق ما أردت بمساعدة مكونات Vue.js للعمل مع الجداول. استغرق الأمر مني يومين لمعرفة ذلك. هذا ما حدث:



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

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

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

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

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

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

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

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


All Articles