لا شك ان اتخاذ مسار مهني بالنسبة لك أمر ضروري، فلا يمكنك تعلم جميع التقنيات الموجودة في العالم الرقمي، و سيتوجب عليك الإختصاص في مجال محدد في سبيل تعلم التقنيات المتخصصة فقط في ذلك المجال. يوجد الكثير من المجالات البرمجية التي يمكنك أن تتخصص فيها كأن تصبح مطور Front End او مطور تطبيقات موبايل، أو مبرمج تطبيقات سطح المكتب، في هذا المقال سنرسم لك المسار الصحيح لتصبح مطور Back End محترف، و سنقوم بتعريف أبرز التقنيات المستخدمة في هذا المسار. فتابع معنا.
من هو مطور Back End ؟
مطور الـ Back End هو المطور الذي يهتم بالمعلومات و البيانات الخاصة بالموقع، و يعني ذلك كل المعلومات المسجلة في قواعد البيانات أو المعلومات التي سيتم تسجيلها في قواعد البيانات، إلى جانب استعراضها، تخزينها، فحصها، تشفيرها، تعديلها و الكثير ...، لا يهتم مطور الـ Back End إطلاقا بواجهة الموقع أو المستخدم للموقع، كل ما يهمه هو تخزين البيانات و استعراضها و القيام بالعمليات اللازمة و الدقيقة من أجل الحفاظ على بيانات الموقع مأهولة و صحيحة و بعيدة عن أي تسريبات.
مطور الـ Back End ضروري في أي مشروع برمجي، فهو الشخص الذي يجعل أي موقع ديناميكي و حركي قادر على إرسال البيانات و استقبالها و تخزينها و فلترتها، و بدونه فالموقع يبقى موقع تابث لا يستعرض سوى ستايل أو ديزاين محدد و لا يتفاعل مع المستخدم الأخير.
فهم الخوارزميات و هيكلة البيانات (Data Structures)
أول خطوة لك لتصبح مطور Back End هو إيجاد التعامل مع الخوارزميات و هياكل البيانات، لن تحتاجها حتما بشكل كبير في مجال الـ Front End، لكن في الـ Back End فهي حليفتك لتنظيم و إدارة البيانات و إيجاد أفضل الطرق من أجل تقليص مساحة التخزين الخاصة بالبيانات المخزنة و كذا إيجاد أفضل الطرق الخاصة بالبحث و التنقيب و الفلترة للمعلومات المخزنة.
لا ننسى أيضا، أن هذين التقنيتين ستساعدانك كثيرا أيضا في تشفير البيانات و الحفاظ على الأمان الخاص بالمعلومات أثناء تمريرها بين المواقع و قواعد البيانات. أما الأفضل، تساعدك الخوارزميات و هيكلة البيانات في إيجاد أفضل الحلول للمشاكل التي ستواجهك في عمليات الـ Back End ككل.
و هذا ما يجعل أول الأشياء التي يجب عليك أولا تعلمها هي هذين التقنيتين، لدينا من أجلك مقال مسبق حول أفضل الكورسات و الدورات لتعلم الخوارزميات لا تنسى الإطلاع عليه، كما ندعوك لإستكشاف أبرز الخوارزميات التي يجب على كل مبرمج معرفتها أيضا.
احترف التعامل مع تقنيات تحليل المشاريع و قواعد البيانات (UML مثلا )
عندما توكل إليك مهمة تطوير الهيكلة الخلفية لموقع محدد، أي تحديد قواعد البيانات التي ستتعامل معها، تحديد عدد الـ Tables و العلاقات بينها، فأنت بحاجة إلى تحويل تلك الأفكار إلى مخططات من أجل تسهيل تطويرها برمجيا، هنا ستحتاج إلى بعض التقنيات الخاصة بتحليل المشاريع و بالتحديد تحليل جزء الـ Back End الخاص بالمشروع المتعلق بقواعد البيانات و خصائصها.
من بين أشهر التقنيات في العالم نجد تقنية الـ UML، او Unified Modeling Language، و هي تقنية تساعدك في تحويل الأفكار البسيطة إلى قواعد بيانات و علاقات بينها، مثل أن يخبرك شخص أنه يريد موقع خاص بالأفلام ( و هذه هي الفكرة ) فتقوم بتحويلها أنت لقواعد بيانات عبارة عن جداول ( مثل جدول للأفلام، جدول للمستخدم، جدول للتقييمات ...) .
الـ UML شاسع، و يعتمد على Diagrams كثيرة، كل Diagram مخصص في تحليل شيئ محدد، أنت كمطور Back End ستحتاج بشكل أساسي إلى Class Diagram الذي تقوم من خلاله بتحديد الجداول الخاصة بقاعدة البيانات.
من التقنيات الاخرى الشبيهة أيضا نجد Merise، و هي تقنية فرنكوفونية متخصصة في تحليل قواعد البيانات بشكل مخصص و العلاقات بين الجداول، ستحتاجها كذلك.
فهم التعامل مع الـ SQL
الـ SQL او Structred Query Language و هي لغة استعلام مخصصة للتعامل مع قواعد البيانات، و هي التي تتيح لك حقا التلاعب بكل شيئ يتعلق بقواعد البيانات، من إنشاء قواعد البيانات، إنشاء الجداول، إنشاء الحقول، إجراء العمليات الإعتيادية عليها ( الإضافة، التعديل، البحث، الحذف .. ) و تخصيص العلاقات بين الجداول أيضا. و تعتبر الـ SQL لغة شاملة لقواعد البيانات، أي أن تعلمها إجباري بل و احترافها إجباري من أجل تسهيل التعامل مع قواعد البيانات و تخصيص استعلامات محمية و احترافية، فحتى عند استخدامك للغات برمجية أخرى، ستحتاج إلى الـ SQL من أجل التواصل مع قواعد البيانات، و أي استعلام لا يتصف بالحماية و الأمان، يعني أن معلومات الموقع و قواعد بياناته معرضة للإختراق ( كما نعلم جميعا يوجد ثغرة تدعى SQL Injection ناتجة عن خطأ في الـ Query ).
للـ SQL مستويات عديدة، في البداية قد يكون بسيطا، و يزداد صعوبة حين تلج للـ Transact SQL، و يشتد أكثر و أكثر حين تدرك أنه يمكنك استخدام الـ SQL في مجال علوم البيانات و الـ Big Data، مما يجعل ساحة تعلمه واسعة جدا.
كمطور Back End، أنت بحاجة لتعلم الـ SQL في حدود نطاق العمل، أي ما تحتاج إليه فقط من أجل عملك، و لست بحاجة لتعلم تقنيات الـ SQL الخاصة بعلوم البيانات مثلا، فهذا صنف آخر و مجال آخر، لكن سنتفق جميعا أن الـ SQL إجبارية.
تعلم تقنيات ربط قواعد البيانات بشكل تقليدي مع مختلف المشاريع البرمجية
حين نتحدث عن المشاريع البرمجية التي تتطلب قواعد بيانات، فإننا نحصر الإختيارات في ثلاث تقنيات فقط : مواقع الويب، تطبيقات الموبايل، ثم برمجيات سطح المكتب. أول مهمة لك كمطور Back End بعد تعلمك صناعة قواعد البيانات و هيكلتها هو الإنتقال إلى تعلم التقنيات المتخصصة في ربط قواعد البيانات مع مختلف المشاريع البرمجية.
- بالنسبة لمطور مواقع الويب : تعلم تقنيات مثل الـ Php قد يكون ضروريا، بحيث تساعدك الـ Php على التواصل مع السيرفر و الخادم، و ربط قواعد البيانات بالمشاريع البرمجية، و إنشاء Queries بناءً على المتطلبات التي تريد ( بإستخدام الـ PDO او Mysqli )، كما أن الـ Php تعتبر لغة برمجة تقليدية للتواصل مع قواعد البيانات و يجب على أي مطور Back End إيجاد التعامل معها.
- بالنسبة لمطور تطبيقات سطح المكتب : سيختلف هنا الأمر قليلا، حسب نوع قواعد البيانات التي تستخدم، و اللغة البرمجية التي تستخدمها أيضا، لنقل مثلا أنك تتعامل مع برمجية بالـ C#، هنا سيتوجب عليك تعلم تقنيات الـ Ado.net التي تسمح لك بربط قواعد البيانات مع المشروع، ثم إجراء Queries من خلالها.
- بالنسبة لمطور تطبيقات الموبايل : يختلف الأمر هنا أيضا حسب المطلوب، لكن بشكل عام الـ Php ستكون وسيلة وسيطة بينك و بين التطبيق في حالة استخدام قواعد بيانات مستضافة على الخادم، أما في حالة استخدام تقنيات أخرى مثل Firebase فالأمر مختلف.
إطلع على مختلف أنواع قواعد البيانات DBMS
كما يجب عليك إيجاد التعامل مع مختلف منصات إدارة قواعد البيانات، إذ نجد أشهرها مثلا الـ MySQL، لكن يوجد منصات إدارة قواعد بيانات أخرى يجب عليك إيجاد التعامل معها مثل MongoDB، PostgreSQL، Firebase,MariaDB, SQL Server و غيرها، لدينا مقال آخر أيضا يشرح لك كل هذه المنصات و الفروقات بينها يمكنك الإطلاع عليه من هنا .
تختلف المنصة التي ستستخدمها حسب المشروع البرمجي الذي أنت بصدد التعامل معه، فبإفتراض أنك ستشتغل على مشروع ضخم جدا و قابل للتطوير، فعليك الإبتعاد في هذه الحالة عن الـ RDBMS و التعامل مع الـ NoSQL عبر منصات مثل MongoDB، لكن في حالة المشاريع المصغرة و التابثة من حيث تخزين البيانات، فيستستحن الإعتماد على الـ RDBMS، أما المنصة فتختلف فيمكنك مثلا التعامل مع الـ SQL Server إن كان الخادم موجود فيزيائيا في مكان عملك، او الـ MySQL في حالة كنت ستحجز استضافة أو سيرفر عبر الإنترنت، و هكذا دواليك.
فهم أساسيات الـ Desgin Pattern المتعلقة بالـ Back End
بعد اكتسابك للمعارف الأساسية في مجال الـ Back End، و تحقيق إمكانية صناعة مواقع أو برمجيات تتصل بقواعد البيانات و إجراء الإستعلامات، قد تعتقد أنك وصلت للحد الأقوى في مجال الـ Back End، لكن هذا الأخير شرس و يتطلب الكثير من الموارد و التقنيات من أجل احترافه. بعد إيجادك للتقنيات الأساسية و المفاهيم الأولية حوله، فقد حان الوقت للإنتقال إلى صنف آخر، الـ Design Pattern أو أنماط التصميم.
يوجد الكثير من أنواع أنماط التصميم، لكننا نقترح عليك بشكل أساسي الإطلاع فقط على التقنيات المستخدمة بكثرة في مجال الـ Bqck End، و بالتحديد أنماط التصميم المستخدمة في إطارات الـ Back End الشاملة، و نخص بالذكر :
- نمط و معمارية MVC : اختصاراً لعبارة Model-View-Controller، و هي معمارية تقوم بفصل الـ Back End الذي يتخصص في الـ Controller و الـ Model على الـ Front End الذي يتخصص في الـ View، بكل بساطة، تقوم بتقسيم مشروعك بشكل تستطيع كمطور Back End تنظيم كل شيئ باحترافية، من انشاء قواعد البيانات و الجداول في الـ Model إلى تشغيل و تطبيق الإستعلامات عبر الـ Controller.
- نمط و معمارية MVP : اختصاراً لعبارة Model-View-Presenter، و هو لا يختلف كثيراً عن الـ MVC، بل في الحقيقة هو تخصيص ثانوي للـ MVC يتيح لمطوري الـ Front End احترافية أكثر أثناء العمل.
- معمارية MVVM : اختصاراً لـ Model-view-view-model ، هي الأخرى شبيهة بنفس مبدئ السابقتين، إذ الهدف منها بالأساس فصل الواجهات عن الـ BackEnd من أجل سهولة تطوير هذه الأخيرة و ضمان الأمان و الحماية.
إختيار أفضل إطار ملائم لك
- إطارات الـ Php : إن كنت تجيد التعامل مع الـ Php كما طرحنا سابقا، فيمكنك الإعتماد على مجموعة ضخمة من الإطارات في الـ Php أبرزها : Laravel, Zend, Symfony, Magento, Codeigniter, Yii, Cake Php، لأنها كثيرة، سنخصص لها فقرة لوحدها في هذا المقال مباشرة بعد هذه الفقرة.
- إطار Django / Flask : إن كنت تفضل استخدام لغة البرمجة بايثون، فتوفر لك إطارات لصناعة مواقع الويب بإحترافية أبرزها Django و Flask، كما أن الـ Back End الخاص بها سهل التعامل معه.
- إطار Ruby on Rails : إطار آخر يعتمد على لغة البرمجة Ruby و يأتي بنظام سهل التعامل بشكل كبير، مستخدم بشكل كبير أيضا في عدة مواقع عالمية، كما يأتي بنظام حماية متفوق.
- إطار ASP.net : إن كنت تفضل مايكروسوفت و خدماتها القوية، فيمكنك الإعتماد على إطار ASP.net أيضا، إذ يوفر لك هيكلة جيدة للمشروع و حماية لكل البيانات و المراسلات.
نظرة أقرب عن إطارات الـ Php
- إطار العمل Laravel : يعتبر الأشهر و الأكثر استخداما من بين كل إطارات الـ Php و باقي الإطارات الأخرى عامة، يعود ذلك بشكل أساسي لكون إطاراً ليناً صالح لأي موقع ويب و لأي استخدام، فمهما كان نوع المشروع يمكن لـ Laravel أن يكون الحل المثالي له، كما أنه دائم التحديث، و يمكن ربطه بالعديد من التقنيات الأخرى بسهولة.
- إطار العمل Zend : إطار مبني على الـ Php أيضا، يتمتع الـ Zend بحزمة كبيرة من الـ Packages، مما يجعل استخدامها في المشاريع الصغيرة أمراً مستبعدا، نقترح عليك تعلم و استخدام Zend للمشاريع الكبرى بشكل أكبر.
- إطار العمل Symfony : قد يكون أضخم بقليل من الـ Zend أيضا، لا ينصح به إن كنت تهدف لإنشاء المشاريع الصغيرة أو المتوسطة، فهو نسبيا ثقيل من حيث الـ Packages و يتطلب موارد كثيرة، لذلك استخدمه فقط للمشاريع الكبرى.
- إطار العمل Codeigniter : نرشح لك هذا الإطار مباشرة بعد Laravel، متوسط من حيث العمل و سهل من حيث الكود البرمجي و سلاسته، و يمكن استخدامه للمشاريع الصغرة و المتوسطة و أحيانا الكبيرة، يأتي بليونة كبيرة و يستطيع أي شخص تعلمه و استخدامه في وقت وجيز.
- إطار العمل Magento : إطار مخصص بشكل كبير لمشاريع مواقع الـ eCommerce و المواقع التجارية، لا يتطلب الكثير من الخبرة البرمجية، لكنه يأتي بخصائص شاسعة تتطلب منك الإطلاع على الإطار بشكل مكثف قبل استخدامه.
thank you so much, I was in need of this article so badly
لو سمحت عايز اصمم موقع