কোড এখন সস্তা। স্পেসিফিকেশনই হলো আসল সম্পদ।
কোড এখন একটি সস্তা উপাদানে পরিণত হচ্ছে। আসল মূল্য এখন স্পেসিফিকেশনে (specification) নিহিত।
আমি হাতে ইমপ্লিমেন্টেশন প্ল্যান (implementation plan) লেখার পেছনে কম সময় ব্যয় করি। আমি ডিজাইনের পেছনে বেশি সময় ব্যয় করি। AI এটি সম্ভব করে তুলেছে। এটি ইঞ্জিনিয়ারিং বিচারবুদ্ধিকে (engineering judgment) প্রতিস্থাপন করে না; বরং এটি ব্যবহারের ক্ষেত্রটি বদলে দেয়।
আমি AI-কে স্পেসিফিকেশন এবং কোড ড্রাফট করতে দিই। আমার কাজ এখন হলো উদ্দেশ্য (intent) সংজ্ঞায়িত করা এবং সীমাবদ্ধতাগুলো (constraints) চিহ্নিত করা। এই প্রক্রিয়ায় লেখা বা রাইটিং হলো সবচেয়ে কম মূল্যবান অংশ।
আমার স্পেসিফিকেশনগুলো কোনো উইকি (wiki) পড়ার জন্য মানুষের জন্য নয়। এগুলো পরবর্তী AI সেশনের জন্য। এগুলো এমন হতে হবে যাতে একটি AI নতুন কোনো ব্যাখ্যা ছাড়াই কাজ চালিয়ে যেতে পারে।
কার্যকর স্পেসিফিকেশনগুলো নিচের বিষয়গুলোর ওপর গুরুত্ব দেয়:
- প্রয়োজনীয়তা (Requirements)
- সীমাবদ্ধতা (Constraints)
- গ্রহণের মানদণ্ড (Acceptance criteria)
- যাচাইকরণ ধাপ (Verification steps)
এগুলো কেবল পড়ার জন্য নয়, বরং কার্যকর করার জন্য তৈরি করা হয়। এর দর্শক হলো পরবর্তী অবদানকারী (contributor), তা মানুষ হোক বা AI এজেন্ট।
আধুনিক ইঞ্জিনিয়ারিং হলো সীমাবদ্ধতা ব্যবস্থাপনার (constraint management) একটি সমস্যা। আপনি যদি সীমাবদ্ধতাগুলো স্পষ্টভাবে ধরতে পারেন, তবে AI সেগুলোর সাথে খুব ভালোভাবে কাজ করে। আমার কাজের ধারা (workflow) এই ধাপগুলো অনুসরণ করে: Intent → AI Specification → Human Review → AI Implementation Plan → Human Review → AI Code Generation → Testing
আমি লক্ষ্য, প্রয়োজনীয়তা এবং সীমানা নির্ধারণ করে দিই। AI স্পেসিফিকেশন ড্রাফট করে। আমি সেটি পর্যালোচনা করি। AI প্ল্যান ড্রাফট করে। আমি সেটি পর্যালোচনা করি। তারপর আমরা কোড জেনারেট করি।
আমি লিখি কম, কিন্তু আরও সতর্কতার সাথে পর্যালোচনা করি। এখানেই ইঞ্জিনিয়ারিংয়ের আসল মূল্য বজায় থাকে।
একটি ভালো স্পেসিফিকেশন কী সত্য হতে হবে তা সংজ্ঞায়িত করে, কীভাবে তা সত্য করতে হবে তা নয়। উদাহরণস্বরূপ, একটি রিফ্যাক্টরিং (refactoring) স্পেসিফিকেশনে বলা উচিত:
- অ্যাপ্লিকেশন লেয়ারের কোনো ক্লাসই DAO ইমপ্লিমেন্টেশনকে রেফারেন্স করতে পারবে না।
- গ্রহণের মানদণ্ড (Acceptance criteria): লেয়ারিং ভায়োলেশন (layering violations) সার্চ করার সময় শূন্য ফলাফল (zero matches) প্রদান করবে।
সবচেয়ে গুরুত্বপূর্ণ কাজ হলো 'লোড-বেয়ারিং কনস্ট্রেইন্টস' (load-bearing constraints) বা মূল সীমাবদ্ধতাগুলো চিহ্নিত করা। এগুলো হলো কিছু গুরুত্বপূর্ণ নিয়ম, যেমন:
- ডাটাবেস ইনিশিয়ালাইজেশন কৌশল (Database initialization strategies)
- ডিপ্লয়মেন্ট মডেল (Deployment models)
- ইন্টিগ্রেশন বা সংযোগের সীমানা (Integration boundaries)
আপনি যদি এগুলো মিস করেন, তবে সিস্টেম ভেঙে পড়বে।
AI সেশনগুলো সাময়িক। এগুলো আসে এবং চলে যায়। আসল মূল্য আসে শেয়ারড মেমরি (shared memory) থেকে:
- স্পেসিফিকেশন (Specifications)
- ইমপ্লিমেন্টেশন প্ল্যান (Implementation plans)
- আর্কিটেকচার ডিসিশন রেকর্ডস (ADRs)
- কনভেনশন বা রীতি (Conventions)
এই মেমরি ডকুমেন্টেশনের বিচ্যুতি (documentation drift) রোধ করে। যখন আপনার README, কোড এবং ADR গুলো ভিন্ন ভিন্ন কথা বলে, তখন বিশ্বাসযোগ্যতা নষ্ট হয়। আপনাকে এগুলোকে বাস্তবতার সাথে সামঞ্জস্যপূর্ণ করতে হবে।
রিপোজিটরিটির এই কাঠামোটি প্রতিফলিত করা উচিত:
- CLAUDE.md: ওয়ার্কফ্লো এবং রিভিউ গেটস।
- status.md: সমস্ত স্পেকস এবং প্ল্যানগুলোর একটি জীবন্ত ইনডেক্স।
- specs/: "কী" এবং "কেন"।
- plan/: "কীভাবে"।
- rules/: ক্লাস-লেভেল কোডিং কনভেনশন।
- docs/adr/: গুরুত্বপূর্ণ সিদ্ধান্তগুলোর অপরিবর্তনীয় রেকর্ড।
AI কোড তৈরি করতে পারে। কিন্তু আপনার ব্যবসার জন্য কোন সীমাবদ্ধতাগুলো গুরুত্বপূর্ণ, তা এটি নির্ভরযোগ্যভাবে নির্ধারণ করতে পারে না। সেটি আপনার দায়িত্ব।
কার্যকর জ্ঞান তৈরি করুন। প্রতিটি প্রজেক্ট শুরু করুন একটি শেয়ারড মেমরি দিয়ে, কোনো ফাঁকা পৃষ্ঠা দিয়ে নয়।
উৎস: https://dev.to/daniel_wu_cac679a2760ba0a/the-code-is-cheap-artifact-now-the-spec-is-the-asset-3b02
ঐচ্ছিক লার্নিং কমিউনিটি: https://t.me/GyaanSetuAi