المنصّة الحقيقية تُبنى في أربع مراحل، بهذا الترتيب: المتطلّبات، ونموذج البيانات، والواجهة الخلفية الآمنة، ثم الواجهة. كتابة الكود هي في أغلبها المرحلة الرابعة.
تجاوز مرحلة لا يوفّر الوقت. المشكلة تعود لاحقًا في أغلى أشكالها، وغالبًا كإعادة كتابة.
يشرح هذا الدليل كل مرحلة بكلمات بسيطة، وما يفشل فيها، وما يتغيّر حين تبني لمؤسسة جزائرية.
ما هي المراحل الأربع لبناء منصّة ويب؟
فكّر في بناء منزل. أوّلًا تقرّر الغرف التي تحتاجها. ثم تصبّ الأساسات.
ثم تبني الجدران وتمدّ الكهرباء وتركّب الأقفال. وبعدها فقط تطلي وتؤثّث. لا أحد يطلي قبل أن تجفّ الأساسات.
| المرحلة | بكلمات بسيطة | في المنزل | ما يفشل إذا تجاوزتها |
|---|---|---|---|
| 1. المتطلّبات | ما يجب أن تفعله المنصّة، وما يُحذف | تحديد الغرف | منتج يتأخّر كثيرًا، مليء بميزات لا تُستعمل |
| 2. نموذج البيانات | كيف تُخزَّن المعلومات وتُربط | الأساسات | كل مرحلة لاحقة ترث الضرر |
| 3. الواجهة الخلفية الآمنة | القواعد والأمان والمدفوعات على الخادم | الجدران والكهرباء والأقفال | أيّ أحد يغيّر الأسعار أو يقرأ بيانات غيره |
| 4. الواجهة | الشاشات للزبائن ولصاحب المشروع | الطلاء والأثاث | صاحب المشروع لا يسيّر نشاطه دون المطوّر |
المشاريع نادرًا ما تموت بسبب كود سيّئ. تموت بسبب نموذج بيانات لا يمثّل النشاط، أو قائمة ميزات لم يقلّصها أحد، أو صاحب مشروع لا يستطيع تسيير منصّته وحده.
كيف تكتب متطلّبات منصّة؟
هدف المتطلّبات ليس كتابة كل ما يريده الزبون. بل إيجاد الميزات القليلة التي يقوم عليها النشاط، وحذف الباقي.
أوّل لقاء ينتج غالبًا قائمة أمنيات طويلة، أحيانًا عشرات الميزات. وعادةً حفنة منها فقط تهمّ يوم الإطلاق.
بناء كل شيء لا يعطي الزبون منتجًا أغنى. يعطيه منتجًا يتأخّر كثيرًا ويُخفي الميزات المهمّة تحت القوائم.
السؤال المفيد ليس "هل تريد هذا؟"، لأنّ الجواب دائمًا نعم. بل "إذا لم يكن هذا موجودًا يوم الإطلاق، ما الذي سيتعطّل؟" أغلب الميزات لا تصمد أمام هذا السؤال، وهذا هو المقصود.
لماذا نموذج البيانات هو أهمّ مرحلة؟
لأنّ الكود رخيص التغيير، أمّا قاعدة بيانات مليئة ببيانات زبائن حقيقيين فلا. تغييرها يعني نقل البيانات وتحديث كل تطبيق يقرؤها.
ونفس الأخطاء تتكرّر:
- تخزين الحالة الحالية بدل ما حدث. فيُمحى التاريخ.
- تخزين المال بأرقام عشرية. فتتسلّل أخطاء التقريب. استعمل أرقامًا صحيحة بالسنتيم.
- نسيان العلاقة التي يقوم عليها النشاط فعلًا. فتُزيَّف لاحقًا بحلول ترقيعية.
- التحسين المبكّر لمشكلة سرعة غير موجودة.
وبعد ستّة أشهر، العرض دائمًا واحد: أسئلة صاحب المشروع البسيطة تصبح بطيئة أو مستحيلة الإجابة.
ماذا تحتاج الواجهة الخلفية الآمنة؟
الواجهة الخلفية هي الجزء الذي يعمل على الخادم بعيدًا عن الأنظار. وقاعدة واحدة تهمّ فوق كل شيء: الخادم هو من يقرّر، لا المتصفّح أبدًا. كل ما يرسله المتصفّح يمكن تزييفه. إذا استطاع متصفّح أن يخبر خادمك بالسعر الذي يجب اقتطاعه، فليس لديك واجهة خلفية، بل صندوق اقتراحات.
عمليًا:
- استعمل الأمان على مستوى الصفوف. هو ميزة في قاعدة البيانات تقرّر أيّ الأسطر يرى كل مستخدم أو يغيّرها، فحتى المفتاح المسرّب لا يقرأ طلبات بائع آخر (توثيق PostgreSQL).
- اجعل العمليات الحسّاسة خطوة واحدة. إنقاص المخزون وإنشاء الطلب يحدثان معًا، في معاملة واحدة، حتى لا يحصل مشتريان على آخر قطعة.
- لا تسمح أبدًا بتعديل السجلّات المالية. التصحيحات قيود جديدة. أشرح السبب في لا تعدّل سجلًّا ماليًا أبدًا.
لماذا تحتاج كل منصّة لوحة إدارة؟
لأنّ للمنصّة جمهورين، والثاني يُنسى. الزبائن يحتاجون المتجر. وصاحب المشروع يحتاج مكتبًا خلفيًا يقوم فيه بعمله دون الاتصال بك.
أي أن يغيّر سعرًا، ويسترجع طلبًا، ويوقف مستخدمًا، ويقرأ أرقام الأمس.
لوحة الإدارة ليست إضافة جميلة. إنّها الفرق بين منصّة يملكها الزبون ومنصّة يستأجرها من رقم هاتفك.
متى يكفي قالب جاهز، ومتى تحتاج منصّة مخصّصة؟
| قالب جاهز | منصّة مخصّصة | |
|---|---|---|
| التكلفة في اليوم الأول | منخفضة جدًا | أعلى |
| ملاءمة النشاط | عامّة، للجميع | مبنية حول طريقة العمل الفعلية |
| مسار الدفع عند الاستلام | يُضاف لاحقًا، إن أُضيف | هو المسار الرئيسي |
| الربط بشركات التوصيل | إضافة قد تُهجر | ربط مباشر بشركة التوصيل |
| العربية من اليمين إلى اليسار | غالبًا معطوبة في القالب | مصمّمة من البداية |
| ماذا يحدث حين تكبر | تتجاوزه وتبدأ من جديد | تطوّرها |
النسخة الصادقة: لمحلّ صغير يبيع بعض المنتجات، القالب الجيّد هو الجواب الصحيح، وأقول ذلك للزبائن. والعمل المخصّص يؤتي ثماره حين تكون طريقة العمل هي النشاط نفسه، كما في الدفع عند الاستلام وشركات التوصيل والبائعين المتعدّدين. أشرح هذا الاختيار في برنامج مخصّص أم برنامج جاهز.
ما الذي يتغيّر حين تبني منصّة للجزائر؟
المتطلّبات. يطلب الزبائن غالبًا ميزات شركة أكبر منهم بكثير، لأنّها ما رأوه. والمهمّة ليست قول لا، بل الترتيب: أطلق أوّلًا الميزات التي تجلب الدخل. صاحب المشروع الذي تضرّر من قبل لن يصدّق خطّة من اثني عشر شهرًا، لكنّه سيصدّق صفحة طلب تعمل في بضعة أسابيع.
نموذج البيانات. الطلب الجزائري سلسلة أحداث على مدى أيّام: سُجّل، تأكّد بالهاتف، أُرسل لشركة التوصيل، خرج للتوصيل، محاولة فاشلة، محاولة ثانية، سُلّم، حُصّل نقدًا، ودفعته شركة التوصيل في آخر الأسبوع ناقص رسومها.
خزّنه سطرًا واحدًا بحالة تكتب فوقها باستمرار، ولن تستطيع مراجعة دفعة شركة التوصيل الأسبوعية. والولاية والبلدية مكانهما جداول مرجعية حقيقية، لا نصّ حرّ، لأنّ أسعار التوصيل تعتمد عليهما.
الواجهة الخلفية. أغلب المدفوعات نقد يُحصَّل عند الباب بيد شخص لا يعمل لديك. والجزء الصعب هو مطابقة المبالغ المنتظرة مع ما تدفعه شركة التوصيل فعلًا. يستحقّ Chargily الإضافة للدفع الإلكتروني، لكن جعل الدفع المسبق المسار الرئيسي يعني البناء لزبون غير موجود بعد.
الواجهة. البائع يستعمل أندرويد متوسّطًا، بالعربية، من اليمين إلى اليسار، باتصال ينقطع. اختبر على جهاز حقيقي. ولوحة الإدارة أهمّ هنا، لأنّ البديل زبون يتّصل بك في التاسعة ليلًا ليغيّر سعرًا.
ما الأخطاء الشائعة في مشاريع المنصّات؟
- بناء كل ميزة مطلوبة. قلّص إلى ما يُعطّل النشاط إن غاب.
- كتابة الكود قبل رسم نموذج البيانات.
- الثقة بالمتصفّح في الأسعار أو الصلاحيات.
- ترك لوحة الإدارة "لوقت لاحق".
- الاختبار على حاسوب فقط، بينما المستخدمون على هواتف متوسّطة.
ماذا تفعل هذا الأسبوع؟
- اليوم: اكتب قائمة ميزاتك، ثم علّم فقط ما يُعطّل يوم الإطلاق إن غاب.
- هذا الأسبوع: ارسم نموذج بياناتك: الأشياء الرئيسية التي تخزّنها وكيف ترتبط.
- هذا الأسبوع: لكل جدول، قرّر: هل هو حقيقة عن الماضي، أم حالة حالية؟
- قبل بناء الشاشات: اكتب ما يجب أن يفعله صاحب المشروع وحده كل يوم في لوحة الإدارة.
- في كل مرحلة: اعرض على الزبون قطعة تعمل، مشروحة بجمل بسيطة.
إذا كنت في البداية وقلقًا من الميزانية، فاقرأ لماذا تموت التطبيقات المكلفة قبل إطلاقها.