14

ما هو الحل لمشكلة الكوبي و البيست بين المطورين العرب؟

  • adel

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

برأيي، المشكلة تمتد إلى أسلوب التعليم في المدارس و الجامعات. حيث لا يتم التركيز على الأسلوب الخلاق في التفكير. و لا يتم تجريم الكوبي بيست. ما رأيكم؟

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

20

نسخ الأكواد عشوائياً دون فهمها هو المشكلة وليس الاعتماد على Stack Overflow أو أي موقع آخر. حتى ان نسخ المبرمج كود من هناك فهو سيحتاج لأن يفهمه ويعدله بما يناسب الحالة ثم اختباره وتركيبه وهذا ما يزيد خبرة المبرمج.

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

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

14

هو سؤال قبل فترة من الزمن خطر ببالي "The developer is a good programmer or a good googler !???"

المعظم ولا اريد أن اعمم يكاد لا يبذل مجهودا في التفكير في المشكله او ايجاد حلول لها, مجرد بحث بسيط في جوجل يعود ب الاف النتائج وما عليه سوى ان يختار احدى الروابط ليكون حل لمشكلته !!

ولكن البرمجة ليست كذلك ! هي فكر ومنطق وتسلسل تجزئه المشكلة ووضع مجموعه من الحلول ومقارنة اي الحلول أفضل.

هذا العلم الراقي للاسف بدأ يندثر شيئا فشيئا وأصبح أقل الناس خبره يطلقون على انفسهم مطورين ومبرمجين !

وكما هو الحال في البرمجة تجده أيضا في مجالات عديده كسرقه البرامج والابحاث والأوراق وحتى الكتب الالكترونيه حتى ان بعض ناشرين المحتوى المدفوع اصبحو يفرضون سياسات مشدده في هذا المجال, اكاد اجزم ان مفهوم حقوق الملكية الفكريه لا وجود له عن المعظم !

ربما نحتاج ان نوعي الاجيال على هذا المفهوم وان نعطيه حقه من التعليم في المرحله الاساسيه ليعرفو انه من اللا اخلاقي نسخ محتوى الغير ونسبه اليه , نظره المجتمع يجب ان تتغير لمثل هؤلاء الاشخاص , حث الطلاب على الاسلوب العلمي في البحث ووضع نظريات في هذا المجال هو امر مفيد, كما ان تكريم من يحاولون حل المشكلات وعمل بحوث بخصوصها سيشجع المعظم على استخدام هذا النهج.

واعتذر على الاطاله

14

الكوبي بيست والإسكريبتات الجاهزة هي حلول سريعة ومؤقته

لكن مع تطور المشروع تصبح مشكلة للمبرمج وعائق لتطوير البرنامج

وتتمثل المشاكل في :

  1. صعوبة التعديل لانك ببساطة لا تعرف التسلسل الصحيح للكود

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

  3. قد تتعارض الأكواد والإسكربتات المنسوخة مع بعض (إسماء متغيرات - تسلسل تنفيذ - دوال)

  4. الحوجة للبحث عن حلول أخرى كل ما تغيرت عوامل المشكلة اوتغيرت متطلبات البرنامج

  5. لا يكون البرنامج متوازنا

في الجانب المقابل التفكير في حلول خاصة له ميزات :

  1. إيجاد حل لمشكلة يزيد من ثقتك بنفسك وخبرتك

  2. يساعدك في صناعة أدواتك الخاصة التي تفهمها وتسطيع التعديل عليها بسرعة

  3. وسيلة فعالة لزيادة المعرفة وتطوير المقدرات

  4. فتح أفاق للإبتكار والإبداع

  5. أحيانا قد تبدأ بحل مشكلة بسيطة فتكتشف أنك قمت بمشروع ضخم

الخلاصة :

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

ولكن

لا يعني هذا أن تستغني عن الآخرين فإن كان لا بد من فلا أقل من أن تفهم الكود أو الإسكريبت حتى تستفيد

14

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

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

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

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

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