قبل مدة قصيرة شاهدتُ فيديو لمحاضرة بقي في ذهني طويلًا على غير العادة. كانت محاضرة في Prodacity 2026 لـ Kent Beck، الذي ابتكر Extreme Programming ونشر TDD على نطاق واسع، وعنوانها «Software Engineering in the Age of AI». وكانت تطرح سؤالًا: ما معنى أن نُحسن صنع البرمجيات في وقت يكتب فيه الذكاء الاصطناعي جزءًا كبيرًا من الكود؟ وأكثر ما شدّني في هذه المحاضرة التي تزيد قليلًا على ٥٢ دقيقة كلمتان، وحكاية قصيرة عن عازف تشيلو.
شرح Kent Beck تطوير البرمجيات بمحورين: features وfutures. الأول هو الميزات التي نبنيها، والثاني هو الخيارات التي نملكها لتغيير هذه البرمجيات في المستقبل، أي هامش التغيير (optionality). وبحسب شرحه، يبدأ المشروع بلا أي ميزة لكن بإمكانات لا حدود لها، ومع كل ميزة نبنيها تتناقص الـ futures. وخلاصة كلامه أننا إذا واصلنا مراكمة الميزات وحدها، فسننتهي إلى برمجية ميتة يصعب أن نمسّ فيها أي شيء، وقد صارت قيمة الـ futures صفرًا.
من زاوية ما، هذا ما كنتُ قد لمسته بنفسي طوال سنوات عملي مهندسًا: أنّ إعادة هيكلة الكود مهمة. كنتُ أعيد هيكلة ما يمكن تحسينه حتى في أثناء بناء الميزات، وإذا بقي لي وقت قصير قبل البدء في الميزة التالية، كنتُ أعدّه هو أيضًا وقتًا لإعادة الهيكلة. لكن خطر لي أنني كنتُ أفوّت «وقت إعادة الهيكلة» منذ اللحظة التي بدأتُ فيها أطلب من الذكاء الاصطناعي أن يكتب الكود كله من أوله إلى آخره. حين أبني ميزة، أضع في حسابي أكثر من harness (أدوات تضبط عمل الذكاء الاصطناعي، مثل الاختبارات والـ lint والـ hooks والـ prompts التي تحدّد القيود، ووكلاء التحقق)، لكنني وجدتُ نفسي لا أخصّص «عملًا لإعادة الهيكلة وحدها».
ولقي ما قاله Kent Beck بعد ذلك صدًى كبيرًا عندي أيضًا، ومعناه: «في الماضي كان الأمر يحتاج إلى ١٠٠ شخص و١٠ سنوات حتى تصل futures إلى الصفر، أما الآن فبفضل الذكاء الاصطناعي يستطيع شخص واحد أن يصنع فوضى كاملة في أسبوع واحد». لا أستطيع أن أروي هنا كل ما جرى، لكنني طوال المحاضرة كنتُ أرى ما واجهتُه في تلك المرحلة من تجارب وأخطاء يظهر تباعًا فوق رسم Kent Beck. وحين أنظر إلى الوراء، يبدو لي أنني نسيتُ تمامًا كم هو مهم الـ cool down بين ميزة وأخرى.
وحين شرح Kent Beck البديل، روى حكاية عازف التشيلو بابلو كاسالس (Pablo Casals). قال إنه سمعها في شبابه، حين كان طالبًا في كلية الموسيقى يتخصص في الغيتار الكلاسيكي. والتشيلو آلة يحتاج عزفها إلى جهد بدني كبير، ويُروى أنّ إحدى المقطوعات التي كان كاسالس يعزفها فيها مقطع تتوالى فيه نوتات الدوبل كروش بلا نهاية. وحين سأله أحدهم إن كان عزف كل نوتات الدوبل كروش تلك لا يتعبه، أجاب كاسالس: «لا، أنا أرتاح بين النوتات.» لكن يُقال إنّ كاسالس في الواقع لم يقل هذا الكلام قط، وإنّ الحكاية مختلقة. ومع ذلك أضاف Kent Beck أنها حكاية جميلة جدًا، فلا يملك إلا أن يرويها.
ومع أنها حكاية مختلقة، فقد جعلني الحديث عن الراحة بين النوتات أفكّر من جديد في «الوقت الذي نهيّئ فيه أيدينا وأنفاسنا لنعزف النوتة التالية بدقة»، وفي أنّ «وقت الترتيب» هذا لازم على الأرجح حتى في العمل مع الذكاء الاصطناعي بإيقاعه السريع. وقد كان «وقت إعادة الهيكلة» الذي كتبتُ عنه قبل قليل هو بالضبط هذا الفاصل بين النوتات. كل مطوّر يعرف هذا الأساس: لا نبني برمجيات مرنة وقابلة للتوسّع إلا إذا كان بين ميزة وأخرى ترتيب. لكن يبدو لي أنّ هذه الأيام، والميزات تتدفّق علينا، هي بالذات الوقت الذي نحتاج فيه إلى التمسّك بهذا الأساس من جديد. وكما كان كاسالس يرتاح حتى بين نوتات الدوبل كروش التي لا تنتهي، ألا ينبغي أن يكون بين الـ features التي نطوّرها بسرعة ترتيبٌ يشمل إعادة الهيكلة وحالات الاختبار؟ والتشبيه الذي استخدمه Kent Beck وصلني هو أيضًا على الفور: «لا يمكنك أن تمسح السكين وأنت تقطّع، لكن عليك أن تمسحها».
لم تكن آثار الركض بلا ترتيب في الكود وحده. كانت باقية كما هي في جهاز MacBook الخاص بي أيضًا. وحين انتهت الأعمال التي ظلّت تتلاحق مدةً، وصار لديّ وقت فراغ قصير، رأيتُ أشياء لا تُرى إلا حين نرفع أيدينا عن العمل. كانت git worktrees وحاويات قواعد البيانات التي لم يتسنَّ لي ترتيبها متراكمة هنا وهناك، ومساحة التخزين المتبقية تقترب من النفاد. لو قفزتُ مباشرة إلى العمل التالي، لربما وصلت المساحة في لحظة ما إلى الصفر وتوقف كل شيء. ولم يستعد الـ MacBook متّسعًا لاستقبال العمل التالي إلا بعد أن حذفتُ ما تراكم واحدًا تلو الآخر. وكأنّ جهازي استعاد هو الآخر قليلًا من الـ futures الخاصة به.
قبل مدة قصيرة زرتُ مع عائلتي جزيرة جيجو. وأطول ما بقي معي من الرحلة شروق الشمس الذي استقبلناه في سوغويبو. أحببتُ كثيرًا ذلك الوقت الذي استيقظنا فيه باكرًا ورحنا ننظر إلى الشمس وهي تشرق. كانت غيوم صغيرة كالحراشف تملأ السماء، وراحت تتلوّن بالبرتقالي من الأسفل، والشمس تطلّ شيئًا فشيئًا من وراء ظلال النخيل.
والعجيب أنّ أجواء الصباح في عائلتنا تغيّرت بين ليلة وضحاها بعد عودتنا من الرحلة. فقد صار الاستيقاظ باكرًا وبدء يومنا هو إيقاع بيتنا من دون أن ننتبه، وبفضل ذلك أشعر أنّ أجسامنا تزداد صحةً شيئًا فشيئًا. كأنّ تلك الرحلة كانت لعائلتنا ترتيبًا بين النوتات. وحين أفكر في الأمر، يبدو لي أنّ حياتنا لا تختلف كثيرًا عن البرمجيات. في العمل كما في رعاية طفلتنا، تمضي الأيام مندفعةً نحو الـ feature التالية. ومن دون ترتيب بينها، ألا تحترق futures الحياة هي الأخرى شيئًا فشيئًا؟