أيّ منهجية تطوير تصمد أمام الذكاء الاصطناعي

ما نطبّقه بدلًا منها، والكلفة التي تسوّغ كل خطوة

كل منهجية عملت بها — سكرم، والاختبار أولًا، والتصميم الموجَّه بالمجال — وُضعت لعالمٍ كان إنتاج النسخة الأولى فيه مكلفًا، ولم يعد كذلك. والردّ الشائع هو «سكرم، لكن أسرع»، فيبقى الفريق يؤدّي طقوسًا زال سببها.

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

تغيّر الثمن

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

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

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

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

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

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

ثم انهار الثمن. فالجولة الكاملة — تعريف، ومعمارية، وشيفرة، وتحقّق — تكتمل الآن في ساعات، بحجم ميزة واحدة.

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

السرعة كانت التغيير الأول، وجاء معها اثنان.

السرعة وحدها تجعل المنهجية القائمة تعمل أسرع، أما التغييران الكامنان تحتها فهما اللذان يغيّران المنهجية نفسها.

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

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

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

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

المنهجية: ثلاث مراحل، لكلّ واحدة حلقتها

المراحل هي نفسها في كل منهجية. والذي تغيّر أن الجولة تكتمل في ساعات، وأن المواصفات لا تتجمّد أبدًا.

التعريف: ارسمها خاطئةً عن قصد

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

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

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

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

يُنتج التعريف مواصفتين، تُحفظان منفصلتين لأن لكلٍّ منهما دورة حياة مستقلّة.

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

المواصفة التقنية — المعمارية. الحدود، والتعريفات، والمكوّنات، وكيف تتواصل.

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

المعمارية: العقد الذي يتيح للميزة التالية أن توجد

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

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

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

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

التكرار، ثم تموت الشاشات

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

والمواصفتان تتغيّران كلما تغيّر المنتج. فالمواصفة المجمّدة ذاكرةٌ مؤقتة، والذاكرة المؤقتة تكذب.

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

الواقع هو مصدر الحقيقة. لا تخزّن أبدًا ما يمكن قراءته مباشرة.

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

ما ثمن الخطأ في هذا

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

طبّقناها حتى الآن على منتجين هما على أبعد ما يكون أحدهما عن الآخر: suctl، أداة تشغيل بسطر الأوامر، وacp-patchbay، امتداد لمحرّر الشيفرة. والمسار نفسه في كليهما. وقد صدر acp-patchbay في خمسة أيام. فالمنهجية التي تنجح على منتج واحد ربما صادفت مجالًا سهلًا، أما نجاحها على منتجين لا يكاد يجمعهما شيء فهو ما يرجّح أن الفضل للمنهجية.

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

وكلتاهما مفتوحة المصدر.

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

أيّ أجزاء من عمليتك ما زالت تدفع ثمنًا لم يعد موجودًا؟

شارك هذا المنشور
علامات التصنيف
الأرشيف
لا أحد يختم المخططات
في البرمجيات، الذكاء الاصطناعي مقاول بارع — والسؤال هو: من يختم المخططات؟