recent
أخبار ساخنة

كيف تحل أي مشكلة في البرمجة

كيف تحل أي مشكلة في البرمجة

كيف تحل أي مشكلة في البرمجة

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


1. ما هو حل المشكلات؟

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

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

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

2. تقنية حل المشكلات

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

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

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


لماذا لا توجد دورات كثيرة في هذا الشأن؟
كيف تحل أي مشكلة في البرمجة

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

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


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

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


3. أخطاء حل المشكلات الشائعة

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

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


4. إذن كيف تحل المشاكل؟
كيف تحل أي مشكلة في البرمجة

هذه مهارة تم اختبارها لفترة وجيزة خلال جلسات الترميز لمقابلات العمل. عندما تذهب لإجراء مقابلة تقنية ، قد يتم اختبار معرفتك بأدوات معينة (عادةً ما تكون وظائف منخفضة أو مبتدئة) أو مهارات حل المشكلات (عادةً مناصب وظيفية متوسطة إلى عالية المستوى) وذلك لأن المطورين والمهندسين المحترفين غالبًا ما يكون لديهم لمواجهة مشاكل ليست خاصة جدًا بأداة تخرجهم من منطقة الراحة الخاصة بهم.
  1. قد تتطلب منك بعض حلول المشكلات إنشاء أداة أو نظام خاص بك. لهذا السبب وُلدت الأطر والأدوات والأنظمة الكبيرة في الوظائف رفيعة المستوى وشركات التكنولوجيا. قدم Facebook React و GraphQl ، وأنشأ مطورو Google Angular و Dart ، وأعطتنا Microsoft Typecript ، وما إلى ذلك.
  2. وهذا يوضح أنه عندما تشارك بالفعل في حل مشكلة ما ، فقد يؤدي ذلك إلى أدوات أو أنظمة جديدة يمكن مشاركتها مع الآخرين.
  3. لكل شخص طريقة لحل المشكلات ، ودليل تفصيلي خطوة بخطوة للوصول إلى الحل ، وهذا ما تحتاج إلى التعرف عليه. في الواقع ، يعرف عقلك هذا بالفعل ولكنه يصل إلى الحلول بسرعة كبيرة لدرجة أنك لا تفكر في كثير من الأحيان في كيفية وصوله إلى هناك. لحل المشاكل تحتاج إلى إبطاء والتحكم في القلق للوصول إلى الحل بسرعة.
  4. يمكنك حل المشكلات باستخدام استراتيجية جيدة لنهج المشكلة من خلال التحليل والدراسة والتخطيط للحلول ، وأحيانًا حلول متعددة. قد يستغرق الأمر وقتًا ويتطلب الصبر. لذلك دعونا نكسرها.

5. افهم المشكلة

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

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

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

قد تكون الطريقة التي تؤكد بها فهمك للمشكلة هي تكرارها مرة أخرى للشخص الذي يعرّفك بالمشكلة أو بالحصول على تأكيد على التفاصيل التي جمعتها.

6. دائما خطط للحل أولا

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

7. ابدأ بما تعرفه

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

8. التعرف على الأنماط

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

9. ابدأ بمعظم القيود أولاً

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

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

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

10. قسّم المشكلة

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

بسّط المشكلة
كيف تحل أي مشكلة في البرمجة

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

11. التجربة.

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

12. النسخ الاحتياطي وتحديد المشكلة

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

  1. إذا كنت تشعر بالإحباط ، فمن الأفضل أن تقوم بالرجوع ، والهدوء وإعادة طرح المشكلة.
  2. يجب ألا تقوم بتدوير عجلاتك على شيء يؤثر على حالتك المزاجية.
  3. بمجرد أن تشعر بالإحباط ، فإنك تميل إلى تعقيد الأمور أو الفشل أو اختيار حل معقد للمشكلة.
  4. ابتعد عن اليوم أو لساعات ، وخذ نفسًا عميقًا واشرح المشكلة لك بصوت عالٍ.
  5. ارسم ما يجري للتحقق من فهمك للمشكلة. يجب أن يكون حل المشكلات أمرًا منطقيًا وليس عاطفيًا.

13. الممارسة (حل المشكلة)

حل المشكلة يتعلق بتعريض نفسك لأكبر عدد ممكن من المواقف وممارسة هذه الاستراتيجيات مرارًا وتكراراً.

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


الخلاصة 

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

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