تبدأ كل محادثة أولى تقريبًا حول مشروع برمجي بالسؤال نفسه: كم ستكلّف؟ وهو سؤال مشروع، لكنه أقل سؤال يمكنني الإجابة عنه بمسؤولية في جملة واحدة. فبعد 25 عامًا من بناء البرمجيات لأنواع كثيرة من الشركات، تعلمت أن الرقم المذكور قبل فهم المشكلة ليس تقديرًا. بل تخمين سيدفع ثمنه أحدهم لاحقًا.

لا تقدّم هذه المقالة سعراً، لأن أي رقم أذكره هنا سيكون خاطئاً لمشروعكم. ما تقدّمه هو قائمة بالأمور التي تؤثر فعلاً في التكلفة، لتتمكنوا من تقييم أي تقدير تتلقونه، واتخاذ الخيارات التي تخفض التكلفة دون الإضرار بالنتيجة.

لماذا يختلف عرضا سعر لـ"الشيء نفسه" كثيراً

إذا طلبت من ثلاث شركات عرض سعر لـ «بوابة عملاء»، فقد تتلقى بسهولة ثلاثة أرقام مختلفة جدًا. نادرًا ما يكون السبب أن إحداها تبالغ في السعر. فعادةً تكون كل واحدة قد تخيّلت بوابة مختلفة. افترضت إحداها تسجيل دخول بسيطًا مع قائمة فواتير. وافترضت أخرى صلاحيات حسب الأدوار ورفع مستندات وإشعارات بريد إلكتروني ومنطقة إدارة وبوابة دفع. وافترضت الثالثة ذلك كله مع تطبيق جوال.

تتميز البرمجيات بأن الجملة الواحدة قد تصف منتجات تختلف في الجهد بمقدار عشرة أضعاف. لذا فأول مهمة في أي تقدير أمين هي تحويل الجملة إلى نطاق: وصف مكتوب لما سيوجد عند انتهاء العمل. وكونوا حذرين من أي سعر يصل دون ذلك.

العوامل الرئيسية للتكلفة

1. النطاق: عدد المهام التي يؤديها

كل ميزة هي قطعة عمل: تصميمها وبناؤها واختبارها، ثم إبقاؤها تعمل مع تغيّر كل ما حولها. كما أن الميزات تتفاعل فيما بينها. إضافة دور خامس للمستخدمين لا تكلّف خُمس زيادة عن الرابع؛ فهي تمسّ كل شاشة تتحقق من الصلاحيات. عند إعداد قائمة ما تريد، افصل بين ما تحتاجه من اليوم الأول وما سيكون جيدًا لاحقًا. هذا التمييز وحده هو أكثر وسائل التحكم بالتكلفة فاعلية.

2. عدم اليقين: مدى وضوح فهم المشكلة

يمكن تقدير المشكلة المفهومة جيدًا، مثل نموذج يخزّن السجلات ويرسل بريدًا إلكترونيًا، بدقة. أما المشكلة التي لا يعرف أحد بدقة كيف ينبغي أن تعمل العملية فيها أو كيف تبدو بياناتها فلا يمكن ذلك. عدم اليقين لا يجعل العمل مستحيلاً، لكنه يجعل السعر الثابت محفوفًا بالمخاطر للطرفين. فإما أن يضيف المورّد هامشًا إلى السعر لتغطية المجاهيل، أو يتحول المشروع إلى خلافات حول ما كان مشمولاً. وغالبًا ما يوفر قضاء وقت قصير في البداية لتقليل عدم اليقين، عبر مرحلة استكشاف قصيرة أو نموذج أولي أو عينة من البيانات الحقيقية، أكثر مما يكلف.

3. التكاملات: عدد الأنظمة الأخرى التي يتصل بها

ربط بوابات الدفع وبرامج المحاسبة وأنظمة CRM وخدمات التوصيل أو بوابة حكومية هو الموضع الذي تخطئ فيه التقديرات في أغلب الأحيان. لكل نظام خارجي قواعده الخاصة وخصائصه، وأحيانًا إجراءات اعتماد خاصة لا علاقة لها بالبرمجة. الواجهة البرمجية الحديثة الموثقة جيدًا أمرها يسير، أما النظام القديم غير الموثق أو الذي يكتفي بتصدير الملفات فليس كذلك. إذا كان مشروعك يتضمن عمليات ربط، فاطلب تحديدها صراحةً في التقدير، مع أي موافقات سيلزمك الحصول عليها.

4. المستخدمون والبيانات والأداء

برنامج لعشرة مستخدمين داخليين وبرنامج لعشرة آلاف عميل مشكلتان هندسيتان مختلفتان. فزيادة المستخدمين والبيانات والنشاط المتزامن تعني مزيدًا من العناية بتصميم قاعدة البيانات والتخزين المؤقت والاستضافة والمراقبة. ومعظم تطبيقات الأعمال لا تحتاج إلى بنية غير مألوفة، لكن ينبغي أن تخبروا المطوّر بصراحة بالحجم المتوقع، بما في ذلك ما تأملون الوصول إليه خلال سنتين أو ثلاث، حتى لا يكون الأساس أصغر من اللازم.

5. المنصات والأجهزة

تطبيق الويب الذي يعمل على متصفحات سطح المكتب والهاتف أمر، وتطبيقات Android وiOS الأصلية والعمل دون اتصال والإشعارات الفورية والنشر في المتاجر أمور أخرى. ويمكن لأدوات متعددة المنصات مثل Flutter وReact Native مشاركة معظم الشيفرة بين Android وiOS، ولهذا تكون غالبًا خيارًا معقولاً لتطبيقات الأعمال، لكنها لا تجعل العمل مجانيًا. حددوا المنصات التي تهم مستخدميكم فعلاً.

6. توقعات الجودة والأمان والامتثال

الاختبار ومراجعة الشيفرة والنسخ الاحتياطي وتسجيل الأحداث والتحكم في الوصول وتعزيز الأمان ليست إضافات اختيارية، لكن عمقها يختلف. النظام الذي يعالج المدفوعات أو البيانات الشخصية يحتاج إلى عناية أكبر من موقع تعريفي. إذا كانت لديكم متطلبات تعاقدية أو تنظيمية، أخبروا المطوّر بها في البداية؛ فإضافتها لاحقاً أغلى بكثير من التصميم لها من البداية. احذروا ممن يدّعي شهادات أو ضمانات لا يستطيع إثباتها.

7. ترحيل البيانات والأنظمة القائمة

إذا كنت تستبدل نظامًا قائمًا، فلا بد من نقل البيانات القديمة. وغالبًا ما يُستهان بتنظيف تلك البيانات وربطها والتحقق منها. الجداول المليئة بإدخالات نصية حرة وعملاء مكررين وتواريخ غير متسقة تتطلب جهدًا حقيقيًا لتحويلها إلى قاعدة بيانات نظيفة. اسأل مبكرًا عن مقدار البيانات القديمة التي تحتاجها فعلًا.

8. بعد الإطلاق

البرمجيات لا تنتهي عند التشغيل. فالخوادم تحتاج إلى تحديثات، والمكتبات تحتاج إلى ترقية، والأخطاء تظهر في الاستخدام الفعلي، والعمل يتغير باستمرار. خصصوا ميزانية للاستضافة والصيانة ولتحسينات صغيرة متتابعة. وكقاعدة عامة، عاملوا الإصدار الأول كبداية علاقة مع البرنامج لا كعملية شراء تنتهي.

كيف يبدو التقدير الصادق

أياً كان الرقم النهائي، فللتقدير الموثوق سمات يمكن تمييزها. يصف النطاق بلغة واضحة لتتحققوا من مطابقته لما تصورتموه. ويذكر الافتراضات، مثل "ستتوفر بيئة تجريبية لدى مزوّد الدفع" أو "ستزوّدوننا ببيانات المنتجات في جدول بيانات". ويقسّم العمل إلى مراحل لتروا التقدم ولتتوقفوا إن لزم. ويذكر ما هو غير مشمول. ويشرح كيف ستُعالج التغييرات، لأنها ستحدث.

إذا كان التقدير بسعر ثابت، فينبغي أن يوضح ما يحدث عند تغيّر المتطلبات. وإذا كان بالوقت والمواد، فينبغي أن يقدّم نطاقًا ويصف كيف ستُطلع على الإنفاق. يتناول دليلنا حول الاختيار بين السعر الثابت والوقت والمواد هذا القرار بتفصيل أكبر.

كيف تخفض التكلفة دون التضحية بالقيمة

  • ابدأوا بأصغر مما تظنون أنكم تحتاجون. إصدار أول مركّز يستخدمه أشخاص حقيقيون يعلّمكم أكثر من مواصفات طويلة. ويمكنكم إضافة الموجة الثانية والثالثة من الميزات وأنتم تعرفون ما يهم.
  • قدّموا أمثلة حقيقية مبكرًا. نماذج المستندات وجداول البيانات ولقطات شاشة للعملية الحالية وقائمة بالاستثناءات الصعبة تزيل عدم اليقين أسرع من الاجتماعات.
  • قولوا ما لستم متأكدين منه. يستطيع المطوّر التصميم حول مجهول إذا أُخبر به. المفاجآت هي ما يكلّف المال.
  • فكّروا أولاً هل تحتاجون إلى برمجيات أصلاً. أحيانًا تحل أداة جاهزة مضبوطة، أو نص أتمتة صغير، أو تعديل في آلية العمل المشكلة بتكلفة أقل. المطوّر الجيد سيخبركم بذلك، حتى لو كان يعني مشروعًا أصغر.

الجواب الصريح

تعتمد تكلفة البرمجيات المخصصة على ما تبنونه، ومدى فهمكم له، وعدد الأنظمة الأخرى التي يتصل بها، والمدة التي تنوون إبقاءه فيها قيد التشغيل. ومن يعطيكم رقماً ثابتاً قبل فهم هذه الأمور إما يخمّن أو يبيع منتجاً جاهزاً.

في IT Labs India نقدم استشارة أولية مجانية وتقديراً مكتوباً، دون أسعار منشورة، لأن الرقم الصحيح لا يوجد إلا بعد أن نفهم مشكلتك. وإذا أردت بدء هذا الحوار، يمكنك معرفة المزيد عن خدمة تطوير البرمجيات المخصصة أو التواصل معنا.