«خلّينا نبنيه من الصفر» أغلى جملة في عالم البرمجيات — متى تُحدّث نظامك بدلاً من ذلك، والحالة النادرة التي يصحّ فيها أن تبدأ من جديد
النظام الذي يريد الجميع التخلّص منه ما زال يُدير العمل. إعادة بنائه من الصفر تبدو كبدايةٍ جديدة، وهي غالباً التفافٌ يمتدّ سنواتٍ ليعيدك إلى المكان نفسه. تحديثه في مكانه أبطأ في أن يبدو بطوليّاً، وهو الصواب في أغلب الأحيان.
كلّ عملٍ يقوم على برمجيّاتٍ مخصّصة يصل في النهاية إلى الاجتماع نفسه. النظام قديم. قبيحٌ من الداخل. من بناه غادر منذ وظيفتين. كلّ تعديلٍ صغيرٍ يأخذ وقتاً أطول من اللازم، ثمّ يقول أحدهم — عادةً أحدثُ المهندسين وأكثرهم ثقة — الجملة: «بصراحة، إعادة بنائه من الصفر ستكون أسرع». يومئ الجميع، لأنها تبدو صحيحةً بداهةً. القديم فوضى؛ وبدايةٌ نظيفةٌ ستكون أفضل بكثير. تلك الجملة من أغلى ما يمكن أن يقوله أحدٌ في عملٍ برمجيّ، وهي في الغالب خاطئة.
وإليك ما تُغفله خرافة البداية النظيفة: ذلك النظام القديم القبيح قبيحٌ لأنه يعمل. كلّ شرطٍ غريب، وكلّ حالةٍ خاصّةٍ عجيبة، وكلّ سطرٍ لا يذكر أحدٌ كتابته، هو عادةً خطأٌ اكتُشف وأُصلح، أو حالةٌ حديّةٌ اصطدم بها عميلٌ حقيقيٌّ في الثانية صباحاً، أو قاعدةٌ يحتاجها العمل فعلاً لكنها لم تُكتَب قطّ. تلك المعرفة ليست في مستند — إنها في الشيفرة. ارمِ الشيفرة تَرمِ معها المعرفة التي كلّفت غالياً. ثمّ تعود لتكتشف كلّ واحدةٍ من تلك الأخطاء المدفونة بالطريقة البطيئة: في الإنتاج، مع عملاء حقيقيّين، مفاجأةً مؤلمةً تلو الأخرى.
هذه القطعة عن أهمّ قرارٍ ستتّخذه بشأن نظامٍ تملكه أصلاً: أن تُميّز الحالة التي بلغ فيها النظام فعلاً نهاية عمره ووجب استبداله، عن الحالة الأكثر شيوعاً بكثير التي يكون فيها «البناء من الصفر» التفافاً يمتدّ عامين ليعيدك تقريباً إلى حيث بدأت — ناقصاً المال والسنوات. وثمّة بابٌ ثالثٌ لا يراه أكثر من في ذلك الاجتماع: أن تُحدّث الشيء في مكانه، قطعةً قطعة، من دون أن توقفه عن العمل لحظةً. وذلك الباب هو الصواب في أغلب الأحيان.
أشهر صورةٍ لهذا الخطأ لها اسمٌ ملتصقٌ بها. في عام 2000، وهو يراقب نتسكيب تعيد بناء متصفّحها من الأساس، وصف كاتب البرمجيّات جويل سبولسكي القرار بأنه «أسوأ خطأ استراتيجيّ منفرد يمكن لأيّ شركة برمجيّاتٍ أن ترتكبه» [1]. فتحت إعادة البناء فجوةً امتدّت نحو ثلاث سنواتٍ لم تشحن فيها نتسكيب منتجاً منافساً، فابتلع منافسٌ السوق الذي كانت تتصدّره يوماً، ولم تنجُ الشركة فعليّاً من الالتفاف. وحجّته الجوهريّة هي التي تهمّ أيّ صاحب عملٍ لا شركة متصفّحاتٍ فحسب: حين ترمي شيفرةً تعمل وتبدأ من جديد، ليس ثمّة سببٌ خاصٌّ لتصديق أنّ النسخة الثانية ستخرج أفضل من الأولى — وبينما تبنيها، لا تشحن شيئاً للعملاء الذين ما زالوا يدفعون لك.
والسبب الأعمق يعاكس كلّ حَدْس. تلك الشيفرة القديمة تبدو فوضى، لكنها فوضى اختبرها الواقع سنوات. كلّ رقعةٍ قبيحةٍ هي ندبةٌ فوق جرحٍ حقيقيّ — عطبٌ اصطدم به أحدهم، أو حالةٌ حديّةٌ تعثّر بها عميل، أو قاعدةُ ضريبةٍ أو مسارُ استردادٍ أو شذوذُ تقريبٍ يعتمد عليه العمل فعلاً. لا شيء من ذلك مكتوبٌ في مكان؛ يعيش فقط في الأسطر التي توشك أن تحذفها. إعادة البناء لا تنطلق من المواصفة التي بين يديك، بل من مواصفةٍ لم تعد تعرفها كاملةً، لأنّ معظم ما يفعله النظام تُعلِّم بالطريقة الصعبة ولم يُوثَّق قطّ. لذلك تُعيد عمليّات البناء اكتشاف الأخطاء القديمة بانتظام: أنت لا تبني النظام نفسه ثانيةً، بل تُعيد تعلُّمه في الإنتاج.
وحتى حين تحدث إعادة البناء فعلاً، تميل إلى التضخّم. قبل خمسين عاماً سمّى فريد بروكس «تأثير النظام الثاني»: النظام الثاني الذي يصمّمه فريقٌ هو أخطر نظامٍ سيبنيه على الإطلاق، لأنه يظفر أخيراً بإضافة كلّ ميزةٍ ضبط نفسه ليتركها من الأوّل [2]. النظام الأوّل النحيل المركّز — النحيل تحديداً لأنّ بُناته كانوا لا يزالون حَذِرين — يصير نُصباً مُفرِطَ الهندسة لكلّ ما تمنّى الفريق دائماً لو كان لديه. فإعادة البناء ليست متأخّرةً فحسب، بل غالباً أسوأ ممّا استبدلته: أثقل، وأبطأ، ومصوّبةٌ نحو مواصفةِ قائمةِ أمنياتٍ تحرّكت أصلاً بينما كانت تُبنى.
وهذا ليس قلقاً هندسيّاً هامشيّاً — بل حيث يذهب المال أصلاً، وأوضح الأرقام العامّة تأتي من المشتري الوحيد المُلزَم بنشرها. تنفق الحكومة الفدراليّة الأمريكيّة نحو 79٪ من ميزانيّة تقنية المعلومات المخطَّطة — في حدود 83 مليار دولارٍ سنويّاً — على مجرّد تشغيل وصيانة أنظمةٍ قائمةٍ أصلاً، لا على بناء أيّ شيءٍ جديد [3]. بعض تلك الأنظمة يتجاوز عمره خمسين عاماً، مكتوبٌ بلغاتٍ لم يعد أحدٌ يكاد يتعلّمها، وبعضها كان يعمل يوماً على عتادٍ قديمٍ كالأقراص المرنة مقاس 8 بوصات [4]. ومن الأنظمة العشرة الأشدّ حَرَجاً التي رُشِّحت للتحديث عام 2019، أُنجزت ثلاثةٌ فقط بعد ستّ سنوات [4]. الدرس ليس «الحكومة بطيئة»، بل أنّ استبدال نظامٍ حامِلٍ صعبٌ حقّاً، وأنّ الاستبدال الكبير يتعثّر بما يكفي حتى إنّ ميزانيّةً شبه لا محدودةٍ لا تقدر أن تدفعه إلى النهاية، وأنّ عدّاد الصيانة يعمل طوال الوقت الذي تتجادل فيه.
والمخرج ليس «إعادة بناءٍ أو معاناة» — ثمّة مسارٌ ثالث، وله اسمٌ أيضاً. يسمّيه مارتن فاولر «شجرة التين الخانقة»، نسبةً إلى الكرمة التي تنمو حول شجرةٍ وتستبدلها ببطءٍ حتى يزول الأصل [5]. تلفّ النظام القديم بطبقة توجيهٍ رفيعة، وتنقل شريحةً واحدةً من الوظائف كلّ مرّةٍ إلى شيفرةٍ جديدةٍ خلفها، وتُقلّص النظام القديم قطعةً قطعة حتى لا يبقى شيءٌ لتُطفئه [6]. يظلّ النظام يعمل طوال الوقت. وكلّ خطوةٍ صغيرةٌ بما يكفي ليكلّف الخطأ فيها أسبوعاً لا سنة، وكلّ خطوةٍ تشحن شيئاً يستطيع العمل أن يستعمله بدل وعدٍ بأنه سيفعل يوماً. إنه أقلّ بطولةً من إعادة البناء الكبرى وأكثر احتمالاً بكثير لأن يكتمل فعلاً — وهي الصفة الوحيدة التي تهمّ.
لا شيء من هذا يعني «لا تُعِد البناء أبداً». الاستبدال الكامل صائبٌ في مجموعةٍ ضيّقةٍ من الحالات: حين تكون المنصّة تحته ميّتةً فعلاً — غير مدعومةٍ، وغير آمنة، ولا أحد باقٍ يقدر أن يُشغّلها — أو حين لم يعد العمل الذي بُني النظام لأجله موجوداً، أو حين يكون الشيء صغيراً بما يكفي لتكون إعادة بنائه أسابيع عملٍ لا سنوات. والعلامة الصادقة هي المقياس. إعادة بناءٍ تقدر أن تُنهيها قبل أن يتغيّر النظام القديم تحتك هي إعادة بناء؛ أمّا التي تأخذ سنواتٍ فهي رهانٌ ضدّ هدفٍ متحرّك، وستخسره على الأرجح. لأيّ شيءٍ حامِل، الافتراض هو التحديث في المكان — واختياره بتعمّدٍ، وفجوة التعادل وتأثير النظام الثاني على الطاولة، لا في حرارة الاجتماع حين يقول أحدهم إنّ البدء من جديدٍ سيكون أسرع.
النظام القديم عبءٌ لا أصل. بطيء التغيير، لا أحد يفهمه، يجلس على أسسٍ تتهاوى من تحتك، وكلّ شهرٍ تُبقيه فيه تدفع فائدةً من سرعةٍ ضائعةٍ وخطرٍ متراكم. إعادة بناءٍ نظيفةٍ على أساسٍ حديث، تُنجَز صحيحةً هذه المرّة، أسرعُ في العمل عليها إلى الأبد بعد ذلك — والأبد وقتٌ طويل. كُفّ عن سكب المال في قطعة متحفٍ لا يقدر أحدٌ أن يلمسها بأمان. انزع اللصقة، وأعِد بناءه صحيحاً، ولا تعتذر عن رغبتك في أساسٍ تقدر أن تبني عليه فعلاً. التحديث التدريجيّ مجرّد موتٍ بطيءٍ مع عبء إدارة مشاريع إضافيّ.
النظام العامل أصلٌ دفعتَ ثمنه سلفاً، وقبحه معرفةٌ مُرمَّزة لا هدر. إعادة البناء تأخذ دائماً أطول ممّا وُعِد، ولا تشحن شيئاً لعملاء حقيقيّين سنوات، وتصل إلى مواصفةٍ تحرّكت أصلاً بينما كنت منكبّاً على بنائها. لا دليل على أنّ النسخة الثانية تخرج أفضل، وكلّ سببٍ — وتأثير النظام الثاني في مقدّمته — لتوقُّع أن تُعيد أخطاء النسخة الأولى وتخترع أخطاءً جديدة. أبقِ النظام، وأصلِح ما يؤلم فعلاً، وحصِّن الأجزاء الخطِرة، وكُفّ عن تحبيب الصفحة البيضاء. الصفحة البيضاء حيث تذهب المشاريع لتموت.
كلا المعسكرين أعلاه يجيبان عن سؤالٍ لم يكن على أحدٍ أن يطرحه. لم يكن الأمر قطّ «إعادة بناءٍ أو معاناة». لُفّ النظام القديم، ووجِّه شريحةً واحدةً من الوظائف كلّ مرّةٍ إلى شيفرةٍ جديدةٍ خلفها، وأبقِ الشيء كلّه يعمل ويشحن قيمةً عند كلّ خطوة — حتى تزول الشيفرة القديمة من دون يوم تبديلٍ كبيرٍ واحد. تحصل على الأساس الحديث الذي يريده المعسكر أ وعلى الأمان الذي يصرّ عليه المعسكر ب، ناقصاً النفق المظلم الممتدّ سنواتٍ الذي لا يقدر أيٌّ منهما أن يُلاشيه. المقصد ليس أيّ طرفٍ يكسب الجدال، بل أنّ للجدال باباً ثالثاً طوال الوقت.
المعسكر ج افتراضاً، والمعسكر ب خطَّ الأساس الصادق، والمعسكر أ فقط حين تقدر أن تُثبت أنّ إعادة البناء صغيرةٌ أو أنّ المنصّة تحته ميّتةٌ فعلاً. غريزةُ البدء من جديدٍ هي في الغالب نشوةُ الصفحة البيضاء تتكلّم، لا الحساب — والحساب، حالما ترسم فجوة التعادل، نادراً ما ينجو من المحادثة. نظامٌ حامِلٌ يُدير عملك ينبغي أن يُحدَّث في مكانه، بشرائح صغيرةٍ بما يكفي لتكلّف أيّ واحدةٍ خاطئةٍ منها أسبوعاً لا سنة. نمدّ أيدينا إلى إعادة بناءٍ كاملةٍ فقط حين نقدر أن نُنهيها قبل أن يتحرّك النظام القديم تحتنا — ونقول بصوتٍ مسموعٍ في أيّ حالةٍ أنت فعلاً، قبل أن يقع أحدٌ في الغرفة في حبّ البداية النظيفة.
- 01كيف تُميّز نظاماً بلغ فعلاً نهاية عمره — منصّةٌ ميّتة، لا أحد باقٍ يقدر أن يُشغّلها — عن نظامٍ قبيحٍ وغير محبوبٍ فحسب لكنه ما زال يؤدّي عمله بهدوء؟
- 02إن كانت معظم معرفة العمل تعيش في الشيفرة القديمة لا في أيّ مستند، فكيف تلتقطها قبل أن تلمس شيئاً — ومن مهمّته تلك الحفريّات غير البرّاقة؟
- 03ما الطريقة الصادقة لتسعير إعادة بناءٍ بحيث تنجو دعوى «ستكون أسرع» من الاصطدام بفجوة التعادل — الأشهر التي تُصرَف لمجرّد العودة إلى ما لديك أصلاً؟
- 04حين تُحدّث في المكان، كيف تُبقي النصفين القديم والجديد متزامنين عبر السنوات التي يعملان فيها جنباً إلى جنب، من دون أن يتصلّب الشقّ بينهما إلى نظامٍ دائمٍ مستقلٍّ بذاته؟
- 05من ينبغي أن يملك قرار الاختيار بين إعادة البناء والتحديث — المهندسون الذين سيؤدّون العمل ويريدون البداية النظيفة، أم المشغّلون الذين يحملون الخطر إن انطفأ يوم التبديل؟
- [1]جويل سبولسكي — "Things You Should Never Do, Part I" (Joel on Software، 2000): إعادة البناء من الصفر «أسوأ خطأ استراتيجيّ منفرد يمكن لأيّ شركة برمجيّاتٍ أن ترتكبه»؛ وإعادة بناء نتسكيب فتحت فجوةً نحو 3 سنواتٍ بلا منتجٍ منافس.
- [2]تأثير النظام الثاني — فريد بروكس، The Mythical Man-Month (1975): النظام الثاني الذي يصمّمه المهندس هو الأخطر، متضخّماً بكلّ ميزةٍ كبحها عن الأوّل.
- [3]مكتب المحاسبة الحكوميّ الأمريكيّ (GAO) — GAO-25-107795 (2025): نحو 79٪ من إنفاق تقنية المعلومات الفدراليّ المخطَّط (~83 مليار دولار) يذهب إلى تشغيل وصيانة الأنظمة القائمة، لا إلى تطويرٍ جديد.
- [4]GAO — "Federal Agencies Need to Address Aging Legacy Systems" (GAO-16-696T وما تلاه): أنظمةٌ يتجاوز عمرها 50 عاماً بلغاتٍ وعتادٍ متقادمٍ (منها أقراصٌ مرنةٌ مقاس 8 بوصات)؛ ومن 10 أنظمةٍ حَرِجةٍ رُشِّحت للتحديث عام 2019 أُنجزت 3 فقط بحلول 2025.
- [5]مارتن فاولر — "StranglerFigApplication": نمط التحديث التدريجيّ الذي يستبدل نظاماً قديماً قطعةً قطعة، متجنّباً إعادة بناءٍ كبرى محفوفةً بالخطر.
- [6]Microsoft Learn — Azure Architecture Center، "Strangler Fig pattern": ترحيلٌ تدريجيٌّ لنظامٍ قديمٍ خلف طبقة توجيه/واجهة، مع استبدال الميزات واحدةً تلو الأخرى بينما يبقى النظام في الخدمة.
قبل أن تُعيد البناء من الصفر، دعنا نرسم مسار التحديث في المكان — فهو يفوز عادةً.
دافع البدء من جديدٍ أغلى دائماً ممّا يبدو. نساعدك على أن تُميّز نظاماً بلغ فعلاً نهاية عمره عن نظامٍ يحتاج فقط إلى تحديثٍ بالشرائح — يبقى حيّاً، ويشحن قيمةً عند كلّ خطوة، بلا نفقٍ مظلمٍ يمتدّ سنوات. خمس عشرة دقيقةً لاختبار قرار إعادة البناء مقابل التحديث قبل أن تلتزم بعامٍ كامل.
احجز استشارة مجّانيّة 15 دقيقة