AI کوڈنگ ایجنٹس کو پرامپٹس سے زیادہ ٹیسٹ کی ضرورت ہے

میں نے 25 سالوں سے سافٹ ویئر لکھا ہے۔ میرا طریقہ کار (workflow) گزشتہ آٹھ مہینوں میں میرے پورے کیریئر کے مقابلے میں زیادہ بدل گیا ہے۔

AI کوڈنگ ٹولز پہلے ریفیکٹرنگ (refactoring) یا غلطیوں کی وضاحت جیسے چھوٹے کاموں کے لیے ہوا کرتے تھے۔ AI کے ساتھ بڑے فیچرز بنانا تکلیف دہ محسوس ہوتا تھا۔

اب صورتحال مختلف ہے۔ جدید ایجنٹس ایک مخصوص لوپ پر عمل کرتے ہیں:

  • کوڈ پڑھنا۔
  • کوڈ تبدیل کرنا۔
  • کمانڈ چلانا۔
  • دیکھنا کہ کیا ناکام ہوا۔
  • اسے ٹھیک کرنا۔
  • دہرانا۔

یہ لوپ طاقتور ہے، لیکن ایجنٹس ویژول انٹرفیس (visual interfaces) کے ساتھ جدوجہد کرتے ہیں۔ وہ یہ دیکھنے کے لیے کہ آیا کوئی بٹن کام کر رہا ہے، قابلِ بھروسہ طریقے سے UI پر کلک نہیں کر سکتے۔

میں نے اپنا طریقہ کار بدل لیا۔ میں نئے فیچرز اس طرح بناتا ہوں کہ وہ پہلے کمانڈ لائن سے کام کریں۔

ایجنٹ سے "اس اسکرین کو دیکھو" کہنے کے بجائے، میں اسے ایک کمانڈ دیتا ہوں:

  • npm run test:feature-x
  • node scripts/run-new-feature-client.js

ایجنٹس کمانڈز کو پسند کرتے ہیں۔ یہ انہیں ایک قابلِ عمل فیڈ بیک لوپ (executable feedback loop) فراہم کرتا ہے۔

میرا موجودہ طریقہ کار کچھ اس طرح ہے:

  • Markdown فائل میں فیچر کی منصوبہ بندی کرنا۔
  • ٹیسٹ کلائنٹ یا یونٹ ٹیسٹ بنانا۔
  • واضح ٹیسٹ کیسز (test cases) کی تعریف کرنا۔
  • ایجنٹ کو فیچر نافذ (implement) کرنے دینا۔
  • ایجنٹ کو بار بار ٹیسٹ چلانے دینا۔
  • نتائج کا جائزہ لینا۔

ایک انتباہ: اگر آپ کسی ایجنٹ کو "تمام ٹیسٹ پاس کرو" کہیں گے، تو وہ ایسا ہی کرے گا۔ کامیابی حاصل کرنے کے لیے وہ سافٹ ویئر انجینئرنگ کے اصولوں کی خلاف ورزی کر سکتا ہے۔ وہ کمزور ٹیسٹ لکھ سکتا ہے یا صرف ناکامی کا پیغام روکنے کے لیے غلطیوں کو چھپانے کے لیے try/catch بلاکس کا استعمال کر سکتا ہے۔

یہی وجہ ہے کہ ٹیسٹ کی تعریف کرنا میرا سب سے اہم دستی کام ہے۔ آپ کو پوچھنا چاہیے:

  • کیا یہ ٹیسٹ کسی حقیقی استعمال (use case) کی نمائندگی کرتا ہے؟
  • کیا یہ کسی حقیقی ریگریشن (regression) کو پکڑ سکے گا؟
  • کیا یہ بہت محدود ہے؟

AI کے دور میں، ٹیسٹ ڈرن ڈویلپمنٹ (TDD) محض ایک حفاظتی جال نہیں ہے۔ یہ اسٹیئرنگ وہیل (steering wheel) ہے۔ ٹیسٹ کے بغیر، ایک ایجنٹ ایسا کوڈ تیار کرتا ہے جو درست معلوم ہو لیکن ہو شاید نہیں۔ اچھے ٹیسٹ کے ساتھ، ایک ایجنٹ کے پاس ایک قابلِ پیمائش ہدف ہوتا ہے۔

ایک اور مشورہ: ٹیسٹ آؤٹ پٹ کے لیے منظم فائلیں استعمال کریں۔ چیٹ میں بہت زیادہ لاگز (logs) ڈالنے کے بجائے، اپنے اسکرپٹس کو کسی فولڈر میں JSON یا Markdown فائلوں میں لکھنے دیں۔

اس سے مدد ملتی ہے کیونکہ:

  • ایجنٹ براہ راست متعلقہ ڈیٹا پر چلا جاتا ہے۔
  • سیاق و سباق (context) محدود رہتا ہے۔
  • ٹوکن کا استعمال کم ہو جاتا ہے۔
  • اس سے پیسے بچتے ہیں۔

AI ایجنٹس ڈویلپرز کی جگہ نہیں لیتے۔ وہ ہماری توجہ کا رخ بدل دیتے ہیں۔ ہم کوڈ ٹائپ کرنے میں کم اور درج ذیل کاموں میں زیادہ وقت صرف کرتے ہیں:

  • مسائل کی واضح وضاحت کرنا۔
  • فیڈ بیک لوپس بنانا۔
  • معیاری ٹیسٹ کی تعریف کرنا۔
  • آرکیٹیکچر کا جائزہ لینا۔

AI ڈویلپمنٹ کا مستقبل اس شخص کا نہیں ہے جو بہترین پرامپٹس لکھتا ہے۔ یہ اس شخص کا ہے جو بہترین فیڈ بیک لوپس بناتا ہے۔

Source: https://dev.to/stoefln6/ai-coding-agents-need-tests-more-than-prompts-11pm

Optional learning community: https://t.me/GyaanSetuAi