
إذا كنت مهتمًا بالبرمجة ، فقد تكون قد سمعت العبارة:
"يحتاج الجميع إلى تعلم البرمجة لأنه يعلمك التفكير."
- ستيف جوبز
ربما تساءلت أيضًا عن معنى التفكير كمبرمج؟
في الواقع ، نحن نتحدث عن طريقة أكثر فعالية لحل المشاكل.
يهدف هذا المنشور إلى تعليمك هذا.
بعد قراءته ، ستفهم بدقة ما يجب القيام به من أجل إيجاد أفضل الحلول.
لماذا هذا مهم؟
حل المشكلات هو مهارة أساسية.
نحن نحل المشاكل باستمرار. كبير وصغير. كيف نفعل هذا؟ أحيانًا يكون الأمر جيدًا ... إذا كنت محظوظًا.
إذا لم يكن لديك نهج منظم ، فمن المحتمل أنك قد قمت بحل المشاكل على النحو التالي (فعلت هذا عندما بدأت للتو في الترميز):
- محاولة حل
- إذا لم يكن مناسبًا ، فحاول تجربة أخرى ،
- إذا لم يفلح ذلك ، كرر الخطوة 2 حتى النصر.
قد تكون محظوظًا ، لكن هذه أسوأ طريقة! ويمكن أن يستغرق الكثير من الوقت.
أفضل طريقة:
- لديهم نهج منظم
- وضعها موضع التنفيذ.
"يعتبر معظم أصحاب العمل القدرة على حل المشكلات أكثر أهمية.
القدرة على حل المشكلات بالإجماع تقريبًا هي أهم قدرة يبحث عنها أصحاب العمل ... أكثر أهمية من معرفة لغات البرمجة وتصحيح الأخطاء وتصميم النظام.
إن عرض التفكير المتكامل والقدرة على حل المشكلات المعقدة الكبيرة لهما نفس القيمة (إن لم يكن أكثر) من المهارات التقنية الأساسية اللازمة للعمل ".
- رتبة هاكر ( تقرير مهارات المطور 2018 )
نهج منهجي
للعثور على النهج الصحيح ، اتبعت النصيحة من كتاب تيم فيريس حول تعليم
الشيف لمدة 4 ساعات .
قادني هذا إلى مقابلة مع شخصين
رائعين حقًا:
C. Jordan Ball (المرتبة الأولى أو الثانية من بين 65000 مستخدم
Coderbyte ) و
V. Anton Spraul (مؤلف كتاب
Think it it as Programmer. منهج إبداعي لإنشاء التعليمات البرمجية. ").
سألتهم نفس الأسئلة ، وخمن ماذا؟ كانت إجاباتهم متشابهة للغاية!
قريبا سوف تتعرف عليهم أيضا.
ملاحظة: هذا لا يعني أنهم يفعلون نفس الشيء. إنهم أناس مختلفون ، وأنت مختلف عنهم. ولكن إذا بدأت بالمبادئ الأساسية الصحيحة ، فستكون النتيجة أفضل بكثير وأسرع بكثير."أخطر خطأ أراه مع المبرمجين الشباب هو التركيز على بناء الجملة التعليمية ، بدلاً من تعلم كيفية حل المشكلات".
- أنتون Spraul
إذن ماذا تفعل عندما تواجه تحديًا جديدًا؟
دعنا نذهب عبر الخطوات:
1. الفهم
افهم بالضبط ما يجب القيام به. معظم المهام صعبة لأنك لا تفهمها (وهذا هو السبب في أن هذه هي الخطوة الأولى).
كيف تعرف أنك تفهم جوهر المشكلة؟ حاول شرحها بلغة واضحة.
تذكر الحالة التي تم فيها التركيز على مهمة وبدأت في شرحها لنفسك. عند هذه النقطة ، تظهر أخطاء منطقية لم ترها من قبل.
يعرف معظم المبرمجين هذا الشعور.
هذا هو السبب في أنك يجب أن تصف مهمتك أو ترسم رسمًا بيانيًا أو تخبر شخصًا عنها (يستخدم البعض
بطة مطاطية ).
"إذا لم تستطع شرح شيء ما بلغة بسيطة ، فإنك لا تفهمه."
- ريتشارد فاينمان
2. التخطيط
لا تبدأ في حل مشكلة بدون خطة ، على أمل عدم الخلط فيها. خطط قرارك!
في البرمجة ، ليس عليك المضي قدمًا. امنح عقلك الوقت لتحليل ومعالجة المعلومات.
للحصول على خطة جيدة ، أجب على سؤال بسيط:
"بالتطبيق على الإدخال X ، ما هي الخطوات التي يجب اتخاذها للحصول على Y عند الإخراج؟"
ملحوظة: المبرمجين لديهم أداة رائعة لذلك. التعليقات!3. التحلل
هذه اهم خطوة كن حذرا!
لا تحاول حل مشكلة كبيرة واحدة.
بدلاً من ذلك ، قم بتقسيمها إلى مهام فرعية. سيكون حلها أسهل بكثير.
ثم حل المهام الفرعية ، بدءًا بالأبسط. عندما تبدو المهمة بسيطة ، فهذا يعني أنك تعرف الإجابة (أو تكون قريبة منها).
حل كل مهمة فرعية بشكل مستقل عن الآخرين ودمج النتائج بعد الحل.
الجمع بين جميع المهام الصغيرة سيمنحك الحل للأصل.
مبروك!
هذه الطريقة هي حجر الزاوية في حل المشكلات. تذكر هذا (أعد قراءة هذه الخطوة إذا لزم الأمر).
إذا تمكنت من تعليم كل مبرمج شاب كيفية حل المشكلات ، فسيقلل من حجم الديون الفنية.
افترض أنك تريد كتابة برنامج يأخذ 10 أرقام ويعيد ثالث أكبر. بالنسبة للمبتدئين ، يمكن أن تكون هذه مهمة شاقة ، على الرغم من أنها تتطلب معرفة البنية الأساسية فقط.
إذا كنت عالقًا ، فأنت بحاجة إلى التبسيط. بدلاً من ثالث أكبر عدد ، ماذا عن إيجاد الأكبر؟ لا تزال معقدة للغاية؟ كيف تجد أكبر الأرقام الثلاثة؟ أو أكثر من الاثنين؟
قم بتقليل المشكلة حتى تفهم كيفية حلها. سجل القرار. ثم قم بتوسيع المهمة حتى تعود إلى السؤال الأولي.
- أنتون Spraul
4. تمسك؟
ربما تجلس وتفكر الآن: "مرحبًا ، كل هذا رائع ، ولكن ماذا لو لم أتمكن من حل هذه المشكلة؟"
أولا خذ نفسا عميقا. لا تقلقي. يحدث ذلك للجميع!
والفرق الوحيد هو أن أفضل المبرمجين قاموا بإصلاح الخلل وحل المشكلات باهتمام ، وليس إزعاجًا.
في الواقع ، إليك ثلاثة أشياء يجب عليك القيام بها عندما تواجه صعوبات:
- تصحيح الأخطاء تحقق خطوة بخطوة حيث قد تكون مخطئًا في قرارك. يسمي المبرمجون هذا التصحيح.
"إن فن التصحيح هو معرفة الفرق بين ما كتبته في البرنامج وما أردت كتابته"
- أندرو سينجر
- تغيير النهج. ارجع خطوة واحدة للخلف. انظر إلى المهمة من زاوية مختلفة. هل من الممكن تجاهل التنفيذ وتطبيق نهج أعم؟
"في بعض الأحيان ندخل في تفاصيل كثيرة لدرجة أننا لا نأخذ في الاعتبار المبادئ العامة التي يمكننا من خلالها حل المشكلة على مستوى أعلى. [...]
من الأمثلة الكلاسيكية على ذلك ، بالطبع ، جمع قائمة طويلة من الأعداد الصحيحة المتتالية 1 + 2 + 3 + ... + n ، والتي يحسبها غاوس بسهولة باستخدام الصيغة n (n + 1) / 2 ، وتجنب المشاكل المرتبطة بزيادة عدد العناصر "
- ج. الكرة الأردنية
ملاحظة: في بعض الأحيان يكون من الأفضل حذف كل شيء والبدء من جديد بقوى جديدة. أنا جاد. سوف تفاجأ بمدى فعالية هذا. - البحث. أوه ، حسن جوجل القديم. بغض النظر عن مهمتك ، فمن المرجح أن شخصًا ما قد حلها بالفعل أمامك. ابحث عن هذا الشخص أو الحل. افعلها حتى لو اكتشفتها بنفسك. يمكنك أن تتعلم الكثير من الآخرين.
تحذير: لا تبحث عن حل لمشكلة كبيرة. ابحث عن حلول للمهام الفرعية الصغيرة فقط. لماذا؟ إذا لم تجهد (على الأقل القليل) ، فلن تتعلم أي شيء جديد. إذا لم تتعلم أي شيء ، فقد أضعت وقتك.
تدرب
لا تتوقع أن تصبح محترفًا في غضون أسبوع. من أجل حل المشاكل بشكل جيد ، تحتاج إلى حل العديد من المشاكل!
تدرب. تدرب. وممارسة مرة أخرى. فقط مع مرور الوقت ، يمكنك أن تقول: "يمكن حل هذه المشكلة بسهولة بمساعدة <استبدال الحل الخاص بك هنا>".
كيف تتدرب؟ هناك خيارات مثيرة للاهتمام!
الألغاز الشطرنج ، مشاكل الرياضيات ، سودوكو ، الذهاب ، الاحتكار ، ألعاب الفيديو ، إلخ.
في الواقع ، الممارسة الشائعة بين الأشخاص الناجحين هي عادتهم في "حل المهام الدقيقة". على سبيل المثال ، يلعب بيتر ثيل الشطرنج ، ويلعب إيلون مسك ألعاب الفيديو.
قال Byron Reeves: "إذا كنت تريد أن ترى كيف يمكن أن يبدو قادة الأعمال في غضون ثلاث إلى خمس سنوات ، فقم بإلقاء نظرة على الألعاب عبر الإنترنت."
تقديم سريع. يقول Elon Musk و Reid Hoffman و Mark Zuckerberg وغيرهم الكثير أن الألعاب كانت أساسية لنجاحهم في إنشاء شركاتهم.
- ماري ميكر ( تقرير اتجاهات الإنترنت لعام 2017 )
هل هذا يعني أنه يجب عليك لعب الألعاب فقط؟ بالطبع لا.
ولكن ما هو جوهر معظم الألعاب؟ هذا صحيح ، في حل المشاكل!
فماذا يجب أن يكون في التدريبات العملية. شيء سيسمح لك بحل الكثير من المهام الصغيرة (والأفضل أن تعجبك).
على سبيل المثال ، أحب مهام البرمجة. وكل يوم أحاول حل واحد على الأقل (بشكل رئيسي على
Coderbyte ).
كما قلت ، جميع المهام لها نماذج حل مماثلة.
الخلاصة
هذا كل شيء!
الآن أنت تعرف ما يعنيه التفكير كمبرمج.
كما تعلم أن حل المشكلات هو مهارة (أساسية) لا تصدق تحتاج إلى تطوير.
انتبه ، الآن أنت تعرف أيضًا كيفية ممارسة مهارات حل المشكلات!
أخيرًا ، أريدك أن تواجه العديد من التحديات.
"عندما تعتقد أنك نجحت في التغلب على عقبة ، تظهر أخرى. ولكن هذا ما يجعل الحياة مثيرة للاهتمام. [...]
الحياة هي عملية التغلب على العقبات - التحصينات التي من خلالها يجب علينا اختراقها.
في كل مرة تتعلم فيها شيئًا جديدًا.
في كل مرة ستقوم بتطوير القوة والحكمة والمنظورات.
في كل مرة ستكون هناك منافسة أقل. وفي النهاية ، ستبقى نسختك المحسنة فقط ".
- ريان عطلة ( العقبة هي الطريق )
اذهب الآن لحل المشاكل!
وقد يحالفك الحظ!
شكر خاص لـ C. Jordan Ball و V. Anton Spraul. للنصيحة المفيدة التي قدموها.
بالإضافة إلى ذلك ، لم يكن بإمكاني اكتساب معرفتي في البرمجة بهذه السرعة بدون
مدرسة لامدا . لا استطيع شكرهم أو التوصية بهم.