Problem Solving

إن شاء الله تعالى هنتكلم في كام نقطة تخص مهارة حل المشكلات أو الـ Problem Solving

  • يعني إيه Problem Solving؟
  • ما هي أنواع الـ Problem Solving؟
  • هل الـ Problem Solving أهم من التكنولوجي (Technology)؟
  • إزاي تنمي مهارة الـ Problem Solving؟
  • بعض مواقع الـ Problem Solving.
  • نصيحة من سوق العمل.

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

خلينا نُسقط الكلام ده على البرمجة...يعني إيه Problem Solving؟

عملية بناء أي مشروع في مجال السوفتوير سواء موقع أو تطبيق أو حتى سكربت معين بتمر بمراحل معينة وطبيعي جدًا إن فيه مشاكل هتحصل في أي مرحلة من المراحل ولكن خلينا نركز على الجزء الخاص بالأكواد (Coding)، والمشاكل هتكون مختلفة ومتنوعة سواء مشكلة في إضافة ميزة جديدة للمشروع أو حتى تعديل على ميزة موجودة أو حتى حذفها من المشروع ممكن يأثر على باقي المشروع كله وهنا تيجي مهارة حل المشكلات وتساعدك في إنك توصل لأفضل حل ممكن للمشكلة من حيث الأداء وسهولة قراءة الكود وسهولة استخدامه في أكتر من مكان في المشروع وهكذا...يعني الـ Problem Solving مش بس مسائل من الشيتات ومن LeetCode أو غيره من المواقع؟

الحقيقة لا، المسائل ما هي إلا جزء من الـ Problem Solving وتعتبر عامل مساعد في تنمية مهارة حل المشكلات عندك والتفكير المنطقي (Logic Thinking)


📌 نيجي بقى لأنواع الـ Problem Solving والصراحة إنها كتيرة وملهاش أنواع محددة، باختصار أي مشكلة هتقابلك وأنت شغال في مجال البرمجة وحليتها فهي تعتبر Problem Solving وطبعًا ده بعد معرفتك باللغة أو إطار العمل اللي بتستخدمه، يعني مينفعش تبقى متعرفش إزاي تستخدم حاجة معينة في اللغة أوطريقة كتابتها وتروح تدور عليها وتكتبها وتقول دي Problem Solving

  • لو أنت فرونت اند وعندك Layout معين مطلوب منك تعمله زي التصميم وتخليه responsive ولكن هيكون ليه Layout مختلف شوية

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

  • لو أنت موبايل ديفلوبر وعندك تاسك تعمل integration مع بوابة دفع إلكترونية معينة

  • لو أنت باك اند ومحتاج تعمل عمليات حسابية زي إنك تشوف السعر الكلي للأوردر كام وهل فيه كوبون خصم مستخدم أو فيه sale على المنتج ولا لا وهكذا

  • وغيرها من المشاكل اللي ممكن تقابلك وأنت شغال في البرمجة بغض النظر عن تخصصك


📌 هل الـProblem Solving أهم من التكنولوجي؟

خلينا نتكلم بالعقل شوية، أنت دلوقتي حليت 500 مسألة على مواقع الـ Problem Solving وجيت تقدم على شغل هتكتب المسمى الوظيفي بتاعك إيه؟

أكيد مش Problem Solver!

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

يعني حاول توازن بين الاتنين ومتهملش حاجة منهم على قد ما تقدر...


إزاي تبقى شاطر في الـProblem Solving؟

الموضوع مش في يوم وليلة ولا في شهر ولا في 6 شهور...مبتتحسبش كده يا صاحبي.

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

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


هتنمي المهارة منين وفين وإزاي؟

فيه بعض المواقع المشهورة زي LeetCode و HackerRank و codewars و AtCoder وفيه شيتات مسائل تبع جامعات مختلفة بتخليك تطبق على موقع Codeforces وغيرها من المواقع...


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


ودي بعض المواقع اللي هتساعدك في رحلة الـ Problem Solving

🔻 leetcode.com

🔻 codewars.com

🔻 topcoder.com

🔻 codingame.com

🔻 hackerrank.com

🔻 projecteuler.net

🔻 coderbyte.com

🔻 codechef.com

🔻 exercism.io

🔻 spoj.com

🔻 atcoder.jp

🔻 hackerearth.com

🔻 interviewbit.com

🔻 codesignal.com

———

لكن أهم حاجة إنك تبدأ وتستمر...وفقكم الله لكل خير 🌿