نصائح \ تصحيح معتقدات خاطئة \ أمنيات للمبرمجين الجدد

المحتوى الأصلي من هذه التغريدة, شكر كثير لإحسان للمساعدة القيّمة في إعداد المحتوى.

المعتقدات الخاطئة

أغلب وقتك تكتب كود

أنا دائما أقول ان المبرمج يقرأ أكثر مما يكتب، بتقرأ كود زملائك و بترجع في ال commit history عشان تفهم الكود (نية الكاتب)، عشان تفهم ايش سبب مشكلة معينة, او عشان تعرف كيف تضيف عليه.

نبدأ بكتابة الكود مباشرةً

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

المبرمج انطوائي أو يعمل وحده

من أكثر المعتقدات الخاطئة شيوعًا. الصحيح إن المبرمج يحتاج مهارات تواصل كتابية و منطوقة قوية، لإيصال أفكاره لبقية المبرمجين والعمل معهم (pair-programming)، و لكتابة توثيق و ملاحظات واضحة على الكود، و لطرح الأسئلة بشكل سليم على فريق المشروع/المنتج.

لغة برمجة س أفضل من ص

هذا أسلوب تفكير غير جيد للمبرمج، عادي يكون عندك لغات مفضلة، لكن لا تقفّل عقلك عن باقي اللغات، اللغات هي فقط أدوات في عُدّة ادواتك. لازم تعرف مضبوط نوع المشاكل اللي لغة س أو ص مصممة لحلها.

تقدر تستخدم أي لغة برمجة

هذا ليس معتقد خاطئ, لكن البعض يستخدم لغة مش مخصصة للنطاق اللي يبرمج فيه و ياخذ وقت كثير و مجهود كبير (عادي اذا يريحك). ممكن ابرمج حاجات data science بلغة Crystal لكن لأن مالها مكتبات قوية في هذا المجال, أسهل لي استخدم Python او R عشان اوفّر وقتي.

التعقيد

البعض يعتقد إن الكود المعقد او الكثير شيء جيد، لكن الأهم في البرمجة هو سهولة قراءة و فهم الكود و بالتالي سهولة قابلية التعديل عليه.

ركز على اختصار وقت و مجهود فهم الكود عشان تفيد زملاؤك اللي بيقروا الكود بعد كم شهر او سنة. البساطة بتزيد إنتاجيتك انت و كل من يعمل معك.

المبرمج لازم يحفظ كثير

المبرمج لازم يكون عنده فهم قوي جدا للأساسيات, ما يحتاج يحفظ قد كدا. دائما بيكون معه مرجع (كتاب, توثيق, مقالة, محرك بحث, الخ) و أدوات في محرر النصوص تساعده يوصل للشيء اللي يحتاجه, الإعتماد على الحفظ قليل.

حاجات انصح بتعلمها لدخول سوق العمل للمبرمجين و بعض النصائح الاخرى

اللغة الانجليزية

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

كيفية استخدام محركات البحث

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

أول ما نزل فلم Django Unchained, ساروا الكثير من مبرمجين Django يتعبوا بسبب طغيان نتائج بحث الفلم على إطار العمل, كنت أبحث بهذه الطريقة عشان احصل على نتائج خاصة بإطار العمل django -unchained ~programming

Source Control

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

فهم كيف الكود يتفاعل مع مكونات الأجهزة

كيف الكود يتفاعل مع الذاكرة و المعالج, كيف تشغل الكود حقك على اكثر من نواة (core) في المعالج, كيف تحدد متى تزيد أو تقلل استخدام أي واحد من المكونات هذي. كيف تلاقي و تحل مشاكل اداء في مكون معين.

فهم في مجالك الدقيق

اذا انت frontend developer لازم تسعى انك تفهم كيف ال web browser يشغل كودك و كامل امكانياته و حدوده. اذا انت mobile developer لازم تفهم كيف تكتب كود يحافظ على البطارية وما يعلّق الجوال. فكّر في مستخدمينك و انت تبرمج.

تعلّم مهارات حل المشاكل

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

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

حاجات أتمنى المبرمجين الجدد يتعلموها\يعملوها

المشاركة

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

إختبار الكود

اختبار الكود عن طريق كود. شيء ضروري انك تقدر تعرف اتوماتيكياً اذا تغيير على الكود سار يطلّع نتائج غير مرغوبة و انه عندك طريقة سهلة تختبره مع مدخلات مرغوبة و غير مرغوبة.

المراقبة

لازم يكون عندكم ادوات تراقب ايش بيحصل مع تطبيقاتكم (سواء هي لعبة, ويب, او جوال). لازم تعرفوا ايش بيسير مع المستخدمين بدون ما يحتاجوا يكلموكم. أمثلة لبعض الأدوات (للمراقبة من ناحية تقنية):

قراءة الكتب

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