البرمجة مجال لا يمكنه ان يفنى في الوقت الراهن مادمنا نتعامل مع شيئ إسمه التقنية و الحواسيب و الهواتف الذكية و الشرائح الرقمية و ما الى ذلك، بدل ذلك علينا تطوير ذواتنا في في مجال البرمجة بشكل أكبر، على المبرمج ان يتعلم حفنة من التقنيات البرمجية التي تتشاركها كل اللغات البرمجية أولا و كل الشركات التقنية في العالم كافة، و لا يمكنك ان تطلق على نفسك مبرمج محترف سنة 2020 إن كنت تجهل هذه التقنيات او لا تجيد إستخدامها.
كمطور و مبرمج، لم يعد من الصعب صناعة برمجية معينة، بل الصعب تنظيمها و تهيئتها للعمل و جعلها برمجية إحترافية يستطيع أي مبرمج آخر فهمها و التعديل عليها، و لا ننسى أدوات العمل التشاركي التي أصبحت تجتاح كل الشركات التقنية سنة 2020، لذلك نحن نوفر لك مقالا قبيل مطلع سنة 2020 بقليل حتى نوفر لك وقتا لتعلمها، فبحلول سنة 2020 عليك أيها المبرمج ان تحترف و تجيد إستخدام التقنيات البرمجية التالية.
– الـ DevOps :
كمبرمج تجاوزتَ مرحلة التعلم الأولي و صناعة برمجيات خاصة بك او لعملاء محددين، فقد حان وقت لتجعل ما تقدمه أكثر إحترافية بإتباع قواعد محددة و تقنيات معينة في صناعة البرمجيات، لعل أشهرها الـ DevOps،هي نمطية محددة لصناعة البرمجيات تعتمد عليها الشركات في الغالب من أجل مزامنة العمل للجميع، بحيث يبرمج الكل بنفس الطريقة و بنفس الأدوات و بنفس التقنيات و بنفس المسار و الترتيب أيضا. الـ DevOps يمكن الإستفادة منه على المنحيين الشخصي و العملي : ففي الشخصي سيساعدك ذلك على تجنب العبثية في مشروعك البرمجي و تنظيمه بعيدا عن الـ Spaghetti Code و نقص تنظيم المشروع، اما على المنحى العملي فسيساعدك في الإنضمام للعمل و التأقلم في أي شركة كمبرمج بسرعة.
الـ DevOps رغم ذلك ليس بتلك السهولة، فيوجد مسار خاص به يجب تعلمه مثل اللغات البرمجية، تقنيات أخرى ( سنرى بعضها في هذا المقال )، تعلم طريقة كتابة الكود بإتباع قواعد الـ Best Practice، تعلم إدارة الوقت و إدارة المشروع البرمجي عبر مدراء الحزم (Package Managers) و غيرها. قد تود الإطلاع على مقالنا هذا حول الـ DevOps.
– تعلم التعامل مع إطارات العمل الشهيرة و الأقل شهرة :
لا يمكنك بناء شيئ من الصفر، او الأحق بالقول لا يمكنك بناء شيئ إحترافي في الصفر في ظرف وجيز، لهذا الغرض ظهرت الإطارات (Frameworks) لتسهل علينا العمل تقريبا في كل المجالات البرمجية سواء الويب، الديسكتوب و سطح المكتب، الموبايل، الذكاء الإصطناعي، علوم البيانات و كل شيئ آخر. يمكنك التوجه الى منصة Github، ثم الكتابة في البحث العبارة التالية ” Awesome + Field” مع تغيير Field بالمجال الذي تريد البحث فيه عن إطارات مثلا إطارات الويب في الـ Front End لتصير عبارة البحث (Awesome Front End) لتجد مستودعات توفر لك كل المصادر و الإطارات و الفريمووركات التي تساعدك في بناء برمجيات Front End ( في هذه الحالة ) إحترافية. إستخدام إطار معين يجلب معه خواص الحماية، يجلب معه التهيئة الكاملة و التقسيم الإحترافي لمشروعك الخاص، كما يسهل عليك القيام بالأعمال البرمجية بدل برمجتها من الصفر التي قد تستغر أسابيع و أشهر بينما يمكنك إنجازها في أيام بإستخدام إطار محدد.
– تعلم التعامل مع الـ RESTful API’s و الـ Web Services :
معظم المنصات اليوم أصبحت توفر خدمات الـ API من اجل تسهيل إضافة التعامل مع المنصة في برمجيتك بسهولة و ذلك عن طريق الـ API الذي يكون في الغالب من نوع REST، فخدمات مثل الولوج بحساباتك على منصات التواصل الإجتماعي في برمجيتك او جلب معلومات حول حالة الطقس او أسعار الدولار او اي خدمات أخرى في هذا العالم سيتطلب منك بطريقة او بأخرى التعامل مع API محدد، و توجب عليك أنت كمطور ان تتعلم طريقة إستقبال (GET) و إرسال (POST) معلومات و بيانات عبر الـ REST API.
في الكفة الأخرى عليك ان تتعلم أيضا طريقة صناعة API خاص بمنصتك أنت و توفيرها لمستخدمين آخرين من أجل إستخدامها او حتى تسهيل إستخدامها في خدمات فرعية خاصة بك كتطبيق لمنصتك او إضافة لمتصفح، فأنت غير مضطر لبرمجتها من الصفر إذ يمكن الإعتماد بشكل كبير على جلب و إرسال المعلومات و التواصل بين كل النسخ من منصتك عبر الـ API. الـ Web Service لا يختلف كثيراً عن الـ API، إذ يمكننا ان نقول فقط ان الـ Web Service هو نسخة موسعة و أكثر تشعبا من الـ API بحيث تحمل معها عدة دوال او Functions و Subroutines و تتعامل على عدة منحنيات للنقل مثل الـ SOAP او Json و غيرها، لكن بشكل عام هما متشابهين في العمل.
– الـ Version Control و الـ Git :
يساعدك الـ Version Control عبر الـ Git بشيئين رئيسيين و مهمين أيضا في أي مشروع برمجي : أولا، حفظ مشروعك البرمجي بطريقة إحترافية، صحيح ان ملفات المشروع البرمجي موجودة في حاسوبك، لكن ماذا لو لم يشتغل هذا الحاسوب يوما ؟ ماذا لو اردت العمل على مشروعك في حاسوبك آخر؟ ماذا لو قمت بفعل شيئ خاطئ في الكود و لا تستطيع العودة الى آخر مرة كان المشروع شغالا بشكل جيد ؟ ماذا تفعل في هذه الحالة هل تعيد برمجة المشروع من الصفر ؟ لا بالطبع، يمكنك اللجوء الى نسختك المخزنة في احد منصات الـ Version Control مثل Github او Bitbucket ثم تحميل مشروعك البرمجي في أي حاسوب، تحديث او تخفيض تحديث مشروعك البرمجي إن إقتضت الحاجة و الحفاظ على مشروعك البرمجي بشكل دائم. اما ثانيا، فهو مشاركة المشروع مع أشخاص آخرين، سيكون من الصعب على مبرمج واحد و وحيد ان يقوم ببرمجة مشروع برمجي كبير بمفرده، لا بد له من إدراج مبرمجين آخرين لمساعدته في ذلك، لكن كيف يمكن مشاركة المشروع و مزامنته بين كل المبرمجين مع إستقبال تحديثات كل مبرمج بطريقة متزامنة ؟ الحل يكمن في الـ Git، يمكنك إنشاء فروع لمشروعك و إعطاء فرع لكل مطور ثم تجميع المشروع النهائي في الـ Master. يمكنك أيضا من خلال مستودعات إستقبا المشاريع البرمجية مشاركة أي فكرة او مشروع برمجي مع أي شخص آخر في هذا العالم ليستفيد منه.
– تعلم الجافاسكربت (Javascript) :
صدقني سيكون ميزة كبيرة إن تعلمت الجافاسكربت و إطاراتها، قبل ان نستمر في الشرح نود الإشارة هنا بشكل أخص لإطارات و الفريمووركات الجافاسكربت بشكل أدق.الجافاسكربت و إطاراتها تلمس الآن تقريبا كل مجالات التقنية من الويب، ديسكتوب، موبايل، ذكاء إصطناعي، علوم بيانات و باقي التقنيات الأخرى، و لن يمر عليك مشروع برمجي من الألف إلى الياء دون اللجوء لبعض الأسطر البرمجية الجافاسكريبتاوية، و سيكون بمثابة خطوة إلى الأمام ان تقوم بالإلمام بأشهر إطارات الجافاسكربت و تقنياتها و ان تُبقي نفسك دائما على إطلاع بجديد اللغة و مستجدات إطارات العمل الخاصة بها. هنا نطرح عليك مقالنا لأفضل 20 مصدر على الإطلاق لتعلم الجافاسكربت .
– تعلم قواعد الـ UI/UX :
نوجه هذه الفقرة لمطوري الـ Front End بشكل خاص و لباقي المبرمجين حرية إختيار تعلم هذه التقنية أم لا، فقط تذكر أن تعلمها و إضافتها الى قائمة التقنيات التي تجيدها يعتبر إضافة ضخمة جدا لأسلوبك في البرمجة و رؤيتك للمشاريع بين يديك. الهيكلة العشوائية للتصميم او إتخاذ تصميم بناءً على ذوقك الخاص أصبح من الماضي، عليك الآن ان تدرس قواعد الـ UI و الـ UX حتى تستطيع بناء تصميم مقبول من طرف عامة المستخدمين، خذ تطبيق فيسبوك كمثال، كتصميم خارجي للتطبيق لن تجد شخصا يخالفك الرأي ان إستخدامه سهل و بسيط و يستطيع اي مستخدم في هذا العالم التعامل معه من أول تفاعل مع التطبيق، ليس لأن التطبيق إعتمد ذوق مارك زوكربيرغ في التطبيق، بل لأن مطوري هذا الأخير إعتمدو على تقنيات الـ UI/UX في بنائه. برمجيتك القادمة يجب ان تضم قبلا تصميم UI/UX قبل ان يطأ إصبعك أول كود برمجي، لمعرفة الألوان الأصح للتعامل، معرفة مكان تمركز الأيقونات، كيفية صناعة الـ Cards، كيف تضمن للمستخدم إستخدام زر على زر آخر، كيفية تسهيل الولوج و الخروج و التسجيل و باقي المكونات الأخرى لأي تطبيق او موقع او برمجية بشكل عام. تعرف أكثر على قواعد الـ UX من خلال مقالنا التالي ، و هنا دورات و كورسات لتعلم الـ UI/UX .
– الـ Desgin Pattern :
العشوائية لم تعد جيدة، فهي تسبب الفوضى و الفوضى تؤدي الى كود لا يشتغل بكفاءة و عدم إمكانية تحديث الكود البرمجي بعد فترة من الزمن و توقف برمجيتك في نسخة محددة قديمة، تعلم الـ Design Patterns يسهل عليك عملية هيكلة المشروع البرمجي و إمكانية الإشتغال على كل جزء من الكود بإتباع قواعد محددة، و الأفضل إمكانية تحسين المشروع و تحديث أي جزء منه بكل سهولة دون التأثير على جزء آخر. إن أحد أكثر التحديات البرمجية التي يصادفها أي مطور أثناء عمله على كود معين هو محاولته تشغيل هذا الجانب من الكود دون التأثير على الجانب الآخر بأي شكل من الأشكال، و حين تعطل جزء معين من البرمجية فأنت تتوجه مباشرة الى العنصر المسؤول عنها و تقوم بتحديثه دون الحاجة إطلاقا للمس باقي الجوانب، يمكننا ان نختصر الـ Design Patterns بهذا المفهوم و هذا الهدف. تختلف أنواع الـ Design Patterns حسب البرمجية، منها مثل الـ Factory Method او Singleton و غيرها.
– الـ OOP :
حتى بعد سنوات من النضال، لازال نظام الـ OOP مكتسحا للمجال البرمجي و مستخدم بكثرة، يعتمد نظام الـ OOP او Object-Oriented Programming على هيكلة محددة للكائن البرمجي عن طريق مجموعة من التقنيات أبرزها 4 و هي : الـ Inheritance, Abstraction, Polymorphisme و الـ Encapsulation التي تسمح لك كل واحدة من هذه التقنيات في توطيد العلاقة بين كل كائن و كائن آخر و التلاعب به طيلة المشروع البرمجي. يوجد تقنيات في الـ OOP كذلك قد تود تعلمها مثل مبدأ الـ S.O.L.I.D مثلا، الذي يساعدك في تحسين طريقة إستخدام البرمجة كائينية التوجه لمستوى آخر. كل نظام برمجي تقريبا يتكون من كائنات محددة ( جداول في قواعد البيانات ذات Colmuns مثلا ) يتم إستخدامه طيلة المشروع، و ضعف هيكلته قد يؤدي الى تعريضه لحماية ضعيفة او إستخدامه بطريقة قد تؤدي الى كود برمجي غير مرتب إطلاقا و مكرر و طويل. إن اردت البدئ في الـ OOP، قد يفيدك مقالنا الآتي .
– التعامل مع قواعد البيانات من نوع RDBMS و الـ NoSQL :
شيئ ستتعامل معه دائما و أبدا و حتى بعد سنين و سنين من ظهورها لازالت قائمة بذاتها، كل معلومة او جزء من البيانات لا بد له ان يخزن في قواعد بيانات سواء RDBMS ( علائقية تقوم على جداول و علاقات بينها ) او NoSQL ( تشجرية تقوم على مبدأ الأب و الإبن ) يمكنك التعرف على الفرق بين هذين النمطين من هنا. التعامل مع قواعد البيانات يتطلب بعض الحذر و أخذ إحتياطات الحماية الى جانب أخذ كل التدابير من أجل الحصول على البيانات من جداول قواعد البيانات حسب الطلب، و لا ننسى الحديث أولا عن طرق صناعة و هيكلة قواعد البيانات.
سواء كانت علائقية او NoSQL فستشيئ الأقدار ان تشتغل بإحداها يوما في مشروع برمجي محدد، و جهلك بطرق التعامل مع قواعد البيانات في سنة 2020 لا يحتسب ميزة إيجابية إطلاقا، بل نعتقد انه لا يجب ان تطلق على نفسك مبرمج الـ 2020 إن كنت تجهل التعامل مع قواعد البيانات. إن لخبطتك المفاهيم قليلا هنا، فتعرف على الفرق بين الـ RDBMS و الـ NoSQL .
– الشبكات و الـ Networking :
ألن يكون من الرائع صناعة برمجية تتصل عبر الإنترنت بمرور الإتصال ببعض الـ Proxy او الـ VPN و تشفير الإتصال لمنع هجمات الـ MITM و إستخدام بروتوكولات مختلفة من أجل الحصول على سرعة إتصال أفضل ؟ لا اعرف ان كان هذا الأمر ممكنا، لكنه يبدو رائعا ! الشبكات تبتعد قليلا عن البرمجة، لكنها ضرورية لكل مبرمج خصوصا أثناء توصيل برمجيته عبر الإنترنت او تمريرها عبر مجموعة من الحواسيب و الخوادم، سيكون من الرائع جدا ان تضمن الخصوصية و الحماية لكل مستخدم يستخدم برمجيتك في النهاية يا صديقي. تعلم الشبكات و أساسياتها ( مثل أساسيات الـ CCNA ) سيضيف لمسة تقنية إحترافية على إتصال برمجيتك عبر الإنترنت و تمرير البيانات من خلالها.