إذا كنت مهتمًا بالبرمجة، فمن المحتمل أنك رأيت هذا الاقتباس من قبل ستيف جوبز: “يجب على الجميع في هذا البلد أن يتعلموا كيفية برمجة الكمبيوتر، لأنه يعلمك كيفية التفكير.”
ربما تساءلت أيضًا عما يعنيه بالضبط التفكير مثل المبرمج؟ وكيف تفعل ذلك؟؟ في الحقيقة أن البرمجة ليست مجرد كتابة أكواد فقط؛ بل هي نهج تفكير وطريقة حياة .
من خلال مقالنا اليوم سوف تعرف الخطوات التي يجب عليك اتباعها، لتتمكن من حل المشكلات بشكل أفضل، ولكن بعد أن تتعلم التفكير بشكل برمجي. لنبدأ معاً
التفكير بشكل برمجي: لماذا هذا مهم؟
مما لا شك فيه أننا نعاني جميعنا من مشكلات في حياتنا المهنية والاجتماعية، و سواءً كانت كبيرة أو صغيرة؛ فإننا غالباً ما نتعامل معها بطريقة عشوائية من دون وضع رؤيا واضحة لحلها. فإن لم تمتلك مهارة التفكير بشكل برمجي؛ فإنك ستلجأ إلى التجريب ثم الفشل، ثم المحاولة من جديد، ولكن انظر! قد يحالفك الحظ، وتنجح في بعض الأحيان، ولكنها ليست الطريقة الأفضل! إذ أنها تستهلك الكثير من الوقت والجهد.
وتعتبر مهارة حل المشكلات بالإجماع تقريبًا من أهم المؤهلات التي يبحث عنها أصحاب العمل إلى جانب المهارات التخصصية التي تتطلبها الشركات. وبناءً على ماسبق، أصبح تعلم التفكير بشكل برمجي ضرورة ليس من أجل العمل فحسب، بل في الحياة بشكل عام، و يمكن تلخيص التفكير بشكل برمجي بنقطتين أساسيتين:
- وضع خطة عمل
- تنفيذ الخطة
لنبدأ الآن بالمرحلة الأولى!
وضع خطة العمل
من أكبر الأخطاء التي يقع فيها المبرمجون الجدد، التركيز على تعلم بناء الجملة بدلاً من تعلم كيفية حل المشكلات.
إذن، لتتمكن من حل المشكلات عليك أن تتعلم التفكير بشكل برمجي من خلال اتباع الخطوات التالية:
فهم المشكلة
اعرف بالضبط ما يُطلب منك! فمعظم المشكلات تكون صعبة لأنك لا تفهمها، ومن هنا تأتي أهمية هذه الخطوة.
حسنًا، كيف تعرف أنك تفهم مشكلة ما؟ عندما تتمكن من شرحها بلغة بسيطة.
هل تتذكر أنك واجهت مشكلة ما، وبدأت في شرحها، ورأيت على الفور ثغرات في المنطق لم تكن تراها من قبل؟
معظم المبرمجين يعرفون هذا الشعور، و لهذا السبب يجب عليك كتابة مشكلتك، أو رسم مخطط لها، أو إخبار شخص آخر عنها.
“إذا لم تتمكن من شرح شيء ما بعبارات بسيطة، فأنت لا تفهمه.” – ريتشارد فاينمان
ضع خطة
لا تنخرط في حل المشكلة دون خطة، وتأمل بطريقة ما أن تتمكن من حلها، خطط لحلك أولاً!
لا شيء يمكن أن يساعدك إذا لم تتمكن من كتابة الخطوات الدقيقة. امنح عقلك الوقت لتحليل المشكلة ومعالجة المعلومات.
للحصول على خطة جيدة، أجب على هذا السؤال:
“بالنظر إلى المدخلات X، ما هي الخطوات اللازمة لإرجاع المخرج Y؟”
تقسيم المشكلة
انتبه، هذه هي الخطوة الأهم على الإطلاق.
لا تحاول حل مشكلة كبيرة واحدة، لأنك سوف تفشل! بدلاً من ذلك، قم بتقسيم المشكلة إلى مشاكل فرعية. حيث أن حل هذه المشاكل الفرعية أسهل بكثير.
ثم، قم بحل كل مشكلة فرعية واحدة تلو الأخرى. ابدأ بالأبسط، وهو أنك تعرف الإجابة (أو أقرب إلى تلك الإجابة).
بمجرد حل كل مشكلة فرعية، قم بربط النقاط. حيث يمنحك ربط كل الحلول الفرعية الحل للمشكلة الأصلية. مبروك!
هذه التقنية تشكل حجر الأساس لحل المشكلات. تذكرها (اقرأ هذه الخطوة مرة أخرى إذا كان لا بد من ذلك).
على سبيل المثال، لنفترض أنك مبرمج جديد وطُلب منك كتابة برنامج يقرأ عشرة أرقام ويحدد الرقم الثالث من حيث الارتفاع. بالنسبة للمبرمج الجديد، قد تكون هذه مهمة صعبة، على الرغم من أنها لا تتطلب سوى قواعد بناء الجملة البرمجية الأساسية.
إذا واجهتك مشكلة، فعليك تقليص المشكلة إلى شيء أبسط. فبدلاً من إيجاد ثالث أعلى رقم، ماذا عن إيجاد أعلى رقم إجمالي؟ هل لا يزال الأمر صعبًا للغاية؟ ماذا عن إيجاد أكبر رقم من بين ثلاثة أرقام فقط؟ أو أكبر رقم من بين رقمين؟
“قم بتقليص المشكلة إلى الحد الذي تعرف فيه كيفية حلها واكتب الحل. ثم قم بتوسيع المشكلة قليلاً وأعد كتابة الحل بما يتناسب معها، واستمر حتى تعود إلى حيث بدأت.
مراجعة الحل وتصحيح الأخطاء؟
ماذا لو كنت عالقًا ولا تستطيع حتى حل مشكلة فرعية؟”
لا تقلق يا صديقي، فهذا يحدث للجميع، إليك ثلاثة أشياء يمكنك تجربتها عند مواجهة مشكلة:
- تصحيح الأخطاء: انتقل خطوة بخطوة خلال الحل الذي توصلت إليه محاولاً اكتشاف الخطأ الذي ارتكبته. يطلق المبرمجون على هذه العملية تصحيح الأخطاء (في الواقع، هذا هو كل ما يفعله برنامج تصحيح الأخطاء).
- إعادة التقييم: تراجع خطوة إلى الوراء. انظر إلى المشكلة من منظور آخر. هل هناك أي شيء يمكن تلخيصه في نهج أكثر عمومية؟
- البحث: إذهب إلى جوجل، بغض النظر عن المشكلة التي تواجهها، فمن المحتمل أن يكون شخص ما قد حلها. ابحث عن هذا الشخص/الحل. في الواقع، افعل ذلك حتى لو كنت قد حللت المشكلة! (يمكنك أن تتعلم الكثير من حلول الآخرين).
تحذير: لا تبحث عن حل للمشكلة الكبيرة. ابحث فقط عن حلول للمشاكل الفرعية. لماذا؟ لأنك ما لم تكافح (حتى لو كان قليلاً)، فلن تتعلم أي شيء. إذا لم تتعلم أي شيء، فقد أهدرت وقتك.
الممارسة
لا تتوقع أن تصبح عظيمًا بعد أسبوع واحد فقط. إذا كنت تريد أن تكون قادرًا على حل المشكلات، فعليك حل الكثير من المشكلات!
الممارسة، ثم الممارسة ثم الممارسة! لن يستغرق الأمر سوى القليل من الوقت قبل أن تدرك أن “هذه المشكلة يمكن حلها بسهولة”
كيف تتمرن؟ هناك خيارات عديدة!
ألغاز الشطرنج، مسائل الرياضيات، سودوكو، جو، مونوبولي، ألعاب الفيديو، القطط المشفرة، وما إلى ذلك…
في واقع الأمر، هناك نمط شائع بين الأشخاص الناجحين يتمثل في عادتهم في ممارسة “حل المشكلات الصغيرة”. على سبيل المثال، يلعب بيتر ثيل الشطرنج، ويلعب إيلون ماسك ألعاب الفيديو.
قال بايرون ريفز: “إذا كنت تريد أن ترى كيف قد تبدو القيادة في مجال الأعمال خلال ثلاث إلى خمس سنوات، فانظر إلى ما يحدث في الألعاب عبر الإنترنت”.
“لننتقل الآن إلى يومنا هذا. يقول إيلون ماسك، ريد هوفمان، ومارك زوكربيرج، وكثيرون غيرهم: إن الألعاب كانت الأساس لنجاحهم في بناء شركاتهم.” هل هذا يعني أنه يجب عليك فقط ممارسة ألعاب الفيديو؟ لا على الإطلاق، ولكن ما هي ألعاب الفيديو المقصودة؟ نعم، إنها تلك التي تتعلق بحل المشكلات!
لذا، ما يجب عليك فعله هو إيجاد منفذ للتدرب، أو أي شيء يسمح لك بحل العديد من المشكلات الصغيرة (من الناحية المثالية، شيء تستمتع به).
كما قلت لك ، جميع المشاكل تشترك في أنماط مماثلة، وحلها يكون من خلال التفكير بشكل برمجي وأعدك أنك ستنجح!
هذا كل شيء يا رفاق!
الآن، أنت تعرف بشكل أفضل ما يعنيه التفكير بشكل برمجي، كما أنك تعلم أيضًا أن حل المشكلات يعد مهارة رائعة يجب تنميتها كمهارة أساسية، و عندما تعتقد أنك نجحت في التغلب على عقبة ما، ستظهر عقبة أخرى، ولكن هذا ما يجعل الحياة مثيرة للاهتمام. فالحياة عبارة عن عملية اختراق لهذه العوائق – سلسلة من الخطوط المحصنة التي يجب علينا اختراقها.
في كل مرة، سوف تتعلم شيئا.
في كل مرة، سوف تقوم بتطوير القوة والحكمة والمنظور.
“في كل مرة، يتلاشى قدر أكبر من المنافسة. حتى لا يتبقى سوى أنت: أفضل نسخة منك.” — رايان هوليداي ( العقبة هي الطريق )
م عمرو دروبي
شارك المعلومات