مسار المواقع وأنظمة الويب
أولاً أحب أن أقول لك أنك ستجد في المقالة لغات برمجة وتقنيات كثيرة ومسارات متفرعة ولكن هذا لا يعني انه يجب عليك أن تقوم بتعلمها جميعها وبإذن الله سيتضح لك في المقالة الحالية والسابقة والقادمة كيف تختار التقنيات المناسبة لك.
سيتم التعمق في كل المسارات بطريقة عمل واستخدام كل جزء بشكل أكثر في هذه المقالة وبعدها.
أنواع الويب Web Types
أي صفحة في المتصفح تسمى Web Page صفحة ويب وهذه الصفحة تتبع أحد أربعة أنواع من أنواع تصنيفات المواقع الأساسية، فإما يكون Static Website موقع إلكتروني ثابت أو Dynamic Website موقع إلكتروني تفاعلي أو Web Application تطبيق ويب أو Web API واجهة تطبيقات برمجية.
Static Website موقع إلكتروني ثابت يكون مجموعة صفحات بمحتوى ثابت ويمكن أن يكون مجموعة صفحات تتصفحها بدون نظام يخدم إدارة هذه الصفحات أو وجود حتى عضويات.
Dynamic Website موقع إلكتروني تفاعلي عبارة عن موقع أكثر تفاعل من المواقع الثابتة حيث يمكن وجود لوحة تحكم وعضويات وتفاعل العضو مع قاعدة البيانات الموجودة في السيرفر وهكذا وتسمى كذلك بأنظمة الويب Web System وهناك أنواع متعددة من أنظمة الويب ومنها نظام إدارة محتوى Content Management System ويختصر بـ CMS ونظام متجر إلكتروني eCommerce System ونظام تخطيط موارد المؤسسة Enterprise resource planning ويختصر بـ ERP ونظام إدارة علاقات العملاء Customer Relationship Management ويختصر بـ CRM والمزيد من الأنظمة.
كما هو مهم التركيز بتحديد مسار كذلك لنظام محدد ويمكن تنفيذ النظام اما بتطوير نظام جديد من قبل فريقك أو باستخدام أحد أشهر الأنظمة التي طورتها شركات عالمية مثلاً في CMS نظام إدارة المحتوى أشهر الأنظمة العالمية Wordpress و Drupal و Sharepoint أو في أنظمة المتاجر أشهرها OpenCart و Magento و WooCommerce أو أحد أنظمة ERP وأشهرها Oracle ERP أو SAP ERP أو Odoo ERP، وبعض أنظمة الويب المطورة إما تكون مفتوح المصدر Open Source مما يعني يمكن التطوير عليه بشكل كامل، وبعض الأنظمة غير مفتوحة المصدر ولا يمكن التعديل عليها ولكن يمكن التطوير عليها حسب ما يتيح مطور النظام من امكانيات، كما يمكن التركيز بمسار فرعي ببعض الأنظمة التي تحتوي على أنظمة فرعية ووظائف مختلفة مثل الأنظمة الفرعية في Oracle ERP يتفرع منه نظام فرعي موارد بشرية Human Resources ونظام فرعي مالي Financial ونظام فرعي تموين Supply Chain … وهكذا وكل منها يوجد مختصين وخبراء بالتطوير وبمجال الأعمال الخاص بهذه الأنظمة الفرعية كرسوا خبرتهم على مدى سنوات لفهم وتحليل الأعمال وإدارة المشاريع عليها ورغم انه يسمى نظام فرعي من ERP إلا أنه أكبر من بعض الأنظمة مثل نظام إدارة محتوى أو غيره، وأيضاً بالنسبة للوظائف ففي الجهات الكبرى هناك أحياناً تكون وظيفتين في ERP وهما Functional المتخصص بتحليل الأعمال وتشغيل المشروع وكذلك Technical المتخصص بالتطوير التقني لاحتياجات التحليل والتشغيل مثل النماذج والتقارير وغيرها.Web Application تطبيق ويب فيه مزايا تجعله أقرب للتطبيق أكثر من التنقل بين صفحات الانترنت لتصفح الموقع فهو يشبه تطبيقات الأجهزة الذكية في تجربة المستخدم User Experience ولكنه يعمل على المتصفح مثل تويتر وانستقرام (بالمتصفح) بينما ليس ذلك للسناب شات وكذلك مثل تطبيقات الويب المكتبية من Google مستندات جوجل وغيرها.
Web API واجهة تطبيقات برمجية وهو عبارة عن وسيلة للتواصل والتكامل بين مختلف الأنظمة إما باستقبال بيانات أو ارسال بيانات وأشهرها REST والتي تتكون من طرق Methods أو أفعال Verbs تتحكم بنوع التفاعل أهمها (GET, POST, PUT, DELETE) ويتم معالجتها من خلال السيرفر ويمكن التحكم بصلاحياتها من قبل منشأ الـ API، وهو له أهمية كبيرة جداً حالياً للحاجة القوية لتكامل المشاريع التقنية وكذلك لاستخدامها من خلال تطبيقات الأجهزة الذكية بشكل أساسي وأصبحت تستخدم في المواقع أكثر حتى يتم بناؤها مرة واحدة واستخدامها في أي شيء سواءً موقع أو تطبيق وأي مشروع تقني آخر.
كل نوع من أنواع الويب لها تقنيات محددة لها وذلك من خلال بنائها عبر جانبين مهمين شرحهم بالأسفل
الجانبين من الويب
Two Ends of the Web
Back-end الجانب الخلفي تقنيات يتم تطويرها بحيث يتم تشغيلها بالسيرفر مثل لغات البرمجة التي تعتمد على بناء البنية الأساسية والمنطق الخاص بالموقع مثل تنفيذ عملية تسجيل عضو.
Front-end الجانب الأمامي تقنيات يتم تطويرها بحيث يتم تشغيلها في جهاز العميل من لغات وصفية HTML وتنسيقية CSS أو برمجية JavaScript وتعتمد على بناء الواجهات وعناصر الصفحة أو عناصر التفاعل مع السيرفر التي يتم من خلالها الاتصال بالسيرفر، بحيث أن عناصر الصفحة مثل عنوان الصفحة والفقرات وعناصر القوائم النصية والمرقمة… الخ هذي عناصر هي عناصر الصفحة بينما العناصر التفاعلية هي مثل نموذج تسجيل عضو والحقول النصية وزر التسجيل وكذلك الأزرار الموجودة في الصفحة التي تستدعي عنوان صفحة أخرى أو أي عنصر ثابت تم تحويله إلى عنصر تفاعلي باستخدام لغة البرمجة JavaScript.
الجانب الخلفي مثل المطبخ
والجانب الأمامي مثل طاولة الطعام
الجانب الأمامي Front-end
يعمل على بناء وتطوير المشروع بما هو معطى من مصادر التصميم وتجربة المستخدم UI/UX وبناء الواجهات للموقع وتفاعله اعتماداً على برمجيات السيرفر المتاحة من الـ Back-end
الجانب الخلفي Back-end
يعمل على بناء بنية المشروع البرمجي وتطوير عمليات السيرفر مثل ارسال واستقبال البيانات لتوفيرها للـ Front-end أو عمليات آلية تخدم المشروع أو حماية المشروع برمجياً وغيرها
عندما نقول Front-end يتم تشغيلها في جهاز العميل لا يعني انها ليست موجودة في السيرفر بل هي موجودة ولكن يتم إرسالها من السيرفر لجهاز العميل ليتم تشغيلها لديه، بينما الـ Back-end لا يتم ارسال التقنيات التي تم تطويرها فيه للعميل بل يتم تشغيلها في السيرفر.
سنتطرق لتفاصيل توضيحية أكثر بما يتعلق بالجانبين في الأسفل وفي طرح جديد قادم بإذن الله
التقنيات المستخدمة في أنواع الويب
تحدثنا عن أنواع الويب وتعريفها ولكن لم نتحدث عن التقنيات التي تستخدمها تحديداً فهنا سنسرد أنواع الويب مع عرض التقنيات الأساسية الخاصة بأنواع الويب :
Static Website موقع إلكتروني ثابت يتم استخدام فيه لغات وصفية لبناء الصفحات وتنسيقها فقط بدون أي تفاعل باستخدام: HTML, CSS فقط وإذا رغبت بإضافة مؤثرات أكثر في الصفحة يمكن استخدام JavaScript وهي لغة برمجية تعمل في جهاز العميل بشكل أساسي أي في الجانب الأمامي في الـ Front-end كذلك HTML و CSS من مهارات المناسبة لمتخصص الـ Front-end ويمكن لـ JavaScript أن تعمل في الجانب الخلفي بالسيرفر وذلك بفضل منصة تشغيل يتم تنصيبها واستخدامها في السيرفر تسمى Node.js لذلك JavaScript يمكن أن يستخدم في الجانبين.
Dynamic Website موقع إلكتروني تفاعلي تعتمد على الجانبين، الجانب الخلفي Back-end والجانب الإمامي Front-end، وذكرنا تقنيات الجانب الأمامي بينما تقنيات الجانب الخلفي التي يجب تعلمها في هذا النوع هو باستخدام أحد هذه اللغات البرمجية التي تعمل في السيرفر: PHP, C#, Python, Java ويتم استخدام إطار عمل Framework بشكل أساسي ما عدا PHP بشكل اختياري، وكذلك لغة البرمجة JavaScript حيث تحتاج بشكل أساسي كما ذكرنا إلى منصة تشغيل Node.js لتعمل في الجانب الخلفي ومهم الاختيار منها إذا رغبت أن تكون Back-end Developer مطور متخصص بالجانب الخلفي حيث أن هذ المسمى أو المنصب له حاجة في السوق من ناحية التركيز على الجانب الخلفي.
Web Application تطبيقات الويب تعتمد كثيراً على أحد أطر عمل JavaScript وأشهرها هي (Angular, React, Vue)، ومهم اختيار واحد منها لإتقانها خصوصاً إذا رغبت أن تكون Front-end Developer مطور متخصص بالجانب الأمامي حيث أن هذا المسمى أو المنصب له حاجة في السوق من ناحية التركيز على الجانب الأمامي لتطوير تطبيقات الويب أو أي من أنواع المواقع الأخرى التي تستفيد من مزايا أحد أطر العمل هذه.
Web API واجهة تطبيقات برمجية يتم برمجتها من خلال الجانب الخلفي Back-end.
وذلك بعمل ما يسمى Endpoints وهي ببساطة عبارة عن عناوين ويب في الـ API:
example.com/endpoint-part1/endpoint-part2
وتسمى مَسْلَك Route في أنظمة الويب وتطبيقات الويب، وكل هذا يعني ببساطة عنوان الصفحة:
example.com/route-part1/route-part2
وهو ممتد من عنوان الموقع الرئيسي Website URL address ولكن يمكن للـ Endpoint الواحد أن يحتوي على أكثر من HTTP Methods أو Verbs مثل example.com/item/1 :
GET /item/{id} يعرض بيانات الصنف
PUT /item/{id} يحدّث بيانات الصنف
وتسترجع البيانات من خلال API بصيغة JSON عادةً بشكل أساسي وليس HTML مثل المواقع، و JSON اختصاراً لـ JavaScript Object Notation ويعني ترميز جافا سكريبت على شكل هيكلة بيانات، وهو يساعد على قراءة البيانات مهيكلة بشكل سهل، ويساعد على التعامل مع البيانات من قبل Front-end أو التطبيق من خلال عناصر الواجهة المناسبة بشكل مباشر وبمرونة.
كما يتم استخدام عادةً API Client ليتم حصر وتنظيم واختبار وتسليم الـ Endpoints للمطورين من أشهرها Postman، وهناك في هذا الجانب من Web API عدة مهارات ومنهجية تنظيمية يحتاج تعلمها وتطوير نفسك فيها إذا اخترت المسار الفرعي Back-end.
امكانية التعامل مع الجانب الآخر
سواءً Front-end أو Back-end
بدون وجود متخصص فيه بالمشروع
عندما تكون Back-end لا يعني أنك لن تستطيع عمل مشروع بدون Front-end بشكل كامل وعندما تكون تكون Front-end لا يعني أنك لن تستطيع عمل مشروع بدون Back-end بسبب وجود أدوات ومصادر تساعدك على استخدامها لتغطي حاجتك مثلاً إذا كنت Back-end يمكنك تركيب قالب مجاني أو شراء قالب احترافي واستخدامه، اذا استخدمته مباشره بدون احتياجات خاصة للتعديل عليه ولكن كل ما كان يحتاج تعديلات مخصصة كل ما كان هناك حاجة ملحة لوجود متخصص مطور Front-end، وكذلك إذا كنت Front-end يمكنك إيجاد منصة سحابية تساعدك بتوفير خدمات سحابية لتطوير مشروعك مثل Firebase، ويمكن أن يكون ذلك للمشاريع الصغيرة أو في بداية المشروع كـ MVP، ولكن بشكل عام مهم لأي مشروع متوسط الحجم أن يكون هناك متخصصين في الـ Back-end ومتخصصين في الـ Front-end للحفاظ على الوقت والجهد والتركيز ولعمل الإمكانيات الكبيرة التي تحتاجها المشاريع التقنية مع توفير الجودة والسرعة والاستمرارية والنمو وغيرها.
الأن ماذا عليك أن تفعل؟
تحديد مسار فرعي من مسار الويب وذلك إما أن تصبح مطور Front-end أو Back-end أو اثنينهم اذا أردت أن تكون Full-stack developer كما وضحنا في المقالة السابقة لكني شخصياً لا أنصح بذلك لا من ناحية الجهة التي توظف ولا من ناحية المطور.
(هناك كذلك مسارات فرعية في كل جانب! ولكن ستكون شبه الأخيرة بإذن الله وهي اختيار لغة البرمجة في Back-end واختيار إطار العمل في Front-end) ومثل ما ذكرت يجب التركيز فهو أفضل طريق وأنا هنا لمساعدتك على التوجيه والمسارات بشكل صحيح بإذن الله ولك الاختيار.اتقان المسار الفرعي بأكمال التوجيه وأخذ دروس مركزة عليها والأهم بعد ذلك عمل مشاريع فيها.
العمل باستخدام أحد المسارات الفرعية من الويب (وظيفة أو مشروع أو أعمال حرة) كما يمكن الاستمرار بتطوير نفسك بتبني أحد أنظمة الويب المطورة من شركات عالمية من المذكورة في الأعلى مع العلم أن بعض الأنظمة تعتمد في التطوير على الجانبين Back & Front-end خصوصاً مثل CMS و eCommerce وبعضها لا مثل Oracle ERP و SAP ERP حيث لديها طريقة خاصة أخرى لذلك إذا أردت التخصص بها ستحتاج إلى متخصصين بها لإرشادك وتوجيهك فيها أكثر حيث أنني أستطيع ارشادك وتوجيهك بجميع ما ذكرته ما عدا هذه.
الاستمرار دائماً بالتعلم والممارسة ومواكبة التطورات (في مسارك) فإذا توقفت أنت في الحقيقة تتراجع.
حيث سنستمر في التوجيه لمسار برمجة المواقع وأنظمة الويب من خلال المسارات الفرعية التالية
Front-end و Back-end
والتي تمكنك من تصميم وتطوير مواقع وأنظمة ويب إما خاصة بك كمشروع تقني أو بالشركة وكذلك تطبيقات ويب أو API وهناك كذلك في كل منها مسارات فرعية أخرى، ولن أغطي تعلم أنظمة الويب المطورة من قبل شركات عالمية لأنها كثيرة ومتفرقة ويمكنك التعمق بها أكثر بعد الانتهاء من أحد المسارين السابقين
اختر مسار
مسار Front-end (قريباً)
مسار Back-end (قريباً)
وهنا خريطة لتطوير الويب
توضح الكثير من التفاصيل
~ من أحد المسارات الأخرى كذلك هو DevOps ويتفرع من Back-end ~
وهنا يتضح أكثر حجم وأهمية تحديد مسار