دليل المطور الشامل
مقدمة
هذه المادة إجابة لسؤال: “كيف أنشئ تطبيقًا؟”
وسأجيب من منظور مهندس برمجيات عمل كمهندس برمجيات ومطور شامل في عدة قطاعات، ورأى بعض الأنماط تتكرر، فتكونت لدي صورة بعد بحث طويل وتجرِبة وتفكير. ودفعًا للإملال وحِفظًا للأوقات والأعمار سأركز على الأهم فالمهم وأبتعد عن التنظير الممل، وأقدِّم خلاصةً أصيلة تهدي السالك في طريقه نحو الأتمته ليكون مهندس برمجيات (Software Engineer).
مهام تطوير البرمجية
سنبدأ هذا الطريق بعرض أكثر الناس تعدُّدًا من حيث المهام البرمجية؛ وهو المبرمج الأفقي الذي وضع يده في مراحل متتابعة من دورة حياة المشروع البرمجي. ألا وهو المبرمج الشامل (Full-stack Developer)؛ فهو: القادر على بناء خدمة برمجية متصلة بواجهة مستخدم ثم إطلاقها ثم صيانتها وتحديثها.
فهذه مهام خمس:
- إنشاء الخدمة البرمجية القائمة بالمهام
- إنشاء الواجهة المطلَّة على المستخدم
- إنشاء التواصل بين الواجهة بالخادم
- إطلاق هذا النظام ليتمكن المستخدم من الوصول إليه والاستفادة منه
- صيانة وتحديث إما لأخطاء، أو لمتغيرات خارجية أو لمتطلبات إضافية
وقد يتخصص المطوِّر الشامل في هذه المهام ويغوص في تفاصيلها ..
- فإذا مال للجانب الأقرب للمستخدم يكون: مطور الأمامية. ومن أسمائه:
- Front-End Developer
- Front-End Engineer
- UI Developer
- UI Engineer
- Web Developer (عامّة، لكنها كثيراً ما تُستخدم للدلالة على الواجهة)
- Client-Side Developer
- JavaScript Developer (عندما تكون المهام محورية حول JS)
- Front-End Architect (نسخة أكثر “هندسية” لمن يبني المعمارية لا مجرد الصفحات)
- وإذا مال للجانب الأقرب للخوادم يكون: مطور الخلفية. ومن أسمائه:
- Back-End Developer
- Back-End Engineer
- Server-Side Developer
- API Developer
- Backend Services Engineer
- Integration Engineer
- Backend Architect
- وإذا مال لجناب أتمتة الإطلاق والصيانة والتحديث يكون: مهندس عمليات التطوير. ومن أسمائه:
- DevOps Engineer
- Site Reliability Engineer (SRE)
- Platform Engineer
- Infrastructure Engineer
- Cloud Engineer
- CI/CD Engineer
- Systems Engineer (عندما يكون الدور تقليدياً أكثر)
وقد لا يتخصص في واحد منها على وجه التحديد.
المهام الإنشائية
يشمل النظام البرمجي -من حيث الإنشاء- وجهان: أحدهما ظاهر والآخر باطن. وسبق وجوده هذه الثنائية في نظام لينكس وهي ثنائية:
- الصدفة (Shell)؛ التي تستقبل أوامِر من المستخدم ثم تفسرها ثم ترسلها إلى النواة
- والنواة (Kernel)؛ التي تقوم بالعمل الحقيقي بناءً على نظام التشغيل
منطق العرض ووجهه
فأما واجهة المستخدم الرسومية (GUI) فهيالوجه الأمامي (Frontend) هو الذي يراه المستخدم ويسمعه ويلمسه ويتفاعل معه مباشرة. ومشغِّلُها عادةً هو المتصفِّح (Browser) وفي الجوال مشغِّل خاص بحسب نظام التشغيل.
وخلف هذا الوجه منطق العرض (Presentation Logic) ويشمل إدارة الحال التي يعتمد عليها المظهر، كما يشمل منطق الاتصال بالوجه الخلفي.
منطق العمل ووجهه
وأما الوجه الخلفي (Backend)؛ وهو الوجه المتصل بالخفي من عمليات قراءة البيانات ومعالجتها وكتابتها وإرسالها واستقبالها. وقد يكون خادمًا واحدًا أو أكثر، وقد تكون قاعدة بيانات واحدة أو أكثر، وقد تكون مجموعة أنظمة برمجية طُوِّرت بشكل منفصل ثم تكاملت لتخدم المستفيد؛ وهذا التكامل هو المعروف باسم (API Integration)؛ حيث لكل برمجية خلفية وجه تتصل من خلاله بالبرمجيات الأخرى؛ يسمى الواجهة البرمجية للتطبيقات (API).
وخلف هذا الوجه الخِدمة (Service) القائمة بمنطق العمل (Business Logic) الذي يحقق متطلبات التطبيق.
ولا تكاد تخلو خِدمة من قاعدة بيانات (Database) تبحث فيها وتحفظ فيها نتائج المعالجة، وتنظِّم فيها العمليات القائمة.
وقد تحتاج الخدمة للتكامل مع خدمات أخرى (API Integration) لتحقيق ما لا يمكنها هي تحقيقه.
وسنبدأ حديثنا من القاعدة والأساس؛ حيث لا يوجد تطبيق بلا بيانات.
فهرس الموضوعات
- تخطيط البيانات
- لغة البيانات
- تشغيل قاعدة البيانات
- وصل التطبيق بقاعدة البيانات
- إطار بايثون لقواعد البيانات
- متابعة تطورات المخطط
- الخادم والعميل
- لغة المحتوى
- لغة التصفيف
- خادم الويب
- صياغة قوالب الصفحات وصب البيانات فيها
- البحث
- وقفة مع ضبط صحة المنطق
- الجلسة
- اللاتزامن
تنبيه: ما يزال المحتوى لم يكتمل بعد.
متطلبات المادة
للاستفادة من هذه المادة، يجب أن يكون لديك أساس متين في البرمجة بلغة بايثون.
راجع: المقدمة البايثونية للبرمجة باللغة العربية. وهو كتاب مجاني متوفِّر على الإنترنت يتطلب منك ثلاثة أشياء لاستيعاب مادته: 1. معرفة باللغة العربية 2. اهتمام بالمنطق 3. عقلية رياضية