স্পেক-চালিত ডেভেলপমেন্ট (Spec-Driven Development) আসল সমস্যার সমাধান করতে পারেনি

Spec-driven development (SDD) হলো AI এজেন্টদের ভুল কোড লেখার সমস্যার নতুন সমাধান।

এর কাজের ধারাটি সহজ। আপনি একটি সুসংগঠিত স্পেক (spec) লিখবেন। একটি এজেন্ট সেই পরিকল্পনাটি কার্যকর করবে। আপনি ফলাফলটি পর্যালোচনা করবেন। GitHub Spec Kit, OpenSpec এবং Kiro-এর মতো টুলগুলো এই পরিবর্তনের নেতৃত্ব দিচ্ছে।

এই পদ্ধতিটি সাধারণ প্রম্পটিংয়ের (raw prompting) চেয়ে ভালো কাজ করে। কিন্তু এতে একটি বড় ত্রুটি রয়েছে।

এটি নির্ভর করে স্পেকটি যেন তথ্যের একমাত্র উৎস (source of truth) হিসেবে থাকে তার ওপর। কিন্তু এটি একটি মিথ্যা।

গত ২০ বছর ধরে আমরা ডকুমেন্টেশনকে কোডের সাথে সামঞ্জস্যপূর্ণ রাখার চেষ্টা করেছি। ডিজাইন ডক, উইকি এবং README—সবই ব্যর্থ হয়েছে। কেন? কারণ কোড এডিট করা দ্রুত এবং এটি সরাসরি ভ্যালু প্রদান করে। কিন্তু একটি ডকুমেন্ট এডিট করা ধীরগতির এবং এর কোনো দৃশ্যমান ফলাফল নেই। ডকুমেন্টেশন সবসময় গতির কাছে হেরে যায়।

SDD-ও একই সমস্যার সম্মুখীন হচ্ছে।

একটি এজেন্ট কোনো সীমাবদ্ধতার মুখে পড়লে সেটি কাজ করার জন্য কোড ঠিক করে ফেলে। ফলে কোড এবং স্পেক আর মিলে না। কয়েক দিনের মধ্যেই স্পেকটি অকেজো হয়ে পড়ে। বেশিরভাগ ফ্রেমওয়ার্ক এই সমস্যা সমাধানের জন্য "ডিসিপ্লিন" বা শৃঙ্খলার কথা বলে। কিন্তু শৃঙ্খলা আমাদের আগেও বারবার ব্যর্থ করেছে।

কোডিং করার আগেই একটি পূর্ণাঙ্গ স্পেক লেখা মানে হলো আপনি ইমপ্লিমেন্টেশনের সময় কিছুই শিখবেন না বলে ধরে নেওয়া। এটি ফিডব্যাক লুপকে নষ্ট করে দেয়। এটি এজাইল ডেভেলপমেন্টকে (agile development) একটি ভারী এবং পূর্বনির্ধারিত প্রক্রিয়ায় পরিণত করে।

একজন ডেভেলপার SDD ব্যবহার করে কয়েক মাসব্যাপী একটি প্রজেক্ট চালিয়েছিলেন। এজেন্ট প্রতিটি স্পেক নিখুঁতভাবে অনুসরণ করেছিল। তবুও সিস্টেমটি ব্যর্থ হয়েছিল। স্পেকটি সেই জ্ঞান ধারণ করতে পারেনি যা শুধুমাত্র তৈরির সময় (building) প্রকাশ পায়। একটি ছোট ইনফ্রাস্ট্রাকচার পরিবর্তন পুরো স্পেক গ্রাফটিকে ভেঙে চুরমার করে দিয়েছিল।

অন্য একটি দল SDD চেষ্টা করেছিল এবং দেখল এটি ১০ গুণ বেশি ধীরগতির। তাদের কাজের আনুষ্ঠানিকতা (ceremony) বেড়ে গিয়েছিল কিন্তু বাগের সংখ্যা একই ছিল।

লক্ষ্য আরও বেশি ডকুমেন্টেশন তৈরি করা হওয়া উচিত নয়।

আসল সমস্যা হলো কীভাবে স্পেকগুলোকে সচল রাখা যায়। আমাদের এমন স্পেক প্রয়োজন যা নিজেই নিজেকে আপডেট করতে পারে। আমাদের এমন টুল প্রয়োজন যা কোড এবং চলমান সিস্টেম থেকে স্পেকটি অনুমান (infer) করতে পারে। এটি একটি lockfile-এর মতো কাজ করা উচিত। এটি অবশ্যই স্বয়ংক্রিয় হতে হবে।

এটি এখনও সম্ভব কি না তা আমি নিশ্চিত নই। আমি প্রোডাকশনে কাজ করা মানুষদের মতামত শুনতে চাই।

  • আপনার স্পেক কি তিন সপ্তাহের বেশি টিকে থাকে?
  • যখন এটি বিচ্যুত হয়, তখন কী কারণে তা ঘটে?
  • আপনি কি কোড বা টেলিমেট্রি থেকে স্পেক তৈরি করার চেষ্টা করেছেন?
  • এই কঠোরতা কি ভ্যালু যোগ করে নাকি কেবল আনুষ্ঠানিকতা বাড়ায়?

Source: https://dev.to/sam_curatedmcp/spec-driven-development-renamed-an-old-problem-it-didnt-solve-it-tags-ai-productivity-347a

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