عزيزي المبرمج ... توقف عن القيام بهذه الأخطاء الغبية !

عزيزي المبرمج ... توقف عن القيام بهذه الأخطاء الغبية !


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

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

عزيزي المبرمج ... توقف عن القيام بهذه الأخطاء الغبية !



- الـ HTML ليست لغة برمجة : 



الـ HTML و هي إختصار لـ HyperText Markup Language، و هي لغة هيكلة و تنسيق للصفحة، في الوقت الراهن و في إستخدامه الأصلي، الـ HTML ليست لغة برمجة، لكن يمكنها ان تصير كذلك إذا ما تم إدراج إطارات او Templates معينة، مثل التعامل مع الـ Directives في الـ Angular او Vue او React، او بإستخدام Templates الخاصة بالـ Nodejs مثل Pug او Jade .
مهما اختلف الكل عن إمكانيات الـ HTML و قدراتها، فإنها لغة أساسية في كل مشروع برمجي لا محالة، و ما يهمنا نحن هو إستخداماتها، لا إن كانت ترتقي لتُصنف كلغة برمجة أم لا.
لذلك، المرة القادمة حين يذكر شخص ما لغة الـ HTML لا داعي لتسارع في ذكر انها ليست لغة برمجة، فهو يعلم ذلك، انت تعلم ذلك، انا اعلم ذلك و العالم يعلم ذلك، فتوقف عن تذكيرنا بالأمر رجاءً !


- الـ Java أفضل من الـ Php، و الـ C++ أفضل من الـ CSS : 


من الأخطاء الغبية التي يمارسها بعض المبرمجين أيضا، هو مقارنة ما لا يقارن، إذ يقارن لغة مختصة في مجال معين، مع لغة مختصة في مجال آخر تماما، فتراه يخبر الناس في مجموعات البرمجة ساعيا المساعدة : " يا ناس، هل أتعلم الجافا ام اتعلم الـ HTML " ؟
إن المقارنة تأتي من نفس المجال او من نفس السياق، إن كنت مطور تطبيقات أندرويد، فيمكنك مقارنة بين كل من الجافا و كوتلين على سبيل المثال من أجل معرفة الأفضل و الأنسب لك حاليا و مستقبلا، إن كنت مطور برمجيات Desktop فيمكنك مقارنة الجافا مع C# مثلا من أجل معرفة الأرقى لتحرير مشروعك البرمجي، إن كنت مبرمج ويب يمكنك المقارنة بين إستخدام Angular او Vue، او إستخدام Laravel او Rails .
لكن أترجاك، لا تقارن لغتين ليستا من نفس المجال، فهذا خطأ غبي عليك تفاديه، لكل لغة برمجة إختصاص، و لكل لغة برمجة ساحة لعب تحتكرها، فحاول ان تلعب انت ايضا في نفس ساحة اللعب .
نذكرك يا صديقي أيضا، ان اللغات البرمجية كلها جيدة، و يمكنك إستخدام ما لذ لك و طاب، و لو كانت لغة أفضل من لغة أخرى من كل النواحي لشاهد ان العالم بأكمله يبرمج بلغة برمجة واحدة، لا 200 لغة برمجة.


- ان تنقر على Run/Compile أزيد من مرة دون تغيير أي شيئ ! 


يقول آلبرت اينشطاين ان الغباء هو ان تفعل نفس الشيئ مرتين و تتوقع نتائج مختلفة، المبرمج يقوم بهذا الفعل يوميا، يقوم بكتابة سطر برمجي ثم ينقر على Compile ثم يظهر خطأ في الكود البرمجي، يضع يده على ذقنه و كأنه يفكر متابعا تلك الأسطر بعينيه، و يقول : " كل شيئ عادي لنجرب مجددا " ثم ينقر على Compile مجددا.
ما الذي سيتغير؟ هل ملاحظتك للكود ستجعله الآن يخشاك و يشتغل؟ انت لم تلمس الكود إطلاقا فكيف تتوقع ان يشتغل في المرة الثانية ؟ لا بل و نعلم ذلك جيدا، بل و أنا - كاتب هذه الأسطر - أقوم بنفس الأمر دائما، لماذا؟ لا ندري، نحن نعلم انه لن يشتغل لكن يجب ان نتأكد مرتين قبل ان نقوم بتغييره !


- ان تنسخ الجواب كاملا من Stackoverflow : 


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

- الا تقرأ الـ Documentation : 

الإقدام على البرمجة دون الإطلاع على الـ Documentation أشبه بالإقدام على قيادة سيارة دون معرفة طريقة قيادتها فقط لأنك ترى الآخرين يقدونها ... بالطبع آخرتكم إصطدام !
الهدف من الـ Documentation او التوثيق هو توفير كل المعلومات حول لغة او تقنية برمجة معينة، من شرح للنسخ الخاصة بها، طريقة الإستخدام و طريقة التنصيب، كيف تبدأ مشروعك الأولي بها و شرح كل الأكواد التي قد تستعملها في تلك اللغة، يعتبر الـ Documentation جيد كذلك في اللغات التي تتطلب التعامل مع سطر اوامر بشكل كبير ( مثل Laravel ) إذ لست مجبرا على تذكر أي كود برمجي، يكفي فتح الـ Documentation و الإستعانة به.
لحسن الحظ، حتى و إن لم تقرأ التوثيق، فبات الآن مجموعة من المبرمجين على اليوتيوب يقومون بشرح ذلك التوثيق بطريقتهم، او كورسات تعلمك تلك اللغة، فقط تذكر انه لا يمكنك البرمجة إن لم تستعن بتوثيق او كورس او دورة مخصصة في تلك اللغة.

- الا تضع تعليقا على الكود البرمجي : 

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

- الا تستخدم الـ Version Control : 

دعني أشرح لك الأمر ببساطة : لنفترض انك تشتغل على برمجية معينة وصلت فيها لمرحلة جيدة، قمت بتخزينها ثم بدأت بتطوير جزء ثاني، فتبعثر الكود البرمجي و لا الجزء الأول و لا الثاني يشتغل الآن .. ماذا تفعل ؟ هل ستقوم بالضغط على Ctrl + Z الى حين الرجوع للوضعية الأولى؟ غير ممكن بالطبع.

الحل يمكن في إستخدام Version Control مثل منصة Git و رفع الكود البرمجي الخاص بك في منصات مثل Github / Gitlab / Bitbucket ثم التحكم فيها عن طريق الـ commit، كل ما عليك فعله في حالة تلخبط كل شيئ هو العودة الى الـ Commit او النقطة التي كان كل شيئ فيها شغالا، لكن تذكر انه في كل مرة تقوم بإضافة شيئ جديد و يشتغل بشكل جيد ان تقوم برفع الكود مجددا، لا تقلق يتم الرفع عبر أمر بسيط : git push .
أيضا، نحذرك من الـ Margin Conflicts، خذ دورة في الـ Git لتتقنه قبل ان تبدأ أي مشروع برمجي.

و ختاما 

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

شاركه على :