نشر على ٢٨-٠٩-٢٠١٩
لحن من دفاتر ليوناردو دافينشي

الممارسة المتعمدة: كيف علمتني الموسيقى والرسومات

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

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

التركيز على الأساسيات

ماذا نتعلم؟

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

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

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

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

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

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

ماذا يعرف الناس المهرة

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

فنان ماهر لا يعرف كيفية رسم الأوراق على الأشجار. فنان ماهر يعرف كيف يتصرف اللون.

وبالمثل ، لا يعرف المبرمج الماهر فقط كيفية التنقل React أو Vue أو Ember أو أيًا كان الإطار الساخن سيكون بعد عام من الآن. يفهم مبرمج ماهر مهارة جافا سكريبت الفانيليا وكيف يعمل المتصفح. يفهم مبرمج ماهر مهارات البرمجة الوظيفية ونمط التدفق والسبب في أنه يستحق استخدام React في المقام الأول. المعرفة لها تبعياتها الخاصة.

تعلم الأساسيات ، والباقي مرق.

لوحة من الحياة

النسخ واللصق مقابل المصدر الرئيسي

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

ليست صورة لنموذج. ليس بعض الفنانين الآخرين تسليم المناظر الطبيعية. ليست لوحة شخص آخر للرسم. وهذا يعني الرسم مباشرة من المصدر ، حل المشكلة بنفسك.

إن النظر إلى لوحة شخص آخر لغروب الشمس بدلاً من الوقوف خارج المنزل يعني أنك تنسخ حلاً وليس ابتكار حل. إنه ما يعادل قصاصات النسخ واللصق قبالة Stack Overflow.

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

المعرفة المحمولة

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

الحلول نادراً ما تناسب الجميع. يتطلب تشكيل الحلول لتناسب سياقها مهارة - ولا يمكن تعلم تلك المهارة إلا بالطريقة الصعبة.

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

ممارسة جداول الخاص بك

التكرار المستهدف

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

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

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

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

Conciertos المستوى العالي

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

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

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

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

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

الدراسات والرسومات

أيدي دافينشي

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

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

هذه هي الدراسات المستهدفة. إنها ليست الفاكهة التي يحاولون فهمها. يحاول الفنانون فهم شيء أكثر أساسية: الضوء واللون في النموذج.

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

كراسة للمبرمجين

كيف تتصرف الوعود؟ ماذا عن مقارنة متزامن تنتظر؟ هل كل شيء في جافا سكريبت هو في الحقيقة كائن ، حتى أنه لاغٍ؟ كيف يمكنني حفظ هذه الوظيفة؟ إلى أي سياق ترتبط وظائف السهم؟ إذا كنت ستكتب وظيفة مُنشئ وتدعو super () في كل مكون من مكونات React ، ألا يستحق الأمر دراسة صغيرة في تعلم فئات ES6؟ إذا كنت تكتب طلبات HTTP غير متزامنة ، ألا ينبغي أن تفهم كيف تعمل الوعود؟

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

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

انظر إلى أيدي الموناليزا. انهم الكمال.

صور وأشجار التبعية

تكوين

أعتقد أن المهمة الأساسية لجميع المبدعين (بما في ذلك المبرمجين) هي التكوين. حرفيًا: كيف تجمع العناصر المختلفة معًا بحيث ترتبط بطريقة متماسكة؟

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

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

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

طبقة طبقة

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

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

كود المبرمجين.

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

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

أنظر أيضا

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