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

نادراً ما تبقى التغيير "الصغير" صغيرًا. تطلب تعديل تسمية زر واحد، وفجأة يتغير تخطيط الصفحة، أو يتوقف استيفاء النموذج عن العمل، أو يتغير سلوك خطوة الدفع. التطبيقات أنظمة مترابطة. واجهة المستخدم، المنطق، البيانات، والتكاملات تعتمد على بعضها البعض.
سبب متكرر هو الحدود غير الواضحة. إذا طلبت "تبسيط التسجيل"، فالمنفّذ (بشرًا أو ذكاءً اصطناعيًا) سيضطر إلى التخمين ماذا يعني "تبسيط". التخمين يؤدي إلى تعديلات إضافية: إزالة حقول، تغيير خطوات، تعديل النص، أو إعادة كتابة التحقق. سبب آخر هو التبعيات المخفية. قد يعيد تغيير واجهة المستخدم استخدام مكوّن يظهر في خمس شاشات أخرى.
التكرار الآمن يعني أنك تحصل على التحسين المقصود بينما يبقى كل شيء آخر مطابقًا عمليًا. للفريق غير التقني، هذا يعني أن سير العمل لا يزال يبدو نفسه للمستخدمين، وأن نصوص الدعم لا تزال تتطابق مع المنتج، وأن التقارير ما تزال منطقية. للفريق التقني، يعني ألا تحدث تغييرات غير متوقعة في المسارات، أشكال البيانات، عقود الـ API، أو سلوك حالات الحافة.
لجعل ذلك ممكنًا، عليك تجميد ما يجب ألا يتحرك. عمليًا، يشمل ذلك عادةً التدفقات الحرجة (الخطوات الدقيقة التي يمر بها المستخدمون)، تفاصيل UI/UX (التخطيط، التباعد، سلوك التفاعل)، قواعد العمل (التسعير، الأذونات، التحقق)، سلوك البيانات (ما يُخزن ومتى)، والتكاملات (حوادث التحليلات، الإيميلات، المدفوعات، APIs الخارجية).
نمط المطالبة "لا تغيّر" يقلّل المخاطر بإزالة التخمين والحفاظ على نطاق التغيير. ليس ضمانًا مطلقًا. قد يحدث انحراف إذا كان السلوك الأصلي سيئ التعريف، أو إذا لمس التغيير مكونات مشتركة، أو إذا لم تتحقق من النتيجة. الهدف هو مفاجآت أقل وموافقات أسرع.
نمط "لا تغيّر" هو طريقة بسيطة لطلب تحديث واحد محدد مع تجميد واضح لكل شيء آخر. تسمي التغيير الواحد الذي تريده، ثم تكتب قائمة تجميد قصيرة للأجزاء التي يجب أن تبقى متطابقة بعد التحديث.
هذا مهم لأن النماذج غالبًا ما تحاول "المساعدة" عبر إعادة الهيكلة، إعادة التسمية، تنظيم الملفات، أو "تنظيف" المنطق أثناء التعامل مع الشيفرة. حتى لو بقي الناتج يعمل، تلك التغييرات الإضافية يمكن أن تدخل أخطاء، تغيّر السلوك، أو تصعّب المراجعات.
قارن هذين الطلبين:
“حسّن صفحة الإعدادات.” هذا يدعو لتغييرات تصميم، نسخ جديدة، تغيّر التخطيط، وتعديلات منطقية.
"غيّر نص التسمية فقط من 'الهاتف' إلى 'الهاتف المحمول'. لا تغيّر التخطيط، أو التحقق، أو سلوك الحفظ." هذا ضيّق، قابل للاختبار، وأكثر أمانًا.
قائمة تجميد جيدة عادةً تغطي ثلاث مناطق:
عند استخدام هذا النمط في أداة بناء مستندة إلى الدردشة مثل Koder.ai، تميل التكرارات إلى أن تكون أسرع لأن النموذج يركّز على التعديل الواحد بدلاً من إجراء "تحسينات" واسعة لم تطلبها.
ينجح هذا النمط عندما تقرأ طلبك كأنه عقد صغير: هدف واضح واحد، قائمة مجمّدة لما يجب أن يظل متطابقًا، وعدّة فحوصات لتأكيد النتيجة.
انسخ هذا القالب واملأ القوسين. اجعله قصيرًا لكن محددًا.
Goal (one sentence):
- Change: [describe the one small change you want]
Context (1-3 sentences):
- Current behavior: [what happens today]
- Desired behavior: [what should happen after]
DO NOT CHANGE (must remain identical):
- Critical flows: [e.g., sign up -> checkout -> receipt stays the same]
- UI/UX that must not move: [e.g., button location, labels, navigation order]
- Business rules: [e.g., pricing, permissions, validation rules]
- Data behavior: [e.g., database schema, stored fields, migration rules]
Constraints (limit drift):
- Scope: [only this screen / only this endpoint / only this component]
- Files/modules (if known): [list a couple, or say “only touch what’s necessary”]
- No refactors: do not rename, reorganize folders, or change formatting beyond the touched lines
Acceptance checks (how I will verify):
1) [a simple before/after check]
2) [a user path that must still work]
3) [a rule that must still hold]
Output requested:
- Provide a brief diff-style summary: what changed, where, and why
- Call out any risk or unclear requirement before implementing
(محتوى الكتلة أعلاه يجب ألا يُترجم داخل سياق الشيفرة.)
مثال ملموس: إذا أردت تغيير لون زر الدفع، هدفك هو "تحديث لون زر الدفع الأساسي إلى #1A73E8." عناصر "لا تغيّر" يجب أن تجمّد كامل مسار الدفع، نص الزر، وحساب التسعير.
إذا كنت تستخدم Koder.ai، يجعل هذا التنسيق المراجعات أسرع لأنك تستطيع مقارنة فحوصات القبول مع المعاينة وملخص التغيير قبل الموافقة.
عندما تطلب تغييرًا صغيرًا، لا تقل ببساطة "لا تكسر أي شيء." سمِ رحلات المستخدم الدقيقة التي يجب أن تبقى كما هي، من النقرة الأولى حتى النتيجة النهائية. أنت لا تجمّد التطبيق كله، بل تجمّد الأجزاء التي تسبب الانحراف بها أذى حقيقي.
ابدأ بسرد التدفقات الحرجة بلغة بسيطة: تسجيل الدخول (بما في ذلك إعادة تعيين كلمة المرور)، الإعداد، الدفع، الإعدادات. لكل تدفق، اذكر ماذا يعني "تم". مثال: "يمكن للمستخدم تسجيل الدخول بالبريد الإلكتروني + كلمة المرور، الهبوط على لوحة القيادة، والبقاء مسجلاً بعد التحديث."
ثم ثبّت حالات الحافة التي ينسى الناس عادةً. سلوك زر الرجوع مصدر كلاسيكي للانحراف: "العودة من صفحة الدفع تعيد إلى سلة التسوق (وليس الصفحة الرئيسية)، وتبقى عناصر السلة." حدّد حالات الخطأ ("كلمة المرور خاطئة تظهر نفس الرسالة"), الحالات الفارغة ("لا مشاريع تُظهر نفس نص الشاشة الفارغة"), وحالات التحميل ("يظهر مؤشر التحميل خلال 200ms، دون قفزة في التخطيط").
إذا كانت توقعات الأداء والأمان مهمة، فنجمّدها أيضًا. إذا لم تذكرها، قد يحاول النموذج "تحسين" الأمور بإضافة طلبات إضافية، تسجيلات جديدة، أو تغيير فحوصات المصادقة.
طريقة ضيّقة لتحديد ذلك دون كتابة رواية طويلة:
كن محددًا بشأن تدفق البيانات في جملة واحدة لكل بند. على سبيل المثال: "يُحفظ العنوان فقط بعد الضغط على حفظ، مخزّن في سجل ملف المستخدم، ويستمر بعد تسجيل الخروج/تسجيل الدخول." ذلك يمنع الحفظ التلقائي العرضي، أو حقول جديدة، أو تغييرات توقيت تكسر المستخدمين الحقيقيين.
انحراف واجهة المستخدم يحدث عادة لأن النموذج "يصلّح" الأنماط أو بنية المكونات. العلاج هو نفسه كما مع منطق العمل: سمِ ما يجب أن يبقى مطابقًا، وسمِ الشيء الواحد المسموح بتغييره.
ثبّت البنية المرئية. اذكر التخطيط (أعمدة/صفوف، موضع الرأس والتذييل)، قواعد التباعد (حواشي، الفجوات، المحاذاة)، وسلوك المكونات (حالة hover، المعطّلة، مؤشرات التحميل، رسائل الخطأ). إذا كان للمكوّن إحساس محدد، قل ذلك بصراحة: "حجم الزر، نصف القطر، واللون يجب أن تبقى كما هي بالضبط."
سلوك الاستجابة (responsive) يحتاج قواعد صريحة. إذا لم تذكر الجوال، قد "يحسّن"ه النموذج. حدّد نقاط الانكسار (breakpoints) التي تهتم بها وماذا يجب أن يحدث عند كلٍ منها: ترتيب التكديس، العناصر المخفية، الأشرطة الثابتة، وأهداف اللمس.
وجمّد الكلمات أيضًا. أخبر النموذج أن كل النصوص، التسميات، النماذج المساعدة يجب أن تبقى كما هي، باستثناء السلسلة الوحيدة التي تعدّلها. هذا يمنع إعادة كتابات صامتة تغيّر المعنى.
موجز يمكنك لصقه في طلب التغيير:
إذا أمكن، اطلب لقطات قبل/بعد. إذا لم تكن متاحة، اطلب وصف "diff واجهة" قصير (ما الذي تحرك، ما الذي تغير حجمه، ما الذي تغير لونه) لكي توافق بثقة.
قواعد العمل من أسهل الأماكن حيث يؤدّي تعديل بصري صغير إلى تراجع هادئ. قد تغيّر تسمية عرضية حسابًا، انتقال حالة، أو من يستطيع رؤية سجلًا. اعتبر القواعد وسلوك البيانات عقودًا مجمّدة.
ابدأ بتسمية القواعد القليلة التي ستؤذي إذا تغيّرت. اكتبها مثل الاختبارات: المدخلات، المخرجات، ومن المسموح له القيام بما.
بدلاً من "احتفظ بالتسعير كما هو"، حدده:
أضف مثالًا رقميًا واحدًا لإزالة التفسير. على سبيل المثال: "مجموع الطلب الفرعي $120، خصم 10% (يُطبق قبل الضريبة)، الضريبة 8.25% على المبلغ بعد الخصم. المجموع المتوقع = (120 - 12) * 1.0825 = $116.91. التقريب إلى منزلتين عشريتين فقط على المجموع النهائي."
أشر إلى رؤية الأدوار، ليس فقط الإجراءات. مثال: "وكلاء الدعم يمكنهم رؤية حالة الطلب وبريد العميل، لكن يجب ألا يروا تفاصيل البطاقة الكاملة. فقط المشرفون يمكنهم تنفيذ رد الأموال."
إذا كانت قواعد التحقق مهمة، جمدها صراحة. اذكر المشغّل ونص الرسالة الموجه للمستخدم: "إذا كان تاريخ البداية بعد تاريخ الانتهاء، احظر الحفظ وأظهر: 'يجب أن يكون تاريخ الانتهاء بعد تاريخ البداية.' لا تغير هذه الصياغة."
لا تنسَ التأثيرات الجانبية خارج التطبيق. إذا كنت ترسل إيميلات، webhooks، أو تستدعي APIs طرف ثالث، جمد ما يجب أن يبقى كما هو: أسماء الأحداث، حقول الحمولة، التوقيت (فوري مقابل مؤجل)، وسلوك التكرار الآمن (no duplicate sends on retry).
عامل التعديل الصغير كعقد مصغر. النمط يعمل أفضل عندما يكون التغيير ضيقًا وكل شيء آخر مجمّد صراحة.
اكتب التغيير كجملة واحدة قابلة للاختبار. "في صفحة الإعدادات، أضف مفتاح تبديل لتمكين الوضع الداكن" يمكن اختباره. "حسّن واجهة الإعدادات" ليست كذلك. إذا لم تستطع اختباره في 30 ثانية، فذلك ما يزال واسعًا جدًا.
اكتب قائمة تجميد للأجزاء التي ستؤذي إذا تغيّرت: تدفق المستخدم، عناصر واجهة المستخدم الأساسية، قواعد العمل، سلوك البيانات، وأي APIs أو جداول قاعدة بيانات يجب أن تبقى كما هي.
أضف فحوصات قبول وخطة اختبار سريعة. هنا تمنع "يعمل على جانبي" المفاجآت. أضف فحوصات مثل: يظهر المفتاح الجديد، إعدادات موجودة ما تزال تحفظ، ولا يتحرّك شيء آخر في الصفحة.
قبل أن يبدأ أي تعديل، اطلب من المساعد أن يكرر قيودك بصيغة بسيطة. اجعله يؤكد ما سيتغير وما سيبقى متطابقًا. إن كان الملخّص غير صحيح، صحح المطالبة قبل السماح بالتغييرات.
اطلب أصغر تنفيذ ممكن: لا إعادة هيكلة، لا إعادة تسمية، لا تغييرات تنسيقية تتجاوز الأسطر المطلوبة، لا ترقيات تبعيات. أنت تشتري تغييرًا واحدًا، لا إعادة تصميم.
قائمة مراجعة سريعة للمراجعة:
هذا يعمل بشكل جيد داخل Koder.ai: ألصق قائمة التجميد في وضع التخطيط، اجعله يصدّق القيود، ثم ولّد أصغر تصحيح.
معظم التعديلات "الصغيرة" تفشل لنفس السبب: الطلب يحمي الهدف، لكنه لا يحمي السلوك. يمكن للنموذج أن يحقق هدفك بطريقة جديدة تغيّر الشاشات أو المنطق أو البيانات بصمت.
فخ شائع هو تجميد النتيجة ("اجعل الإعداد سلسًا") بدل تجميد خطوات المستخدم الدقيقة. آخر هو كتابة "احتفظ بكل شيء كما هو" وافتراض أن النظام يعرف ماذا يعني ذلك.
الأخطاء التي تسبب الانحراف غالبًا:
مثال صغير: تطلب "جعل الزر أكثر وضوحًا" وتجمّد اللون، لكن تنسَ تجميد حالة المعطّل. قد يجعل التحديث الزر مفعلًا دائمًا، فيغيّر السلوك بطريقة لا تلاحظها إلا لاحقًا.
ما يساعد هو تحديد ما لا يجب أن يتحرك بدقة. قبل قبول التحديث، قم بتمرير تراجع سريع:
إذا اختلف أي منها، فالمطالبة كانت ناقصة في بند مجمّد، وليس "سيئة كتابة" من جهة الشيفرة.
تكرار آمن شائع هو تنقية واجهة صغيرة حيث لا يمكن لتدفق العمل أن يتغير.
السيناريو: لدى المؤسس شاشة تسجيل بسيطة بها نموذج قصير (الاسم، البريد، حجم الشركة) وزر أساسي يرسل النموذج ثم يوجّه المستخدمين إلى لوحة القيادة.
طلب التغيير الدقيق (جملة واحدة): "أعد تسمية الزر الأساسي من 'إنشاء حساب' إلى 'متابعة' وغيّر حقل 'حجم الشركة' من إدخال نص حر إلى قائمة منسدلة."
الآن طبق النمط بتجميد ما يجب أن يبقى:
فحوصات القبول التي يمكنك تشغيلها خلال دقائق:
يجب أن يرد المساعد جيدًا بأن يعيد سرد البنود المجمدة، يؤكد أي غموض (مثلاً: خيارات القائمة المنسدلة الدقيقة وما القيمة المخزنة)، ثم يُنتج أصغر تغيير مطلوب فقط. كما يجب أن يذكر ما لم يلمسه عن قصد (التوجيه، منطق التحقق، شكل الحمولة).
قبل قبول "تغيير صغير"، قم بفحص سريع يبحث عن الانحراف الصامت. الهدف ليس اختبارًا كاملًا بل التأكد أن التطبيق لا يزال يتصرّف كما قلت "لا تغيّر"، باستثناء التعديل المقصود.
قم بهذه الفحوصات بنفس الترتيب في كل مرة. هذا يبقي المراجعات هادئة ويجعل الانحرافات أسهل للاكتشاف.
تراجع إذا تغيّر أي بند مجمّد، حتى لو "لا يزال التطبيق يعمل". تسمية تغيّرت، حقل جديد، أو قاعدة معدلة هو دليل أن النموذج أخذ حريّة إضافية.
أعد إصدار الطلب بقيود أدق: أعِد صياغة التغيير في جملة واحدة، اذكر التدفقات والشاشات المجمّدة بالاسم، وأضف "لا تغيّر مخطط البيانات، لا تغيّر نقاط النهاية، لا تغيّر السلوك خارج X." إذا كنت تستخدم Koder.ai، التقاط لقطة قبل الاختبار يجعل التراجع خطوة واحدة عند حدوث أي انحراف.
إذا كنت تبني في Koder.ai، يعمل نمط "لا تغيّر" كعادة: تغيير واحد صغير، كل شيء آخر مقفل، وطريق واضح للعودة إذا تحرّك شيء.
قبل أن تطلب التغيير، انتقل إلى وضع التخطيط واطلب من المساعد إعادة صياغة نطاق التجميد بكلمات بسيطة. اطلب منه إعادة شيئين: (1) التغيير الدقيق، و(2) قائمة تجميد واضحة (التدفقات، تفاصيل الواجهة، وقواعد العمل التي لا يجب أن تتحرك).
مطالبة تخطيط تعمل جيدًا: "أعد صياغة طلبي. ثم ادرج ما يجب ألا يتغير. إذا كان هناك أي غموض، اسأل قبل التحرير."
عامل كل طلب تغيير كنقطة تفتيش. أنشئ لقطة قبل التطبيق، ثم أخرى بعد التحقق. إذا تعطل شيء، التراجع أسرع من محاولة إصلاح تغيير سيء.
مثال بسير عمل بسيط:
Koder.ai يمكنه توليد واجهة الويب (React)، الخلفية (Go + PostgreSQL)، والجوال (Flutter). يبقى النمط نفسه رغم اختلاف الشيفرة. جمد الأجزاء التي تحدد السلوك، لا الملفات فقط.
إذا كنت تغيّر نقطة نهاية خلفية، جمد شكل الطلب/الاستجابة، قواعد التحقق، وكتابـات البيانات. إذا كنت تغيّر شاشة جوال، جمد ترتيب التنقل، قيم الحقول الافتراضية، ورسائل الخطأ. إذا كنت تغيّر منطق قاعدة بيانات، جمد معنى الصفوف الحالية واحرص على هجرات آمنة.
انسخ قالبك، نفّذ تغييرًا واحدًا آمنًا اليوم، وتحقق باستخدام قائمة المراجعة قبل قبول التحديث. احتفظ بالنص لصقلاً للمرة القادمة واستبدل فقط تفاصيل التغيير الواحدة في كل مرة.
استخدمها متى أردت تغييرًا واحدًا محددًا وتريد التأكد من بقاء كل شيء آخر كما هو. هي مفيدة خصوصًا لعمليات الدفع، المصادقة، الفوترة، أو أي تدفق حيث قد يسبّب الانحراف الصغير مشاكل حقيقية للمستخدمين.
لأن أجزاء التطبيق تشترك في مكونات وبيانات وقواعد. تعديل بصري صغير قد يعيد استخدام مكوّن يظهر في أماكن أخرى، فيؤدي إلى تغيّر التخطيط، تعديل التحقق، أو تغيير حمولة واجهة برمجة التطبيقات دون ملاحظتك حتى وقت لاحق.
اكتب هدفًا واضحًا واحدًا، ثم أدرج ما يجب أن يبقى مطابقًا بعد التغيير. الفكرة هي تجميد السلوك (التدفقات، القواعد، البيانات، التكاملات) وتجميد تفاصيل واجهة المستخدم المرئية، وليس فقط القول "لا تكسر أي شيء".
اجعله قصيرًا لكن محددًا: التدفقات الحرجة، تفاصيل UI/UX التي يجب ألا تتحرك، قواعد العمل، سلوك البيانات، والتكاملات. إذا لم تتمكن من تسمية ما يجب أن يبقى كما هو، سيضطر النموذج للتخمين والتخمين يسبب الانحراف.
حدّده إلى أصغر منطقة تحميك فعليًا. على سبيل المثال، جمد تدفق الدفع والمكونات المشتركة الخاصة به، لكن لا تجمد التطبيق كله إذا كنت تغير تسمية على شاشة واحدة فقط.
سمّ المسارات خطوة بخطوة وعرّف متى يُعدّ التدفق مكتملًا. أضف الحالات الحافة الشائعة مثل سلوك زر الرجوع، رسائل الخطأ، الحالات الفارغة والسلوك عند التحديث لكي يبقى التدفق مطابقًا في الأماكن التي يلاحظها المستخدمون أكثر.
جمّد بنية العرض المرئية، قواعد المسافات، حالات المكوّن (hover/disabled/loading)، وكل النصوص إلا السلسلة الواحدة التي تتحرّك. بدونه، قد «يُصلّح» النموذج الأنماط أو يعيد صياغة النصوص بطريقة تغيّر المعنى أو التخطيط.
جمّد العقود: أشكال الطلب/الاستجابة، قواعد التحقق، الأذونات، الحسابات، وما يتم حفظه ومتى. أضف مثالًا رقميًا واحدًا للقواعد الحساسة مثل التسعير حتى لا تترك مجالًا للتفسير أثناء التنفيذ.
اطلب فحوصات قبول سريعة يمكنك تشغيلها، إلى جانب ملخّص مختصر بأسلوب diff يبيّن ما تغيّر وأين. ثم تحقّق من التدفقات المجمدة نهاية إلى نهاية، أثِر حالة خطأ واحدة على الأقل، وتأكد من أن البيانات/التكاملات لم تتغير.
التقط لقطة قبل التغيير، شغّل تمريرة التخطيط التي تعيد نطاق التجميد، ثم اطلب القطعة الأصغر الممكنة. بعد التحقق، التقط لقطة أخرى حتى يكون التراجع خطوة واحدة إذا ظهر أي انحراف.