بدايةً الغرض من هذا المقال ليس لجعلك تشعر بالسوء، بل على العكس من ذلك الهدف منه تحسين أداءك وتطوير مهاراتك لتصبح مبرمجًا محترفًا، فأول الطريق لتطوير مهاراتك معرفةُ أين مكمن الخلل ليتسنى لك العمل على تطويره وتحسينه، لذلك تحتاج كمبرمج إلى من يشير إلى أخطاءك وينبهك على وجودها لتتمكن من إصلاحها. فيما يلي بعض المؤشرات التي تدل على أنك تسير في الاتجاه الخاطيء فيجب أن تأخذ إصلاحها بعين الاعتبار عند عملك البرمجي :
عدم فهم الغرض من كتابة البرنامج :
الخطوة الأولى والمهمة عند بداية أي عمل برمجي تأكدك من فهمك تمامًا لمتطلبات البرنامج، ففي دورة حياة تطوير البرامج (program development life cycle) تبدأ الخطوة الأولى بعملية استيعاب المطلوب يليها تحليله جيدًا ثم تقوم بعمل الخوارزميات المناسبة لعمل برنامجك بعد ذلك، تأتي خطوة البدء بالتنفيذ وكتابة الشفرة البرمجية. إن اتضاح الرؤية لديك خير مُعين لك أثناء كتابة الشفرة، فيجب أن تكون الرؤية ساطعةً كالشمس في عقلك وتستطيع أن تنفذ الخطوات البرمجية التي كتبتها في عقلك بوضوح ومنطقية، فتعلم الهدف من كل أمر تمت كتابته والغرض من كل متغير تم تعريفه، من أعراض عدم فهمك لما هو مطلوب من برنامجك تنفيذه أو عدم استيعابك الكامل لما قمت بكتابته الحالات التالية:
- تعريف متغيرات لا يتم استخدامها أبدًا.
- إنتاج مخرجات غير متوافقة مع ما يفترض أن تكون عليه مخرجات برنامجك.
- استخدام دوال (functions) لاتتناسب مع طبيعة المطلوب منك عمله.
- إصلاح الأخطاء بكتابة شيفرات تُصلح المخرجات الخاطئة للأكواد المعطوبة (بدلا من تصحيح الكود المعطوب نفسه).
- عمليات تحويل القيم غير الضرورية، مثل أن تحول رقم إلى نص ومن ثم تقوم بإعادته إلى رقم مرة أخرى.
علاج هذا الخلل يكمن في التعود على استخدام مصحح الأخطاء الخاص ببيئة التطوير التي تستخدمها (IDE’s own debugger)، والتعامل مع جميع المميزات التصحيحية التي يوفرها لك حتى تستطيع تدريجياً الاستغناء عنه وتتمكن بنفسك من أكتشاف الأخطاء والشفرات المكررة وكل الأجزاء الزائدة التي يمكن الاستغناء عنها من شفرتك البرمجية.
ضعف فهمك لبنية لغة البرمجة التي تعمل بها:
يوجد نماذج عديدة لأساليب البرمجة، كالبرمجة المعتمدة على الكائن أو ما يعرف بالبرمجة الشيئية (Object Oriented Programming) والتي تختلف مثلا عن البرمجة الإجرائية (procedural programming) والتي بدورها تختلف عن البرمجة الوظيفية (Functional programming). تنَقلُ المبرمج من نموذج لآخر قد يسبب له ارتباكًا، وهو أمر طبيعي في البداية لكن يجب عليه أن يطور فهمًا أفضل ويتعود مع الوقت على النموذج الجديد الذي بدأ استخدامه والكتابة به، من أعراض ضعف فهمك للبنية:
- أن تستخدم أي طريقة كتابة تخرج بها من بنية النموذج الجديد للغة وتعود للبرمجة بالطريقة التقليدية القديمة التي تعودت عليها لتكمل بقية برنامجك.
- محاولة استخدام متغير غير ثابت (non-static variable)من دالة ثابتة (static method).
- استخدام أجزاء من شفرات مبرمج آخر بطريقة القص واللصق (بدون الفهم الفعلي لما قمت بإضافته لشفرتك) للتعامل مع مخرجات ومدخلات برنامجك.
- كتابة نماذج متعددة من نفس الخوارزمية للتعامل مع أنواع مختلفة.
العلاج هنا في معرفة مكمن الخلل، فإذا كان نقص مهاراتك ناتجًا عن طريقة تعلمك الغير فعالة، فالمعلم الفعال في حالتك هذه هو المفسر نفسه(compiler)، إذ أنه لا توجد طريقة أكثر فاعلية لتعلم نموذج برمجي جديد من بدء مشروع جديد وإلزام نفسك بإستخدام كل التركيبات الجديدة لبنية اللغة بذكاء أو بدونه. تحتاج أيضًا إلى التدرب على شرح ميزات النموذج بمصطلحات مقاربة لكل ما تعرفه، ثم البناء بشكل متكرر على مفرداتك الجديدة حتى تفهم التفاصيل الدقيقة أيضًا. وهذا طبعًا لن يأتي بسهولة وبسرعة فستحتاج الى الوقت و الممارسة والمزيد من الممارسة. وأخيرًا لتعمق فهمك لبنية اللغة و أساسيات البرمجة الشيئية بإمكانك دائما قراءة مستندات التوثيق الخاصة بلغة البرمجة التي تستخدمها.
معرفة ضعيفة بخصائص المنصة التي تعمل عليها :
تتمتع اللغات وبيئات العمل الحديثة باتساع وعمق مذهلين للأوامر والخصائص والمميزات الموجودة فيها والتي يمكنك استخدامها و استغلالها لصالحك، بالطبع لا يُتوقع منك أن تُلم بها جميعاً أو أن تعرفها بسرعة فالأمر يتطلب بضع سنوات من الممارسة، لكن المبرمج الجيد سيسعى دوماً لمعرفة واستكشاف كل ما من شأنه مساعدته والتسهيل عليه ليُكيفه لخدمة برنامجه، من أعراض ضعف المعرفة ما يلي :
- إعادة تعريف دوال(functions) و أصناف أو فئات(class) متوفرة مسبقًا في بيئة العمل مثل (دوال الوقت و خوارزميات البحث والترتيب..).
- طلب المساعدة دومًا في كتابة الشيفرات البرمجية بدلاً من أن تقوم بالبحث عن طريقة لكتابتها بنفسك.
- التمسك باستخدام تقنيات قديمة بالرغم من وجود طرق حديثة تعطي نتائج أفضل.
- تعقيد الشفرة بتكرار الأوامر وزيادتها، بينما يمكن أن يُنجز المطلوب بأسطر أقل.
في هذه الحالة لا تستعجل العلاج فمثل هذه المهارة تحتاج وقتًا لبنائها وإتقانها، أعط نفسك الوقت اللازم ولا تتعجل بالاستعانة بمبرمج آخر و بالقص واللصق لحل مشكلتك. كما أنه يلزمك دوماً الرجوع إلى المرجع أو المستند الرسمي لبيئة عملك فيمكنك أن تجعل نسخة يدوية منه في متناول يدك، أو تجعل شاشة ثانية مخصصة للبحث فيه وتصفحه.
عدم الثقة في شفراتك البرمجية :
عندما يكون منطقك ضعيفًا ، سيكون لديك ارتباك ولن تثق في ما كتبته، من أعراض ذلك:
- التحقق من قيمة متغير ثنائي(Boolean) إذا ماكانت شيئاً غير الصواب أو الخطأ!.
- استدعاء نفس الدوال عدة مرات للتأكد من تنفيذها.
العلاج : لا تحمل عادات قديمة غير ضرورية من لغة ذات نظام كتابة ضعيف، و كن واثقا من منطقك أما إذا كانت هناك مشاكل في المنطق فجرب منطقًا جديدًا.
الوقوع في فخ التكرار :
الفكرة الأساسية في دوال النداء الذاتي (recursion) قد تكون مخادعة ولكنها ليست صعبة، يخشى العديد من المبرمجين استخدام هذا الأسلوب ويفرون منه فرارهم من الأسد لأنهم غالبًا ما يواجهون مشاكلاً في تخيل نتيجة عملية التكرار، بينما في واقع الأمر استخدام هذا الأسلوب يجعل عملك أكثر وضوحاً وفعالية، من أعراض وقوعك في الفخ :
- تعقيد خوارزميات التكرار للمشكلات التي يمكن حلها ببساطة بدوال النداء الذاتي مثل التنقل في شجرة نظام الملفات.
- التحقق من شرط الإيقاف الأساسي للدالة قبل التكرار وبعده.
- دوال النداء الذاتي التي تفتقد لشرط الإيقاف الأساسي.
- الارتباك الواضح حول ما الذي يجب تمريره للدالة كمعامل(parameter)، أو تمرير نفس المعامل في كل مرة دون أن يتم التعديل عليه.
العلاج هنا هو بتشغيل الشفرة البرمجية في عدة خطوات لفهم سير العمليات، والقيام بتغيير شرط الإيقاف الأساسي لرؤية المخرجات. هدفك هو أن تكون لديك ثقة و فهم كامل بمكانك وما تفعله.
ختامًا إن كنت تعاني من أحد الأعراض السابقة(أو جميعها)، فاعمل ما بوسعك لتحسين مهاراتك وصقلها والتغلب على جميع العثرات التي تقف بطريقك لتصبح بتوفيق الله مبرمجًا محترفًا.
الكاتب: نوف المنيف
التدوينة مؤشرات تدل على أنك مبرمج غير فعال يجب عليك تلافيها ظهرت أولاً على عالم التقنية.
المصدر: أخبار التقنية