كيف أعمل معك
تطوير برمجيات مخصّصة
تطوير البرمجيات المخصّصة هو بناء نظام حول الطريقة التي يعمل بها النشاط فعلاً، بدل تغيير تلك الطريقة لتناسب منتجاً صمّمه شخص آخر. وهو يستحقّ كلفته حين تكون العملية التي تُدرّ المال هي الجزء الذي لا يُمثّله أي منتج جاهز تمثيلاً صحيحاً — علاقة متعدّدة إلى متعدّدة بين طلبات الزبائن ومشتريات المورّدين، أو بضاعة تتنقّل على مركبات، أو كلفة واصلة يجب توزيعها بعدل على شحنة. أبني هذه الأنظمة كاملة: تحليل الأعمال، والمعمارية، والتطوير، والنشر، وأدوات العمليات التي يحتاجها من يُشغّلها من الأسبوع الأول.
أنظمة أعمال مبنية حول طريقة عمل مؤسّستك فعلاً، حين يكون المنتج الجاهز مضطرّاً إلى أن تُغيّر العملية شكلها لتناسبه.
من يحتاج نظاماً برمجياً مخصّصاً؟
البرمجيات المخصّصة لنشاط تكون عمليته الأساسية هي ما يميّزه، وتكون المنتجات المتاحة إمّا تمثّل شيئاً مجاوراً لتلك العملية أو تتطلّب من المؤسّسة أن تغيّر شكلها لتناسبها. إن كانت أداة جاهزة تؤدّي المهمّة، فاشترِها. تبدأ الحجّة للبناء حين يصير الالتفاف حول النقص هو العملية بهدوء.
والحالات التي يصحّ فيها هذا عادةً:
- العملية تعيش في محادثات ورسائل مورّدين وجداول بيانات، والإجابة عن سؤال زبون تعني أن يعيد شخص تركيب القصّة من أربعة مواضع.
- لا أحد يستطيع الإجابة عن سؤال تشغيلي أساسي — أي المنافذ زيرت، وما الذي يتحرّك في أي منطقة، وكم من النقد معلّق ومع من — بينما ما زال هناك وقت للتصرّف.
- العمل يجري حيث لا شبكة، فلا يمكن افتراض الاتصال.
- الطلب الواحد يعني أشياء مختلفة عدّة وهو يمرّ عبر الشركة، وقد أُجبر سجلّ واحد على تمثيلها جميعاً.
- الكلفة الحقيقية للطلب لا تُعرف إلا بعد تسليمه بوقت طويل.
أعمل مع الشركات الناشئة والمنشآت الصغيرة والمتوسطة والأعمال النامية، في الخليج والمنطقة العربية أساساً، بالعربية والإنكليزية.
ما الذي يشمله مشروع البرمجيات المخصّصة؟
يغطّي مشروع البرمجيات المخصّصة دورة الحياة كاملة لا مرحلة البناء وحدها: تحليل الأعمال وتخطيط المنتج، والمعمارية وتصميم الأنظمة، والتطوير والتسليم، والنشر السحابي والتوسّع، وإصدارات متاجر التطبيقات حين يكون للنظام سطح جوّال. وعلى نظام أعمال مخصّص تحديداً:
- نموذج المجال — الكيانات التي يملكها نشاطك فعلاً، مفصولة بصدق. طلب الزبون وأمر الشراء شيئان مختلفان بدورتَي حياة مختلفتين؛ ونمذجتهما كسجلّ واحد هي الخطأ الذي يجعل كل ما بعده مؤلماً.
- تعريف دورة الحياة — كل حالة، وكل انتقال، وما الذي يُطلقه، بما في ذلك الحالات المحرجة التي يفضّل الجميع عدم مناقشتها.
- الحالة المشتقّة، تُحسب من الأحداث التي جرت لا من حقل يجب أن يتذكّر أحدهم تحديثه.
- قواعد العمل التي هي قرارات فعلاً — توزيع الكلفة، والعملة وسعر الصرف في كل مرحلة، والائتمان والسقوف، وحلّ التعارضات — تُطرح ويُتّفق عليها لا تفترضها الشيفرة.
- التكاملات مع الأنظمة الخارجية التي تعتمد عليها العملية، كلٌّ خلف حدّ واحد، مع ضمان ألّا يتضاعف أثر التكرار في كل موضع يمسّ المال أو خطوة لا رجعة فيها.
- العمل دون اتصال ونموذج المزامنة حيث يجري العمل بعيداً عن الشبكة، بما في ذلك قواعد التعارض وترقيم المستندات الذي يصمد أمام الانقطاع.
- أدوات المكتب الخلفي والعمليات — التسوية، والتصحيحات، ومعالجة الاستثناءات — موصَّفة كجزء من النظام لا مركَّبة عليه.
- النشر والبيئات والقابلية للمراقبة بالقدر اللازم لتشخيص مشكلة في التشغيل الفعلي بدل الجدال حولها.
كيف يجري بناء نظام مخصّص؟
يبدأ بناء النظام المخصّص من النموذج لا من الشاشات. تُحدَّد دورة الحياة وتُكتب مع العمل التجاري قبل وجود أي واجهة، لأن كل خاصية بعدها تكون سهلة أو مستحيلة تبعاً لتلك القرارات — ولأن الأسئلة المطروحة أسئلةُ عملٍ ترتدي ثياباً تقنية. هل طلب الزبون هو أمر الشراء نفسه؟ بأي عملة قُوِّم هذا، وأي سعر صرف ينطبق في أي لحظة؟ وحين يختلف هاتف والخادم على مبيعات يوم، من يفوز؟
ثم دورة الحياة بترتيبها:
- تحليل الأعمال وتخطيط المنتج — ما الذي يعمله النشاط، ومن يستخدم البرنامج فعلاً، وأي القيود محسوم سلفاً: سوق تعمل فيه، أو مزوّد يجب التكامل معه، أو نظام يجب أن يستمرّ في العمل طوال الوقت.
- المعمارية وتصميم الأنظمة — نموذج المجال، والحدود، والقرارات التي يكون التراجع عنها مكلفاً.
- التطوير والتسليم — نواة أحادية معيارية افتراضاً: حدود حقيقية بين الوحدات، وشيء واحد يُنشر.
- النشر السحابي والتوسّع — البيئات، والتتبّع الذي يجعل التشغيل الفعلي قابلاً للإجابة.
- إصدارات متاجر التطبيقات حين يكون هناك سطح جوّال.
وطوال ذلك، قاعدة واحدة تقرّر ما يُؤتمت: أتمِت التسوية لا الحُكم. النظام يزيل النسخ والحساب؛ والقرارات التي تحتاج إنساناً تبقى للإنسان، معروضة مع المعلومات اللازمة لاتخاذها. وهذه القاعدة هي الصيغة العملية للادّعاء الذي تقوم عليه هذه الممارسة — أنني أفهم النظام التقني والعمل التجاري الذي يخدمه، ولهذا يُناقَش النموذج معك حتى يُحسم قبل أن يُبنى فوقه أي شيء.
قراءات ذات صلة
- كيف تختار بين نظام جاهز ونظام مخصّص — القرار الذي يسبق هذه الصفحة كلّها، مكتوباً كإجراء لا كرأي.
أين نفّذت هذا
مبيعات ميدانية دون اتصال لتوزيع السلع الاستهلاكية
بيع وتوزيع من المركبة لعملية سلع استهلاكية سريعة الدوران — يبيع المندوب ويفوتر ويُسوّي من هاتفه على خط السير، دون اتصال، ويرى المكتب الخلفي ذلك حين يعود الاتصال.
نظام إدارة الطلبات عبر الحدود
دورة حياة طلب واحدة من طلب الزبون مروراً بالشراء الدولي وصولاً إلى الشحن والتسليم المحلي — بديلاً عن عملية كانت تعيش في محادثات وجداول بيانات.
أسئلة عن هذا العمل
متى تكون البرمجيات المخصّصة هي الجواب الصحيح بدل شراء منتج جاهز؟
إن كان المنتج الجاهز يؤدّي المهمّة، فاشترِه — أرخص نظام هو النظام الذي لم تضطرّ إلى بنائه، وسأقول لك ذلك بصراحة. تبدأ الحجّة للتخصيص حين يصير الالتفاف حول النقص هو العملية نفسها: حين يُمثّل المنتج شيئاً مجاوراً لعمليتك، وتُملأ الفجوة بجداول بيانات ومحادثات وذاكرة أحدهم. والمعيار الذي أستخدمه هو ما إذا كان التعارض واقعاً في الجزء الذي يميّز النشاط. صيغ التقارير وخطوات الموافقة نادراً ما تبرّر بناءً كاملاً. أمّا دورة حياة طلب لا يمثّلها أي منتج تمثيلاً صحيحاً فتبرّره عادةً، لأن كل التفاف حولها يكلّفك يومياً ويتراكم.
هل يمكن رقمنة عملية تعيش اليوم في جداول بيانات ومحادثات كما هي؟
ليس مباشرةً، ومحاولة ذلك هي الإخفاق الشائع. العملية التي نمت في جداول البيانات تحمل افتراضات لم يكتبها أحد قط، وتتضمّن عادةً كذبة واحدة بعينها: حقل حالة يُفترض بأحدهم أن يتذكّر تحديثه. وأول مُخرَج حقيقي هو نموذج صادق لدورة الحياة — كل حالة، وكل انتقال، ومن أو ما الذي يُطلقه، متّفقاً عليه مع العمل التجاري لا مفترضاً. وبعد ذلك تُشتقّ الحالة من الأحداث التي جرت فعلاً بدل أن يكتبها إنسان. فإن كانت الحالة يدوية، فهي خاطئة.
هل يمكن أن يعمل نظام مخصّص إلى جانب برنامج المحاسبة أو تخطيط الموارد الذي ندفع ثمنه أصلاً؟
نعم، وهذا هو الشكل الصحيح عادةً. البرمجيات المخصّصة ليست حجّة لاستبدال كل ما تُشغّله — بل هي غالباً الطبقة التي تُمثّل الجزء الذي لا يمثّله أي منتج جاهز، موصولاً بإتقان بالأدوات التي تؤدّي عملها جيّداً أصلاً. كل نظام خارجي يقع خلف حدّ تكامل واحد بتمثيل داخلي مشترك، فلا يتغيّر نموذج مجالك كلّما تغيّر مزوّد، ويصير استبدال مزوّد لاحقاً تنفيذَ واجهة لا إعادةَ كتابة النظام.
ما الذي يتغيّر إن كان موظّفونا يعملون دون اتصال أو بعيداً عن المكتب؟
كل شيء، ويجب حسمه قبل الشاشات. إن كان على مندوب في قبو مستودع أو على خط سير ريفي أن يواصل العمل بلا إشارة، فالجهاز يحمل حالة حقيقية — الكتالوج كاملاً، والتسعير، وأرصدة الزبائن، ومخزون المركبة — وهذا يعني أن تعارضات المزامنة مضمونة الحدوث لا استثنائية. ومن يفوز في التعارض، لكل كيان، قاعدةُ عمل يجب الاتفاق عليها كتابةً، لا مسألةٌ تحسمها قاعدة «آخر كتابة تفوز». وترقيم المستندات يجب أن يصمد أمام الانقطاع أيضاً، فلا تتصادم عدّة أجهزة منقطعة لساعات. العمل دون اتصال معمارية، وإضافته إلى نظام افترض وجود شبكة غالية جداً.
هل تبني الجانب الجوّال أيضاً؟
نعم، حيث يجري العمل على هاتف لا على مكتب. المبيعات الميدانية والتوصيل وأعمال التفتيش وزيارات الخدمة جوّالة بطبيعتها، وفي تلك الأنظمة يكون الهاتف كثيراً مصدرَ الحقيقة لا مجرّد عرض رقيق على خادم. وإصدار متجر التطبيقات جزء من دورة الحياة التي أغطّيها لا ارتباطٌ منفصل، فمن صمّم نموذج المزامنة هو من يُصدر التطبيق الذي يعتمد عليه.
لمن يُبنى نظام الأعمال فعلاً — للمستخدمين الميدانيين أم للمكتب الخلفي؟
لكليهما، والمكتب الخلفي هو النصف المُهمَل. المندوبون والسائقون والوكلاء هم المستخدمون الظاهرون، لكن القيمة يحقّقها من يُسوّون البضاعة والنقد والاستثناءات — وسيحتاج أحدهم في الأسبوع الأول إلى تقسيم طلب، أو نقل صنف، أو تصحيح توزيع كلفة. وإن كانت تلك القدرة موجودة في قاعدة البيانات فقط، فالشركة تدفع ثمنها كل أسبوع بعدها. أعامل أدوات العمليات كخاصية لها مواصفات، لا كشاشة إدارة تُضاف في النهاية.
تطوير برمجيات مخصّصة — أخبرني بما لديك الآن.
ابدأ محادثة