كيف تفكر كالمبرمج (الجزء الثاني) "خطوات حل المشكلة".

 
خطوات حل المشاكل
الصورة alphacoders.com

تحدثنا في الجزء الأول من هذه السلسلة عن أهمية امتلاك مهارة حل المشاكل, والآن نكمل الحديث عن خطوات حل المشكلة.

 الخطوة الأولى: افهم المشكلة.
افهم المشكلة جيدا, فالمشكلات صعبة لأنك لا تفهمها جيدا (لذلك فهي الخطوة الأولى).
حسنا... كيف تعرف إذا أنك تفهم المشكلة؟ عندما تتمكن من شرحها بلغة بسيطة.

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

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

يمكن لإجابة هذا السؤال أن تساعدك في الحل: 
إذا كان لديك المعطى ( س), ما هي الخطوات اللازمة للوصول للناتج (ص)؟؟

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

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

"إذا أردت أن تعلم المبرمج المبتدئ مهارة واحدة لحل المشاكل فسوف تكون ‘تبسيط المشاكل‘. على سبيل المثال فلتفترض أنك مبرمج مبتدئ وطلب منك عمل برنامج يقوم بأخذ عشرة أرقام وحساب ثالث أكبر رقم. بالنسبة للمبتدئ قد تكون هذه المهمة صعبة قليلا رغم أنها تتطلب كود بسيط جدا. إذا علقت فلتبدأ بشيء أبسط مثل أن تحسب الأكبر في مجموعة الأرقام أو الأكبر في ثلاثة أرقام أو رقمين.
ابدأ بتبسيط المشكلة حتى تستطيع حلها ثم وسعها قليلا في كل خطوة حتى تصل إلي الحل للمشكلة الكبيرة التي بدأت بها" - V. anton Spraul

الخطوة الرابعة: هل علقت؟ 
قد تتساءل الآن: "هذا يبدو رائعا... ولكن ماذا إذا كنت عالقا, ولا يمكنني حتى حل جزء صغير من المشكلة؟".

أولا خذ نفسا عميقا, وثانيا لا تقلق فهذا طبيعي جدا ويحدث للجميع.

حسنا هناك ثلاثة أشياء تفعلها عندما تعلق:

  • التنقيح: انتقل خلال حلك خطوة بخطوة لتجد مكمن الخطاء. (المبرمجون يسمون هذا "التنقيح").

"فن التنقيح هو أن تعرف ما أمرت البرنامج أن يفعل ليس ما تظن أنك أمرته أن يفعل" - andrew Singer  

  • إعادة التقييم(المراجعة): خذ خطوة للخلف وانظر للمشكلة من منظور أخر, هل هناك شيء يمكن تبسيطه وتعميمه أكثر.

"أحيانا نضيع وسط تفاصيل المشكلة وننسى المبادئ الأساسية والتي تساعد في الحل بطريقة أكثر عمومية. والمثال الكلاسيكي على هذا هو عملية جمع الأرقام (1+2+3+ ... + ن) والتي أكتشف لها جوس عندما كان صغيرا الصيغة العامة ن*(ن+1)/2 والتي وفرت عليه عناء الجمع" - C. Jordan Ball
 
ملاحظة جانبية: يمكنك المراجعة عن طريق البدء من جديد ومسح كل شيء, نعم أنت جاد. سوف تنبهر من فاعلية هذا التكنيك.

  • البحث: جوجل هو صديقك دائما. لا يهم ماهي المشكلة التي تواجهها، فقد حلها أحدهم من قبل. جد هذا الشخص أو الحل, حتى ولو حللت المشكلة (حقا... يمكنك أن تتعلم الكثير من حلول الآخرين).

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

حسنا... لم يتبق الكثير لتصبح أفضل في حل المشكلات.

انتظر البقية في الجزء الثالث والأخير من هذه السلسلة.

إلى اللقاء





تعليقات

المشاركات الشائعة من هذه المدونة

30 شيء تمنيت لو عرفتها عندما بدأت في البرمجة(الجزء الأول).

ما هي مبادئ SOLID؟ ولما يجب أن يعرفها كل مطور؟

كيف تصبح مطور ويب وتحصل على وظيفة في أسرع وقت؟ (الجزء الثاني)