من المقالع والمنشآت الصناعية إلى بناء البرمجيات: دروس من الميدان

نشأت بين الكسارات والأحزمة الناقلة والموازين. علمتني عن بناء البرمجيات أكثر مما علمني أي تكوين.

من العمليات الصناعية إلى البرمجيات

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

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

الخلاصة

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

Table of Contents

كيف تبدو محطة التكسير من الداخل

لمن لم يقف يوماً بجانب محطة تكسير، يفيد وصف قصير.

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

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

الدرس الأول: الخط يشتغل بسرعة أبطأ مرحلة فيه

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

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

الدرس الثاني: المدخلات تتغير، والنظام يجب أن يتحمل ذلك

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

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

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

الدرس الثالث: تسجيل البيانات لحظة الحدث المادي

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

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

لهذا يبدأ الانتقال من العمليات الصناعية إلى البرمجيات بسؤال واحد: أين توجد لحظات الحقيقة في هذا المشروع، وكيف نسجلها من مصدرها؟

الدرس الرابع: الأكوام مخزون احتياطي، والمخزون حالة

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

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

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

من العمليات الصناعية إلى البرمجيات

الدرس الخامس: الآلات تُستهلك، والصيانة جزء من النظام

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

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

الدرس السادس: العطل أمر عادي، فصمّم من أجله

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

كل انتقال من العمليات الصناعية إلى البرمجيات يجب أن يُبنى على هذا التوقع. بعض المبادئ التي أطبقها:

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

الدرس السابع: المواصفات قواعد، والقواعد مكانها داخل النظام

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

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

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

الدرس الثامن: الناس يشغّلون النظام، في ظروف حقيقية

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

الانتقال من العمليات الصناعية إلى البرمجيات يعني التصميم لهذه الظروف. والبرنامج الذي يتجاهلها يتجاهله الناس بدورهم. لذلك أصمم شاشات الميدان وهذا الواقع أمامي:

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

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

نموذج بيانات ينطلق من الأرض

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

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

التقارير ولوحات القيادة والفواتير تُحسب بعد ذلك من هذه السجلات. إنها مخرجات، لا مدخلات. وهذا الترتيب في التفكير، من الحدث المادي إلى السجل ثم إلى التقرير، هو قلب الانتقال الجيد من العمليات الصناعية إلى البرمجيات.

ما علمني إياه المقلع عن الناس والقرارات

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

في تلك اللحظات، لا أحد يفتح دليلاً مكتوباً. الناس يعتمدون على تجربتهم، وعلى ما تعلموه من الأعطال السابقة، وعلى ثقتهم ببعضهم. والنظام الجيد يحترم هذه التجربة ولا يحاول تعويضها، بل يحفظها ويجعلها متاحة لمن يأتي بعدهم.

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

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

لائحة مراجعة للانتقال من العمليات الصناعية إلى البرمجيات

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

  1. أين لحظات الحقيقة؟ اكتب لائحة الأحداث المادية التي تنتج معلومات: الوزن، التحميل، الاستلام، الإنتاج، التوقف.
  2. من يرى كل حدث وهو يقع؟ الشخص أو الجهاز الأقرب إلى الحدث هو من يجب أن يسجله.
  3. ما أبطأ مرحلة؟ قِسها قبل تصميم أي شيء آخر.
  4. ما الذي يتغير؟ المادة الأولية، والزبائن، والوثائق، والطقس. كل تغير يحتاج قاعدة أو مساراً للاستثناء.
  5. ما الذي يتعطل، وكم مرة؟ التوقفات، وانقطاع الشبكة، وغياب الموظفين. كل عطل يحتاج مساراً للعودة.
  6. ما ظروف الاستعمال؟ الغبار، والقفازات، والشمس، والضجيج، والإشارة. يجب تصميم الشاشات لها.
  7. ما المخرجات المهمة؟ وصولات التسليم، والفواتير، والمخزون، والتقارير. كلها تُحسب من السجلات، ولا تُدخل بشكل منفصل أبداً.

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

صباح عادي عند الميزان

لكي تتضح الفكرة، أصف صباحاً عادياً عند ميزان الشاحنات كما يتكرر في كثير من المواقع. هذا وصف توضيحي، لا يخص موقعاً بعينه.

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

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

ما يميز الميدان المغربي

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

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

الأخطاء الشائعة

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

أين تظهر هذه الدروس اليوم

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

أسئلة حول الانتقال من العمليات الصناعية إلى البرمجيات

ماذا يمكن أن يتعلم تصميم البرمجيات من العمليات الصناعية؟

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

لماذا يجب تسجيل البيانات لحظة الحدث المادي؟

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

لماذا يُمثَّل المخزون كحركات؟

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

كيف يتعامل برنامج الميدان مع ضعف الشبكة؟

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

هل كنت عاملاً في المقلع؟

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

للمزيد

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

أفكار

مذكرات أخرى

كل المذكرات