← 返回列表

AI সিরিজ ইন্টারভিউ ১৬: একটি ভালো স্পেস কোডিং কেমন হওয়া উচিত?

একটি ভালো স্পেস কোডিং (স্পেসিফিকেশন-চালিত প্রোগ্রামিং) এর মূল লক্ষ্য হল "অস্পষ্ট ধারণা"কে "সঠিক, যাচাইযোগ্য এবং কার্যকরী চুক্তি"তে রূপান্তর করা। এটি কেবল একটি ডকুমেন্ট লেখা নয়, বরং মানুষ এবং AI (বা মানুষ ও মানুষের মধ্যে) দ্ব্যর্থহীন যোগাযোগ ভাষা প্রতিষ্ঠা করা। নিচে আমি স্পেসিফিকেশনের বিষয়বস্তুর গঠন, লেখার নীতি, AI-এর সাথে সহযোগিতার প্রক্রিয়া এবং গুণগত মান যাচাই—এই চারটি মাত্রা থেকে একটি ভালো স্পেস কেমন হওয়া উচিত তা ব্যাখ্যা করব।


১. স্পেসিফিকেশন ডকুমেন্টের মানক গঠন (উদাহরণস্বরূপ একটি ফিচার মডিউল)

অধ্যায় বাধ্যতামূলক বিষয়বস্তু উদাহরণ
১. লক্ষ্য ও পরিধি এক বাক্যে কী করা হবে, এবং স্পষ্টভাবে কী করা হবে না "ব্যবহারকারী রেজিস্ট্রেশন API বাস্তবায়ন, ইমেইল যাচাই অন্তর্ভুক্ত নয়"
২. ইনপুট/আউটপুট চুক্তি ডেটা স্ট্রাকচার, টাইপ, বাধ্যতামূলক/ঐচ্ছিক ফিল্ড, উদাহরণ মান POST /register অনুরোধ বডি {email: string, password: string}, প্রতিক্রিয়া 201 অথবা 400 ত্রুটি কোড সহ
৩. আচরণ ও লজিক ব্যবসায়িক নিয়ম, সীমানা শর্ত, অবস্থা পরিবর্তন "পাসওয়ার্ড দৈর্ঘ্য ৮-২০ অক্ষর, কমপক্ষে একটি সংখ্যা থাকতে হবে; ইমেইল আগে থেকে থাকলে 409 ফেরত দিন"
৪. ত্রুটি পরিচালনা সম্ভাব্য সকল ব্যতিক্রমী পরিস্থিতি এবং সংশ্লিষ্ট ত্রুটি কোড/বার্তা "ডেটাবেস সংযোগ ব্যর্থ → 503 ফেরত দিন, স্ট্যাক এক্সপোজ করবেন না"
৫. অ-কার্যকরী প্রয়োজনীয়তা কর্মক্ষমতা (প্রতিক্রিয়া সময় < ২০০ms), নিরাপত্তা (প্যারামিটারাইজড কোয়েরি), লগ, পর্যবেক্ষণযোগ্যতা "সমস্ত SQL প্রি-কম্পাইলড হতে হবে; email রেকর্ড করুন কিন্তু password রেকর্ড করবেন না"
৬. টেস্ট কেস (গুরুত্বপূর্ণ) কমপক্ষে ৩টি সাধারণ ইনপুট + ২টি সীমানা/ব্যতিক্রমী ইনপুট, প্রত্যাশিত আউটপুট দিন নিচের টেবিল দেখুন
৭. নির্ভরশীলতা ও সীমাবদ্ধতা কোন লাইব্রেরি, ভার্সন, এনভায়রনমেন্ট ভেরিয়েবল ব্যবহার করবেন "Python ৩.১০+, FastAPI, এনভায়রনমেন্ট ভেরিয়েবল DB_URL"

টেস্ট কেসের উদাহরণ (স্পেসের মধ্যে এম্বেডেড)

পরিস্থিতি ইনপুট প্রত্যাশিত আউটপুট
সাধারণ রেজিস্ট্রেশন email: a@b.com, pwd: Pass1234 201, user_id ফেরত
পাসওয়ার্ড খুব ছোট pwd: Ab1 400, ত্রুটি কোড WEAK_PASSWORD
ইমেইল আগে থেকে আছে একই email 409, ত্রুটি কোড EMAIL_EXISTS

ভালো স্পেসে প্রথমে টেস্ট কেস লিখতে হবে, কারণ AI সেগুলি থেকে সরাসরি ইউনিট টেস্ট জেনারেট করতে পারে এবং সম্পন্ন হলে স্বয়ংক্রিয়ভাবে যাচাই করতে পারে।


২. স্পেস লেখার মূল নীতি (SMART ভ্যারিয়েন্ট)

নীতি ব্যাখ্যা খারাপ উদাহরণ
সঠিক (Precise) নির্দিষ্ট সংখ্যা, টাইপ, বুলিয়ান শর্ত ব্যবহার করুন; "যতটা সম্ভব", "সাধারণত" এড়িয়ে চলুন ❌ "পাসওয়ার্ড যথেষ্ট নিরাপদ হতে হবে" → ✅ "পাসওয়ার্ড কমপক্ষে ৮ অক্ষর, বড় হাতের, ছোট হাতের এবং সংখ্যা থাকতে হবে"
যাচাইযোগ্য (Verifiable) প্রতিটি প্রয়োজনীয়তা স্বয়ংক্রিয় পরীক্ষা বা ম্যানুয়াল চেক দ্বারা পাস/ফেল নির্ধারণ করা যায় ❌ "কোড সুন্দর হতে হবে" → ✅ "ফাংশনের সাইক্লোম্যাটিক কমপ্লেক্সিটি ≤ ১০, কোনো ডুপ্লিকেট কোড ব্লক নেই"
দ্ব্যর্থহীন (Unambiguous) একই টার্ম পুরো ডকুমেন্টে একই অর্থে ব্যবহৃত; প্রয়োজন হলে glossary দিন ❌ "ব্যবহারকারী না থাকলে, ত্রুটি ফেরত দিন" → ✅ "ব্যবহারকারী না থাকলে → 404 এবং {code: 'USER_NOT_FOUND'} ফেরত দিন"
সম্পূর্ণ (Complete) হ্যাপি পাথ, সকল ব্যতিক্রম পাথ, অ-কার্যকরী প্রয়োজনীয়তা কভার করুন ❌ শুধু সফল পরিস্থিতি লিখেছেন → ✅ ডেটাবেস টাইমআউট, অনুমতি不足 ইত্যাদি অন্তর্ভুক্ত
পারমাণবিক (Atomic) একটি স্পেস শুধুমাত্র একটি স্বাধীনভাবে ডেলিভারেবল ফিচার বর্ণনা করে (AI একবারে সম্পন্ন করতে পারে) ❌ একটি স্পেসে "পুরো পেমেন্ট সিস্টেম" লেখা → ✅ "পেমেন্ট অর্ডার তৈরি", "কলব্যাক ভেরিফিকেশন", "রিফান্ড" এ ভাগ করা

৩. AI-এর সাথে সহযোগিতায় স্পেস কোডিং প্রক্রিয়া

  1. মানুষ স্পেস লেখে (উপরের গঠন, বিশেষ করে টেস্ট কেস এবং ফাংশন সিগনেচার)।
  2. স্পেস একবারে AI-কে দিন (সংলাপের মাধ্যমে প্রয়োজন যোগ করবেন না, ভাইব দূষণ এড়াতে)।
  3. AI কোড + ইউনিট টেস্ট আউটপুট দেয় (AI স্পেসের টেস্ট কেস অনুযায়ী কার্যকরী টেস্ট তৈরি করবে)।
  4. টেস্ট চালান: সব পাস করলে পরবর্তী ধাপ; না করলে স্পেস সংশোধন বা কোড সরাসরি ঠিক করুন (এখন ছোট লুপ সম্ভব, কিন্তু পরিবর্তন রেকর্ড করতে হবে)।
  5. মানব পর্যালোচনা: স্পেসের বাইরের ফাংশনালিটি (স্কোপ ক্রীপ) যুক্ত হয়েছে কিনা, নিরাপত্তা/কর্মক্ষমতা চেক করুন।
  6. স্থিরীকরণ: স্পেস ডকুমেন্ট এবং চূড়ান্ত কোড একসাথে রিপোজিটরিতে জমা দিন, স্থায়ী ডকুমেন্ট হিসেবে।

মূল অনুশীলন: স্পেস কোডিফিকেশন — spec.md + test_spec.py ব্যবহার করুন, যেখানে টেস্ট ফাইল সরাসরি স্পেসের উদাহরণ থেকে নেওয়া। পরে কোড পরিবর্তন করলে শুধু টেস্ট চালিয়ে স্পেস ভেঙেছে কিনা যাচাই করা যায়।


৪. ভালো স্পেসের ফলাফল (গ্রহণযোগ্যতার মানদণ্ড হিসেবে)

  • নির্ধারকতা: একই স্পেস ভিন্ন AI (বা ভিন্ন ব্যক্তি) কে দিলে অনুরূপ বাস্তবায়ন আসে।
  • পরীক্ষণযোগ্যতা: কোড শেষ হওয়ার সাথে সাথে ৯০% সঠিকতা স্বয়ংক্রিয়ভাবে যাচাই করা যায়।
  • রক্ষণাবেক্ষণযোগ্যতা: ছয় মাস পর যে কেউ স্পেস দেখে ডিজাইনের উদ্দেশ্য বুঝতে পারে।
  • কম যোগাযোগ খরচ: টিম আলোচনায় শুধু স্পেস নিয়ে আলোচনা করে, নির্দিষ্ট কোড লাইন নিয়ে নয়।
  • নিরাপত্তা/গুণমান অন্তর্ভুক্ত: নিরাপত্তা প্রয়োজনীয়তা (যেমন প্যারামিটারাইজড কোয়েরি) এবং সীমানা শর্ত স্পেসে উল্লেখিত, AI মেনে চলতে বাধ্য।

৫. একটি ভালো স্পেসের উদাহরণ (সরল সংস্করণ)

# স্পেস: ব্যবহারকারী রেজিস্ট্রেশন API

## পরিধি
- ইমেইল, পাসওয়ার্ড গ্রহণ
- ভেরিফিকেশন ইমেইল পাঠানো হবে না, ইমেইলের সত্যতা পরীক্ষা করা হবে না

## চুক্তি
POST /register
Content-Type: application/json
Request: { "email": string, "password": string }
Response 201: { "user_id": string }
Response 400: { "code": "INVALID_PASSWORD" | "INVALID_EMAIL" }
Response 409: { "code": "EMAIL_ALREADY_EXISTS" }

## আচরণ
- ইমেইল অবশ্যই RFC 5322 মৌলিক ফরম্যাট মেনে চলতে হবে (a@b.c)
- পাসওয়ার্ড: দৈর্ঘ্য ৮-২০, কমপক্ষে একটি সংখ্যা এবং একটি বড় হাতের অক্ষর থাকতে হবে
- bcrypt ব্যবহার করে এনক্রিপ্ট করে সংরক্ষণ, সল্ট কস্ট ১০
- ডেটাবেসে সংরক্ষণের আগে ইমেইল আগে থেকে বিদ্যমান থাকলে → 409

## টেস্ট কেস (ইনপুট -> প্রত্যাশিত স্ট্যাটাস কোড+প্রতিক্রিয়া ফিল্ড)
| ইনপুট ইমেইল | পাসওয়ার্ড | প্রত্যাশিত |
|-------------|-----------|------------|
| test@x.com | Pass1234  | 201, user_id বিদ্যমান |
| test@x.com | pass      | 400, INVALID_PASSWORD |
| bad        | Pass1234  | 400, INVALID_EMAIL |
| (আগে থেকে বিদ্যমান ইমেইল) | Pass1234 | 409, EMAIL_ALREADY_EXISTS |

## অ-কার্যকরী
- SQL অবশ্যই প্যারামিটারাইজড কোয়েরি হতে হবে (ইনজেকশন প্রতিরোধ)
- লগে রেজিস্ট্রেশন উৎস IP রেকর্ড করুন, পাসওয়ার্ড রেকর্ড করবেন না
- প্রতিক্রিয়া সময় ৯৫% অনুরোধের জন্য < ১০০ms (bcrypt ব্যতীত)

## নির্ভরশীলতা
- Python ৩.১০+, FastAPI, bcrypt, asyncpg

ভালো স্পেস কোডিং = মানুষের "ডিজাইন সিদ্ধান্ত"কে মেশিনের "টেস্ট কেস + টাইপ সিগনেচার + আচরণ সীমাবদ্ধতা" তে রূপান্তর করা, যাতে AI শুধু বাস্তবায়ন পূরণ করে, আর মানুষ সবসময় গুণগত মান ও দিক নিয়ন্ত্রণ করে।

评论

暂无已展示的评论。

发表评论(匿名)