8 মিনিট

পরিষ্কার সফ্টওয়্যার আর্কিটেকচার ও কম রিরাইটের জন্য প্রম্পটিং প্যাটার্ন

AIকে নিয়মিত প্রম্পট দিয়ে স্পষ্ট রিকোয়ারমেন্ট, মডুলার ডিজাইন, এবং টেস্টযোগ্য কোড তৈরি করতে শিখুন—ফলে রিফ্যাক্টর ও রিরাইট কমবে।

পরিষ্কার সফ্টওয়্যার আর্কিটেকচার ও কম রিরাইটের জন্য প্রম্পটিং প্যাটার্ন

AI-সহায়ক কাজে “পরিষ্কার আর্কিটেকচার” কেমন দেখায়

এই পোস্টে “পরিষ্কার আর্কিটেকচার” মানে কোনো নির্দিষ্ট ফ্রেমওয়ার্ক বা পারফেক্ট ডায়াগ্রাম নয়। এর মানে—আপনি সিস্টেমটি সহজভাবে ব্যাখ্যা করতে পারবেন, তা বদলালে অপর অংশ ভাঙবে না, এবং নায়কের মত টেস্ট না করে সহজে আচরণ যাচাই করা যাবে।

একটি ব্যবহারিক সংজ্ঞা: স্পষ্টতা, মডুলারিটি, টেস্টযোগ্যতা

স্পষ্টতা মানে সিস্টেমের উদ্দেশ্য ও আকার সংক্ষিপ্ত বর্ণনায় স্পষ্ট: এটি কী করে, কে ব্যবহার করে, কী ডেটা নিয়ে কাজ করে, এবং কী কখনো করা যাবেনা। AI-সহায়ক কাজেও স্পষ্টতা মানে মডেলটি রিকোয়্যারমেন্টগুলো এমনভাবে পুনরায় বলবে যা আপনি সই করে দিতে রাজি হবেন।

মডুলারিটি মানে দায়িত্বগুলো পরিষ্কার সীমানায় রাখা। প্রতিটি মডিউলের কাজ থাকে নির্দিষ্ট, ইনপুট/আউটপুট থাকে স্পষ্ট, এবং অন্য মডিউলের ভেতরের জিনিস খুব কম জানা লাগে। যখন AI কোড জেনারেট করে, মডুলারিটি prevents করে ব্যবসায়িক নিয়মগুলোকে কন্ট্রোলার, UI, এবং ডেটা এক্সেস জায়গায় ছড়িয়ে পড়া থেকে।

টেস্টযোগ্যতা মানে আর্কিটেকচার "প্রমাণ করো এটা কাজ করে"-কে সস্তা করে। ব্যবসায়িক নিয়মগুলো পুরো সিস্টেম ছাড়া টেস্ট করা যায়, আর ইন্টিগ্রেশন টেস্টগুলো কয়েকটি কনট্রাক্টের দিকে ফোকাস করে, প্রতিটি কোড পথ নয়।

কেন রিরাইট হয় (এবং কেন AI এগুলো বাড়াতে পারে)

রিরাইট সাধারণত “ব্যাড কোড” না থেকে ঘটে—এগুলো ঘটে কারণ অপূর্ণ কনস্ট্রেইন্ট, অস্পষ্ট স্কোপ, এবং লুকানো অনুমান। উদাহরণ:

  • একটা ফিচার এক ধরণের ব্যবহারকারীর জন্য বানানো হয়, পরে জানা যায় তিনটি রোল আছে এবং পারমিশন ভিন্ন।
  • পারফরম্যান্স, অডিট লগিং, বা ডেটা রিটেনশন নিয়ম পরে আসে।
  • একটি বহিরাগত API প্রত্যাশিতভাবে আচরণ করে না, ফলে সারাবিশ্বে পরিবর্তন লাগায়।

AI এই ব্যর্থতা মোডকে দ্রুততর করতে পারে—কারণ তা তাত্ক্ষণিকভাবে বিশ্বাসযোগ্য আউটপুট দেয়, ফলে মানুষ অস্থিতশীল ভিত্তির ওপর দ্রুত তৈরি করে ফেলে।

এই গাইডের প্যাটার্নগুলো থেকে কী আশা করবেন

এসব প্যাটার্ন হচ্ছে অ্যাডাপ্ট করার টেমপ্লেট, জাদু নয়। মূল উদ্দেশ্য হচ্ছে সঠিক কথাবার্তা আগেই বাধ্য করা: কনস্ট্রেইন্ট স্পষ্ট করা, অপশন তুলনা করা, অনুমান ডকুমেন্ট করা, এবং কনট্রাক্ট নির্ধারণ করা। যদি আপনি সেই চিন্তাটা বাদ দেন, মডেল আনন্দের সঙ্গে ফাঁকে ভরিয়ে দেবে—আর পরে আপনি তার মূল্য চুকাবেন।

আপনার ওয়ার্কফ্লোতে এই প্যাটার্নগুলো কোথায় ফিট করে

আপনি এগুলো পুরো ডেলিভারি চক্র জুড়ে ব্যবহার করবেন:

  • পরিকল্পনা: রিকোয়ারমেন্ট ও সাফল্য ক্রাইটেরিয়া কসট করুন
  • ডিজাইন: সীমা, ডেটা ফ্লো, এবং কনট্রাক্ট নির্ধারণ
  • কোডিং: ইমপ্লিমেন্টেশন বাড়ার সঙ্গে দায়িত্ব আলাদা রাখুন
  • রিভিউ: রিস্ক ও মিল না থাকা ধরুন, রিরাইট হওয়ার আগে

যদি আপনি ভিব-কোডিং ওয়ার্কফ্লো (vibe-coding) ব্যবহার করেন—যেখানে চ্যাটের মাধ্যমে সিস্টেম জেনারেট ও ইটারেট হয়—তবে এই চেকপয়েন্টগুলো আরো জরুরি। উদাহরণস্বরূপ, Koder.ai-এ আপনি “planning mode” লুপ চালিয়ে রিকোয়্যারমেন্ট ও কনট্রাক্ট লক করে React/Go/PostgreSQL কোড জেনারেট করার আগে, তারপর স্ন্যাপশট/রোলব্যাক ব্যবহার করে অনুমান বদলালে নিরাপদে ইটারেট করতে পারেন—প্রতিটি চেঞ্জকে রিরাইটে পরিণত না করে।

কীভাবে প্রম্পটিং প্যাটার্ন ব্যবহার করবেন যেন কাজ বাড়ে না

প্রম্পটিং প্যাটার্নগুলো সবচেয়ে মূল্যবান যখন এগুলো ডিসিশন চর্ন কমায়। চালাকিটা হলো এগুলোকে সংক্ষিপ্ত, পুনরাবৃত্তি যোগ্য চেকপয়েন্ট হিসেবে ব্যবহার করা—কোড করার আগে, ডিজাইন করার সময়, এবং রিভিউ-এর সময়—তাতে AI এমন আর্টিফ্যাক্ট উৎপাদন করে যা আপনি পুনঃব্যবহার করতে পারেন, না যে শুধু বাড়তি টেক্সট যা আপনাকে ছাঁটতে হবে।

কবে প্যাটার্ন ব্যবহার করবেন

কোডের আগে: একবার “অ্যালাইনমেন্ট” লুপ চালান যাতে লক্ষ্য, ব্যবহারকারী, কনস্ট্রেইন্ট, ও সাফল্য মেট্রিক কনফার্ম হয়।

ডিজাইনের সময়: স্পষ্ট ট্রেডঅফ জোর দেয় এমন প্যাটার্ন ব্যবহার করুন (উদা., বিকল্প, ঝুঁকি, ডেটা সীমা) ইমপ্লিমেন্ট করার আগে।

রিভিউয়ের সময়: চেকলিস্ট-স্টাইল প্রম্পট ব্যবহার করে গ্যাপ ধরুন (এজ কেস, মনিটরিং, সিকিউরিটি, পারফরম্যান্স) যাহাতে পরিবর্তন সস্তা অবস্থায় থাকে।

ইনপুট আগে জোগাড় করুন (হালকা রাখুন)

একটি ছোট, ধারাবাহিক ইনপুট বান্ডল দিয়ে আপনি ভালো আউটপুট পাবেন:

  • লক্ষ্য: কী ‘ডান’ (লেটেন্সি টার্গেট, UX ফলাফল, খরচ সীমা)
  • ব্যবহারকারী: রোল, প্রধান ওয়ার্কফ্লো, শীর্ষ ব্যথা পয়েন্ট
  • কনস্ট্রেইন্ট: টেক স্ট্যাক, ডেডলাইন, কমপ্লায়েন্স/সিকিউরিটি চাহিদা
  • ডেটা ও ইন্টিগ্রেশন: সোর্স, মালিকানা, API, তৃতীয়-পক্ষ নির্ভরতা

যদি কিছু না জানা থাকে, স্পষ্টভাবে বলুন এবং AI-কে অনুমান তালিকাভুক্ত করতে বলুন।

পুনঃব্যবহারযোগ্য আউটপুট ফরম্যাট চাইুন

“ডিজাইন ব্যাখ্যা কর” বলার বদলে এমন আর্টিফ্যাক্ট অনুরোধ করুন যা ডকস বা টিকেটে পেস্ট করা যাবে:

  • একটি ডিসিশন লগ (অপশন → প্রো/কন → নির্বাচিত → কেন)
  • একটি কম্পোনেন্ট টেবিল (দায়িত্ব ও সীমা)
  • একটি রিলায়াবিলিটি/টেস্টিং চেকলিস্ট
  • একটি সাধারণ ডায়াগ্রাম বর্ণনা (যেমন Mermaid টেক্সট) যা পরে রেন্ডার করা যাবে

গ্রহনযোগ্যতার ক্রাইটেরিয়া সহ ছোট লুপে ইটারেট করুন

10–15 মিনিটের লুপ করুন: প্রম্পট → স্কিম → টাইটেন। সবসময় অ্যাপসেপ্ট্যান্স ক্রাইটেরিয়া অন্তর্ভুক্ত করুন (ডিজাইন গ্রহণযোগ্য হওয়ার শর্ত), তারপর AI-কে সেগুলোর বিরুদ্ধে নিজের উত্তর চেক করতে বলুন। এতে প্রক্রিয়াটা অশেষ রিডিজাইনে পরিণত হয় না এবং পরের সেকশনের প্যাটার্ন দ্রুত প্রয়োগযোগ্য হয়।

প্যাটার্ন 1: কোনো ডিজাইনের আগে রিকোয়ারমেন্ট ক্লারিফাই করুন

অধিকাংশ আর্কিটেকচার রিরাইট ডায়াগ্রামের ত্রুটি নয়—এগুলি ঘটে যখন সঠিক জিনিস ভুল বা অসম্পূর্ণ প্রোবলেমের জন্য তৈরি করা হয়। যখন আপনি প্রথমে LLM ব্যবহার করেন, আর্কিটেকচার চাওয়ার বদলে তাকে অস্পষ্টতা উন্মোচন করতে বলুন।

প্রম্পট মুভ: অনিশ্চয়তাকে একটি চেকলিস্টে রূপান্তর করুন

মডেলকে রিকোয়ারমেন্ট ইন্টারভিউয়ার হিসেবে ব্যবহার করুন। আপনার লক্ষ্য একটি সংক্ষিপ্ত, অগ্রাধিকারভিত্তিক স্পেক পাওয়া যা আপনি কেউকে ডিজাইন, ডাটাবেস, বা API কমিট করার আগে কনফার্ম করতে পারেন।

নিচের কপি-পেস্ট টেমপ্লেটটি পুনরায় ব্যবহার করুন:

You are my requirements analyst. Before proposing any architecture, do this:

1) Ask 10–15 clarifying questions about missing requirements and assumptions.
   - Group questions by: users, workflows, data, integrations, security/compliance, scale, operations.

2) Produce a prioritized scope list:
   - Must-have
   - Nice-to-have
   - Explicitly out-of-scope

3) List constraints I must confirm:
   - Performance (latency/throughput targets)
   - Cost limits
   - Security/privacy
   - Compliance (e.g., SOC2, HIPAA, GDPR)
   - Timeline and team size

4) End with: “Restate the final spec in exactly 10 bullets for confirmation.”

Context:
- Product idea:
- Target users:
- Success metrics:
- Existing systems (if any):

(এই কোড-ফেন্সের ভিতরের অংশ অ্যালটার না করে রাখুন।)

আউটপুটে কী খোঁজ করবেন

আপনি এমন প্রশ্ন চাইবেন যা সিদ্ধান্ত জোর করে (নন-জেনেরিক “আর বলুন”), এবং এমন একটি must-have তালিকা যা আপনার টাইমলাইনে সত্যিই সম্পন্ন করা যায়।

“10 বুলেট” রিস্টেটমেন্টকে চুক্তি হিসেবে ব্যবহার করুন: এটিকে টিকেটে/PRD-তে পেস্ট করুন, স্টেকহোল্ডারদের দ্রুত হ্যাঁ/না নিন, তারপরই আর্কিটেকচারে এগোন। এই এক ধাপ সবচেয়ে সাধারণ জিনিস রোধ করে: অপ্রয়োজনীয় ফিচার তৈরির কারণে পরে হওয়া রিফ্যাক্টর।

প্যাটার্ন 2: প্রথমে ইউজার জার্নি, তারপর টেকনিক্যাল পছন্দ

যখন আপনি সরাসরি টুল দিয়ে শুরু করেন ("আমরা ইভেন্ট সোর্সিং ব্যবহার করব?”), আপনি প্রায়শই আর্কিটেকচারের জন্য ডিজাইন করতে শুরু করেন না বরং ইউজারের জন্য ডিজাইন করা দরকার। দ্রুত পথ হলো AI-কে প্রথমে সাধারণ ভাষায় ইউজার জার্নি বর্ণনা করাতে, তারপর সেগুলোকে কম্পোনেন্ট, ডেটা, ও API-তে ট্রান্সলেট করা।

একটি সহজ জার্নি-ফার্স্ট প্রম্পট টেমপ্লেট

এই কপি-পেস্ট স্টার্টিং পয়েন্ট ব্যবহার করুন:

  • Roles: user / admin / system
  • Key actions: প্রতিটি রোল কী করতে চায়
  • Edge cases: কী ভাঙতে পারে (ভুল ইনপুট, পারমিশন নেই, পার্শিয়াল কমপ্লিশন)

তারপর বলুন:

  1. “প্রতিটি অ্যাকশনের জন্য step-by-step ফ্লো বর্ণনা করুন সরল ভাষায়।”

  2. “একটি সহজ স্টেট ডায়াগ্রাম বা স্টেট লিস্ট দিন (যেমন Draft → Submitted → Approved → Archived)।”

  3. “নন‑হ্যাপি‑পাথ তালিকা দিন: টাইমআউট, রিট্রাই, ডুপ্লিকেট অনুরোধ, ক্যানসেলেশন, এবং ইনভ্যালিড ইনপুট।”

জার্নি থেকে ডিসিশনে যাওয়া (আগেভাগেই না ঝাঁপিয়ে)

ফ্লোগুলো পরিষ্কার হলে AI-কে ম্যাপ করতে বলুন:

  • কোথায় ভ্যালিডেশন দরকার বনাম বিজনেস রুল?
  • কোন ধাপে আইডেম্পোটেন্সি দরকার (সেই গুলো কিভাবে নিরাপদretry-এর জন্য)?
  • কী ডেটা স্টোর করা আবশ্যক, কী ডেরাইভ করা যায়, আর কী আইটেমের জন্য অডিট ট্রেইল লাগবে?

এরপরই আর্কিটেকচারের খসড়া (সার্ভিস/মডিউল, সীমা, ও দায়িত্ব) চাইুন, সরাসরি সেই ফ্লো স্টেপগুলোর সাথে মেলিয়ে।

ফ্লোকে টেস্টেবল অ্যাকসেপ্ট্যান্সে রূপান্তর করুন

শেষে AI-কে বলুন প্রতিটি জার্নি Given/When/Then আকারে কনভার্ট করতে:

  • প্রতিটি ধাপ ও ব্যর্থ কেসের জন্য Given/When/Then
  • সিস্টেম কি রিটার্ন করবে বা কি দেখাবে?
  • কোনটি লগ হবে, আর কোনটি রিট্রাই ট্রিগার করবে বনাম ইউজার-ফেসিং এরর?

এই প্যাটার্ন রিরাইট কমায় কারণ আর্কিটেকচার ইউজার আচরণ থেকে বাড়ে—টেক-অনুমান থেকে নয়।

প্যাটার্ন 3: Assumption Log—হঠাৎ রিরাইট বন্ধ করার জন্য

বেশিরভাগ আর্কিটেকচার রিকভাবে বদলানো হয় লুকানো অনুমানের কারণে। যখন আপনি LLM‑কে আর্কিটেকচার চান, এটি প্রায়শই ফাঁকগুলো বিশ্বাসযোগ্য অনুমান দিয়ে ভর্তি করে দেয়। একটি Assumption Log সেই অনুমানগুলোকে আগে থেকেই দৃশ্যমান করে, যখন বদল সস্তা।

মডেলকে কী করতে বলবেন

আপনার লক্ষ্য হলো আপনি যা দিয়েছেন এবং মডেল কী অনুমান করেছে আলাদা করে দেখানো। এই প্রম্পট প্যাটার্ন ব্যবহার করুন:

Template prompt “Before proposing any solution: list your assumptions. Mark each as validated (explicitly stated by me) or unknown (you inferred it). For each unknown assumption, propose a fast way to validate it (question to ask, metric to check, or quick experiment). Then design based only on validated assumptions, and call out where unknowns could change the design.”

একটি পুনরায় ব্যবহারযোগ্য "assumption log" বিন্যাস

সংক্ষিপ্ত রাখুন যাতে লোকেরা আসলে ব্যবহার করে:

  • Assumption:
  • Status: validated / unknown
  • Why it matters: কোন সিদ্ধান্তে প্রভাব ফেলে
  • How to validate: প্রশ্ন, চেক, বা স্পাইক
  • If wrong, likely change: আপনি কি পুনরায় ডিজাইন করবেন

“What would change your answer?” ট্রিগার

একটি লাইন যোগ করুন যাতে মডেল বলে তার টিপিং‑পয়েন্ট:

  • “List 5 triggers: what would change your answer? (উদাহরণ: user volume, latency targets, compliance needs, data retention rules).”

এই প্যাটার্ন আর্কিটেকচারকে শর্তসাপেক্ষ ডিসিশনের সেটে পরিণত করে। আপনি শুধু একটি ডায়াগ্রাম পাবেন না—আপনি একটি মানচিত্র পাবেন যা বলে কোন কিছু কনফার্ম না করলে ডিজাইন বদলাতে পারে।

প্যাটার্ন 4: একটি নেওয়ার আগে একাধিক আর্কিটেকচার তুলনা করুন

আত্মবিশ্বাসের সঙ্গে ইটারেট করুন
বড় পরিবর্তনের আগে স্ন্যাপশট সংরক্ষণ করুন যাতে আইডিয়া পরীক্ষা করে নিরাপদে রোলব্যাক করতে পারেন।

AI টুলগুলো একক “সেরা” ডিজাইন তৈরি করতে ভাল—কিন্তু সেটি প্রায়ই প্রথম বৈধ অপশন মাত্র। পরিষ্কার আর্কিটেকচার সাধারনত তখনই আসে যখন আপনি তুলনা জোর দেন, যতক্ষণ বদল সস্তা।

মূল প্রম্পট টেমপ্লেট

একটি প্রম্পট ব্যবহার করুন যা একাধিক আর্কিটেকচার এবং গঠনবদ্ধ ট্রেডঅফ টেবিল চায়:

Propose 2–3 viable architectures for this project.
Compare them in a table with criteria: complexity, reliability, time-to-ship, scalability, cost.
Then recommend one option for our constraints and explain why it wins.
Finally, list “what we are NOT building” in this iteration to keep scope stable.

Context:
- Users and key journeys:
- Constraints (team size, deadlines, budget, compliance):
- Expected load and growth:
- Current systems we must integrate with:

(কোড-ফেন্সের ভিতরের অংশ অপরিবর্তিত রাখুন।)

কেন এটি রিরাইট কমায়

তুলনা মডেল (আর আপনাকেও) বাধ্য করে গোপন অনুমানগুলো—কোথায় state থাকে, সার্ভিসগুলো কিভাবে কথা বলে, কী synchronous থাকা উচিত—উন্মোচন করতে।

ক্রাইটেরিয়া টেবিল গুরুত্বপূর্ণ, কারণ এটি “মাইক্রোসার্ভিস বনাম মনোলিথ” মত আলোচনা‑ভিত্তিক বিতর্ককে বন্ধ করে দেয় এবং সিদ্ধান্ত আপনার আসল চাহিদার সাথে জোড়ায়: দ্রুত শিপ করা, অপারেশনাল ওভারহেড কমানো, বা নির্ভরযোগ্যতা বাড়ানো—যেটা আপনার কাছে বেশি গুরুত্বপূর্ণ।

সুপারিশ এবং সীমা দরকার

“It depends” মানবেন না। একটি পরিষ্কার সুপারিশ চাহুন এবং কোন কনস্ট্রেইন্ট সেটটি অপ্টিমাইজ করে সেটা বলুন।

এছাড়াও জোর দিন “এখন আমরা কি বানাচ্ছি না”—উদাহরণ: “No multi-region failover”, “No plugin system”, “No real-time notifications.” এটা আর্কিটেকচারকে অপ্রয়োজনীয় ব্যাপারে বর্ধিত হওয়া থেকে রোধ করে—এবং পরে স্কোপ বদলালে হঠাৎ রিরাইট আটকায়।

প্যাটার্ন 5: মডুলার বাউন্ডারি ও দায়িত্ব প্রম্পট

অধিকাংশ রিরাইট ঘটে কারণ বাউন্ডারি অস্পষ্ট: সবকিছুই “সবকিছুর সাথে ছোঁয়াশা”, আর ছোট পরিবর্তনগুলো কোডবেস জুড়ে ছড়িয়ে পড়ে। এই প্যাটার্নটি এমন প্রম্পট ব্যবহার করে যা কাউকে স্পষ্ট মডিউল মালিকানা নির্ধারণ করতে বাধ্য করে, বাস্তবায়ন বা ফ্রেমওয়ার্ক নিয়ে তর্ক করার আগে।

মূল ধারণা

AI-কে বলুন মডিউল এবং দায়িত্ব সংজ্ঞায়িত করতে, এবং প্রতিটির জন্য স্পষ্টভাবে কি নয় তা বলাও। তারপর ইন্টারফেস (ইনপুট/আউটপুট) এবং ডিপেন্ডেন্সি নিয়ম চাইুন—বিল্ড প্ল্যান বা ইমপ্লিমেন্টেশন ডিটেইলস নয়।

কপি-পেস্ট প্রম্পট টেমপ্লেট

এটি ব্যবহার করুন যখন আপনি নতুন ফিচার স্কেচ করছেন বা মেসি এলাকাটি রিফ্যাক্টর করতে যাচ্ছেন:

  • Context: <one paragraph about the product/feature>
  • Goal: Propose a modular architecture with 4–8 modules.
  1. List modules with:

    • Purpose (1 sentence)
    • Responsibilities (3–5 bullets)
    • Non-responsibilities (“does NOT handle…”) (2–3 bullets)
  2. For each module, define interfaces only:

    • Inputs (events/requests/data)
    • Outputs (responses/events/side effects)
    • Public API surface (function names or endpoints ok; no internal classes)
  3. Dependency rules:

    • Allowed dependencies (A → B)
    • Forbidden dependencies (A ↛ C) with reasoning
    • Where shared types live (and what must never be shared)
  4. Future change test: Given these likely changes: <list 3>, show which single module should absorb each change and why.

“ভালো” আউটপুট কেমন হওয়া উচিত

আপনি এমন মডিউল চাইবেন যা একজন সহকর্মীকে এক মিনিটে বলে বোঝানো যায়। যদি AI “Utils” মডিউল প্রস্তাব করে বা ব্যবসায়িক নিয়মগুলো কন্ট্রোলারে রাখে, বলুন: “ডিসিশন‑মেকিং ডোমেন মডিউলে টেনে নাও এবং অ্যাডাপ্টারগুলো পাতলা রাখো।”

শেষ করলে আপনার কাছে এমন সীমারেখা থাকবে যা নতুন রিকোয়ারমেন্ট টিকে সহ্য করে—কারণ পরিবর্তনগুলোর স্পষ্ট বাড়ি আছে এবং ডিপেন্ডেন্সি নিয়ম দুর্ঘটনাক্রমে কাপলিং আটকায়।

প্যাটার্ন 6: ডেটা ও API কনট্রাক্ট প্রথম (ইন্টিগ্রেশন রিওয়ার্ক এড়াতে)

ইন্টিগ্রেশন রিওয়ার্ক প্রায়শই “খারাপ কোড” থেকে নয়—এটি স্পষ্ট কনট্রাক্ট না থাকায় হয়। যদি ডেটা মডেল ও API শেপগুলো পরে ঠিক করা হয়, প্রতিটি দল/মডিউল বিভিন্নভাবে ফাঁক পূরণ করে, এবং পরের স্প্রিন্টে আপনি হ্যান্ডশেক মেলাতে ব্যয় করবেন।

শুরুতেই কনট্রাক্টের জন্য প্রম্পট করুন, তারপর ফ্রেমওয়ার্ক, ডেটাবেস বা মাইক্রোসার্ভিস নিয়ে আলোচনা করুন। একটি স্পষ্ট কনট্রাক্ট UI, ব্যাকএন্ড, ও ডেটা পাইপলাইনকে সঙ্গত রাখে।

কনট্রাক্ট-ফার্স্ট প্রম্পট

শাইন ইয়ারলি এই প্রম্পটটি আপনার AI অ্যাসিস্ট্যান্টের কাছে ব্যবহার করুন:

  • Template: “Describe the data model, ownership, and lifecycle for each entity”

তারপর সঙ্গে সঙ্গে বলুন:

  • API কনট্রাক্টের উদাহরণ চাইুন (request, response, error shapes)
  • ভার্সনিং ও ব্যাকওয়ার্ড-কম্প্যাটিবিলিটি প্রত্যাশা যোগ করুন
  • প্রতিটি ফিল্ডের ভ্যালিডেশন নিয়ম ও এজকেস চাইুন

“ভালো” আউটপুট দেখতে কেমন

আপনি কংক্রিট আর্টিফ্যাক্ট চাইবেন, বড়‑বড় লেখা নয়। উদাহরণ:

  • Entity: Subscription
    • Owner: Billing service
    • Lifecycle: created on checkout → active → past_due → canceled (soft-delete after 90 days)
    • Source of truth: billing DB; other services cache read-only copies

এবং একটি API খসড়া:

POST /v1/subscriptions
{
  "customer_id": "cus_123",
  "plan_id": "pro_monthly",
  "start_date": "2026-01-01"
}
201 Created
{
  "id": "sub_456",
  "status": "active",
  "current_period_end": "2026-02-01"
}
422 Unprocessable Entity
{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "start_date must be today or later",
    "fields": {"start_date": "in_past"}
  }
}

(উপরের কোড ব্লকগুলো অরিজিনাল ইংরেজি অবস্থায় রাখা হয়েছে—অনুবাদ করবেন না।)

ভার্সনিং ও কম্প্যাটিবিলিটি নিয়ম

AI-কে বলুন যেমন নিয়ম স্টেট করতে: “অ্যাডিটিভ ফিল্ডগুলো ভার্সন বাম্প ছাড়া যোগ করা যাবে; রিনেম করলে /v2 দরকার; ক্লায়েন্টরা অজানা ফিল্ডগুলো উপেক্ষা করবে।” এই এক ধাপ চুপচাপ ব্রেকিং চেঞ্জগুলো রোধ করে—এবং পরের রিরাইটগুলো ঠেকায়।

প্যাটার্ন 7: ফেলিউর মোড ও রিলায়াবিলিটি চেকলিস্ট

API আকার নির্ধারণ করুন
UI, backend ও ইন্টিগ্রেশন একসাথে রাখতে আগে থেকেই ডেটা ও API চুক্তি তৈরি করুন।

আর্কিটেকচারগুলো রিরাইট হয় যখন “হ্যাপি পাথ” ডিজাইন বাস্তব ট্রাফিক, ফ্লাকি নির্ভরতা, এবং অপ্রত্যাশিত ব্যবহারকারীর আচরণের সম্মুখীন হয়। এই প্যাটার্ন রিলায়াবিলিটিকে একটি স্পষ্ট ডিজাইন আউটপুটে পরিণত করে, পোস্ট‑লঞ্চ স্ক্রাম্বল নয়।

কপি/পেস্ট প্রম্পট টেমপ্লেট

নির্বাচিত আর্কিটেকচার বর্ণনার সঙ্গে এটি ব্যবহার করুন:

List failure modes; propose mitigations; define observability signals.

For each failure mode:

  • What triggers it?
  • User impact (what the user experiences)
  • Mitigation (design + operational)
  • Retries, idempotency, rate limits, timeouts considerations
  • Observability: logs/metrics/traces + alert thresholds

মডেলকে কী কভার করতে বলবেন (নন-নেগোশিয়েবল)

ফোকাস রাখুন যে ইন্টারফেসগুলো ফেল হতে পারে: এক্সটার্নাল APIs, ডাটাবেস, কিউ, auth provider, এবং ব্যাকগ্রাউন্ড জব। তারপর কংক্রিট ডিসিশন চাইুন:

  • Retries: কখন retry, কতবার, ব্যাকঅফ স্ট্র্যাটেজি, এবং কোন এরর retryable
  • Idempotency: idempotency কিজ, dedupe উইন্ডো, কোন স্টেট রেপ্লে নিরাপদ
  • Rate limits: per user/IP/service limits, ক্লায়েন্ট বার্তা, সার্ভার‑সাইড প্রটেকশন
  • Timeouts: প্রতিটি ডিপেন্ডেন্সির জন্য, মোট রিকোয়েস্ট বাজেট, ও ক্যান্সেল প্রোপাগেশন

রিলায়াবিলিটি চেকলিস্ট আউটপুট

প্রম্পট শেষ করুন: “Return a simple checklist we can review in 2 minutes.” একটি ভালো চেকলিস্টে থাকবে: dependency timeouts সেট করা, retries সীমাবদ্ধ, idempotency ক্রিয়ান্বিত, backpressure/rate limiting আছে, graceful degradation পথ সংজ্ঞায়িত।

ইউজার অ্যাকশনের সঙ্গে অবজার্ভেবিলিটি

ইভেন্টগুলো ইউজারের মুহূর্তগুলোর চারপাশে নামকরণ করুন (সিস্টেম‑ইনটার্নাল ছাড়াও): “user_signed_up”, “checkout_submitted”, “payment_confirmed”, “report_generated”。প্রতিটির জন্য চাইুন:

  • Log fields (user_id, request_id, idempotency_key)
  • Metrics (success rate, latency p95/p99, retry count)
  • Traces (প্রতিটি ডিপেন্ডেন্সি কলের স্প্যান)

এটি রিলায়াবিলিটিকে এমন একটি ডিজাইন আর্টিফ্যাক্টে রূপান্তর করে যা কোড হওয়ার আগে যাচাই করা যায়।

প্যাটার্ন 8: MVP স্লাইস পরিকল্পনা—ওভারবিল্ডিং এড়াতে

AI-সহায়ক ডিজাইন প্রায়শই খুব শীঘ্র “সম্পূর্ণ” আর্কিটেকচার তৈরির উৎসাহ দেয়—ফলে রিরাইট হওয়ার সুযোগ বাড়ে। সমাধানটি সহজ: পরিকল্পনাকে বাধ্য করুন সবচেয়ে ছোট ব্যবহারযোগ্য স্লাইস দিয়ে—একটি যা ভ্যালু দেয়, ডিজাইন প্রমাণ করে, এবং ভবিষ্যৎ অপশন খোলা রাখে।

প্রম্পট টেমপ্লেট

আপনি যখন মনে করেন সলিউশন রিকোয়ারমেন্টের চেয়ে দ্রুত বাড়ছে, এই টেমপ্লেটটি ব্যবহার করুন:

Template: “Propose the smallest usable slice; define success metrics; list follow-ups.”

মডেলকে বলুন উত্তর দিন:

  • MVP slice: শিপ করার জন্য কি অন্তর্ভুক্ত
  • Success metrics: কিভাবে জানবেন এটা কাজ করেছে (ইউজার‑ফেসিং + টেকনিক্যাল)
  • Follow-ups: কি পরে করা যাবে কারণ এটা লার্নিং ব্লক করছে না

ধাপে ধাপে রোডম্যাপ দাবি করুন (MVP → v1 → v2)

দ্বিতীয় নির্দেশ যোগ করুন: “Give a phased roadmap: MVP → v1 → v2, and explain what risk each phase reduces.” এটি পরের আইডিয়াগুলো দৃশ্যমান রাখে কিন্তু প্রথম রিলিজে চাপায় না।

উদাহরণ ফলাফল:

  • MVP কোর ওয়ার্কফ্লো ও একটি পাতলা end-to-end পথ ভ্যালিডেট করে।
  • v1 রিলায়াবিলিটি হার্ডেন করে, প্রয়োজনীয় ইউএক্স যোগ করে।
  • v2 ব্রডথ বাড়ায় (আরো ইন্টিগ্রেশন, অ্যাডভান্সড রোল, অপটিমাইজেশন)।

স্পষ্ট ব্যতিক্রম দাবি করুন—স্কোপ ক্র্যাপ প্রতিরোধে

এই প্যাটার্নের সবচেয়ে শক্ত লাইন: “List what is explicitly out of scope for MVP.” ব্যতিক্রমগুলো আর্কিটেকচারের সিদ্ধান্তকে প্রাথমিক জটিলতা থেকে রক্ষা করে।

ভালো ব্যতিক্রম দেখায়:

  • “No multi-region failover in MVP (log incidents; plan for v2).”
  • “No plugin system yet (keep boundaries clean, but ship fixed modules).”
  • “Only one payment provider; abstract later if needed.”

প্ল্যানকে টিকেটে রূপান্তর করুন নির্ভরশীলতা সহ

শেষে: “Convert the MVP into tickets, each with acceptance criteria and dependencies.” এটি স্পষ্টতা জোর করে এবং লুকানো কাপলিং উন্মোচিত করে।

একটি শক্ত টিকেট ব্রেকডাউন সাধারণত অন্তর্ভুক্ত করে:

  1. পাতলা end-to-end “happy path”
  2. মিনিমাল ডেটা মডেল + API কনট্রাক্ট
  3. বেসিক এরর হ্যান্ডলিং ও লগিং
  4. একটি ইন্টিগ্রেশন পয়েন্ট (যদি দরকার) স্টাবড ফ্যালব্যাকে

আপনি চাইলে মডেলকে আপনার টিম ফরম্যাটে আউটপুট করতে বলুন (উদাহরণ: Jira-style ফিল্ড) এবং পরের ফেজগুলো আলাদা ব্যাকলগ হিসেবে রাখুন।

প্যাটার্ন 9: টেস্ট-ফার্স্ট প্রম্পট—ভাল ডিজাইন গঠন করে

আপনার কোডবেসের মালিক হন
আপনি যখন তৈরিকৃত অ্যাপের উপর পূর্ণ নিয়ন্ত্রণ চান তখন সোর্স কোড এক্সপোর্ট করুন।

আর্কিটেকচার drift রোধ করার সহজ উপায় হলো ডিজাইন চাইবার আগে টেস্ট বাধ্য করা। যখন আপনি LLM‑কে acceptance tests‑এর সাথে শুরু করতে বলেন, এটি আচরণ, ইনপুট, আউটপুট, এবং এজকেসগুলো নামতেই করে—যা মিসিং রিকোয়ারমেন্টকে প্রকাশ করে এবং ইমপ্লিমেন্টেশনকে পরিষ্কার মডিউল বাউন্ডারির দিকে ঠেলে।

কপি-পেস্ট প্রম্পট টেমপ্লেট

প্রতিটি কম্পোনেন্ট ডিজাইন করার আগে gate প্রম্পট হিসেবে এটি ব্যবহার করুন:

  • Template: “Write acceptance tests first; then propose implementation. You must: (1) list assumptions, (2) name unit vs integration tests, (3) define test data and mocks vs real dependencies, (4) include a definition of done.”

মডিউলের সাথে মেলানো টেস্ট বাউন্ডারি চাইুন

পরে বলুন: “Group the tests by module responsibility (API layer, domain logic, persistence, external integrations). For each group, specify what is mocked and what is real.”

এটি LLM‑কে tangled ডিজাইন থেকে দূরে ঠেলে। যদি এটি ব্যাখ্যা করতে না পারে কোথায় integration tests শুরু হয়, আপনার আর্কিটেকচার সম্ভবত এখনও পরিষ্কার নয়।

টেস্ট ডেটা স্ট্র্যাটেজি: brittle সুইট এড়ান

চাহুন: “Propose a test data plan: fixtures vs factories, how to generate edge cases, and how to keep tests deterministic. List which dependencies can use in-memory fakes and which require a real service in CI.”

আপনি প্রায়ই আবিষ্কার করবেন একটি “সরল” ফিচার আসলে একটি কনট্রাক্ট, একটি সিড ডেটাসেট, বা স্থির ID প্রয়োজন—এগুলো এখনই খুঁজে পাওয়া ভাল, রিরাইটের চেয়ে।

ডনের সংজ্ঞা (ডিজাইন শিপ করতে)

একটি হালকা চেকলিস্ট দিয়ে শেষ করুন:

  • টেস্ট পাস (ইউনিট + ইন্টিগ্রেশন) এবং ফেলিউর কেস কভারেজ
  • মিনিমাল ডকস: ব্যবহার, কনফিগ, এবং সংক্ষিপ্ত ট্রাবলশুটিং নোট
  • মনিটরিং/অ্যালার্টস প্রধান ফেলিউর মোডের জন্য
  • রোলআউট প্ল্যান (ফিচার ফ্ল্যাগ, মাইগ্রেশন স্টেপ, রোলব্যাক)

প্যাটার্ন 10: ডিজাইন রিভিউ প্রম্পট—সমস্যা আগেই ধরুন

ডিজাইন রিভিউ শুধু কোড হওয়ার পরে হওয়া উচিত নয়। AI দিয়ে আপনি একটি “pre-mortem review” চালাতে পারেন আপনার আর্কিটেকচারের খসড়ায় (এমনকি যদি তা মাত্র কয়েক প্যারাগ্রাফ এবং কথায়‑ডায়াগ্রামও হয়) এবং কনক্রীট দুর্বলতা তালিকা পেতে পারেন যখনো এগুলো রিরাইটে পরিণত হয় না।

মূল রিভিউ টেমপ্লেট

একটা সোজাসুজি রিভিউয়ার স্ট্যান্স নিয়ে specificity বাধ্য করুন:

Prompt: “Act as a reviewer; list risks, inconsistencies, and missing details in this design. Be concrete. If you can’t evaluate something, say what information is missing.”

আপনার ডিজাইন সামারি, কনস্ট্রেইন্ট (বাজেট, টাইমলাইন, টিম স্কিল), এবং যেকোনো নন‑ফাংশনাল রিকোয়ারমেন্ট (লেটেন্সি, অ্যাভেইলিবিলিটি, কমপ্লায়েন্স) পেস্ট করুন।

ফিডব্যাককে অ্যাকশনেবল পাঞ্চলিস্টে রূপান্তর করুন

রিভিউ তখনই কাজে লাগে যখন ফিডব্যাক কনক্রিট হয়। অনুরোধ করুন একটি প্রায়োরিটাইজড ফিক্স তালিকা:

Prompt: “Give me a prioritized punch list. For each item: severity (Blocker/High/Medium/Low), why it matters, suggested fix, and the smallest validation step.”

এটি সিদ্ধান্ত‑রেডি টাস্ক দেয় না যে কেবল বিতর্ক—ফলে কাজ দ্রুত করা যায়।

রিরাইট রিস্ক সংখ্যায়িত করুন

একটি কাজে লাগার মতো বল প্রেরণা হলো একটি সরল স্কোর:

Prompt: “Assign a rewrite risk score from 1–10. Explain the top 3 drivers. What would reduce the score by 2 points with minimal effort?”

আপনি নির্ভুলতা খুঁজছেন না—আপনি চাইছেন সবচেয়ে রিরাইট‑প্রোন অনুমানগুলোকে উন্মোচন করা।

শেষ করুন একটি “diff plan” দিয়ে

অবশেষে, রিভিউকে স্কোপ সম্প্রসারণে পরিণত করাকে রোধ করুন:

Prompt: “Provide a diff plan: minimal changes needed to reach the target design. List what stays the same, what changes, and any breaking impacts.”

প্রতিটি ইটারেশনে এই প্যাটার্নটি চালালে, আপনার আর্কিটেকচার ছোট, রিভার্সিবল ধাপে বিকশিত হবে—আর বড় সমস্যা আগে ধরা পড়বে।

একটি কপি‑পেস্ট প্রম্পট প্যাক এবং সরল ওয়ার্কফ্লো

এই প্যাকটি হালকা ওয়ার্কফ্লো হিসেবে ব্যবহার করুন যা প্রতিটি ফিচারে পুনরাবৃত্তি করা যায়। ধারণা হলো প্রম্পটগুলোকে চেইন করা যাতে প্রতিটি ধাপ এমন একটি আর্টিফ্যাক্ট উত্পাদন করে যা পরের ধাপ পুনরায় ব্যবহার করতে পারে—এতে “হারানো প্রসঙ্গ” এবং অপ্রত্যাশিত রিরাইট কমে।

6‑স্টেপ ওয়ার্কফ্লো (এই প্যাটার্নগুলো চেইন করুন)

  1. Requirements (clarify + constraints)
  2. Architecture options (compare 2–3 approaches)
  3. Boundaries (modules + responsibilities)
  4. Contracts (data + APIs)
  5. Tests (test-first acceptance + key unit tests)
  6. Review (failure modes + design review checklist)

প্রায়শই দলগুলো এই চেইনটিকে একটি পুনরাবৃত্ত “ফিচার রেসিপি” হিসেবে প্রয়োগ করে। যদি আপনি Koder.ai ব্যবহার করে তৈরি করেন, একই স্ট্রাকচার চ্যাট-চালিত বিল্ড প্রসেসে খাপ খায়: আর্টিফ্যাক্টগুলো এক জায়গায় ক্যাপচার করুন, প্রথম কাজ করা স্লাইস জেনারেট করুন, তারপর স্ন্যাপশট দিয়ে ইটারেট করুন যাতে পরীক্ষা রিভার্সিবল থাকে। যখন MVP রেডি, আপনি সোর্স কোড এক্সপোর্ট বা কাস্টম ডোমেইন সহ ডিপ্লয়/হোস্ট করতে পারবেন—গুরুত্বপূর্ণ যখন আপনি AI-সহায়ক ডেলিভারির গতি চান কিন্তু নিজেকে এক পরিবেশে লক করতে চান না।

কপি/পেস্ট প্রম্পট প্যাক (গার্ডরেইলসহ)

SYSTEM (optional)
You are a software architecture assistant. Be practical and concise. 
Guardrail: When you make a recommendation, cite the specific lines from *my input* you relied on by quoting them verbatim under “Input citations”. Do not cite external sources or general industry claims.
If something is unknown, ask targeted questions.
1) REQUIREMENTS CLARIFIER
Context: <product/system overview>
Feature: <feature name>
My notes: <paste bullets, tickets, constraints>

Task:
- Produce: (a) clarified requirements, (b) non-goals, (c) constraints, (d) open questions.
- Include “Input citations” quoting the exact parts of my notes you used.
2) ARCHITECTURE OPTIONS
Using the clarified requirements above, propose 3 architecture options.
For each: tradeoffs, complexity, risks, and when to choose it.
End with a recommendation + “Input citations”.
3) MODULAR BOUNDARIES
Chosen option: <option name>
Define modules/components and their responsibilities.
- What each module owns (and does NOT own)
- Key interfaces between modules
- “Input citations”
4) DATA & API CONTRACTS
For each interface, define a contract:
- Request/response schema (or events)
- Validation rules
- Versioning strategy
- Error shapes
- “Input citations”
5) TEST-FIRST ACCEPTANCE
Write:
- Acceptance criteria (Given/When/Then)
- 5–10 critical tests (unit/integration)
- What to mock vs not mock
- “Input citations”
6) RELIABILITY + DESIGN REVIEW
Create:
- Failure modes list (timeouts, partial failure, bad data, retries)
- Observability plan (logs/metrics/traces)
- Review checklist tailored to this feature
- “Input citations”

(কোড ফেন্সগুলো অপরিবর্তিত রাখুন।)

If you want a deeper companion, see /blog/prompting-for-code-reviews. If you’re evaluating tooling or team rollout, /pricing is a practical next stop.

সাধারণ প্রশ্ন

What does “cleaner architecture” mean in this guide?

“পরিষ্কার আর্কিটেকচার” এই গাইডে মানে হলো আপনি করতে পারেন:

  • পদ্ধতিটা সহজভাবে ব্যাখ্যা করা (উদ্দেশ্য, ব্যবহারকারী, ডেটা, কী করা অনুমোদিত নয়)।
  • একটি অংশ পরিবর্তন করলে অপর অংশ ভেঙে না যাওয়া (স্পষ্ট সীমারেখা)।
  • সাশ্রয়ীভাবে বেহেভিয়ার যাচাই করা যায় (ব্যবসায়িক নিয়মগুলো পুরো সিস্টেম ছাড়া টেস্ট করা যায়)।

AI-সহায়িত কাজেও এর মানে হলো মডেলটি এমনভাবে রিকোয়্যারমেন্ট ধারাবাহিকভাবে ফিরিয়ে দিতে পারবে, যেন আপনি তাঁকে সই করে দেবেন।

Why can AI-assisted development lead to more rewrites?

AI দ্রুত বিশ্বাসযোগ্য কোড ও ডিজাইন তৈরি করতে পারে, যা সহজেই অনুমতি ছাড়া সিদ্ধান্ত এবং লুকানো অনুমান-এর ওপর নির্মিত হতে পারে। এই দ্রুততা নিচের মতো রিরাইট-ট্রিগারগুলো বাড়িয়ে দিতে পারে:

  • পরে জানতে পারা যে আরও অনেক রোল/পারমিশন দরকার।
  • ইমপ্লিমেন্টেশনের পরে পারফরম্যান্স/অডিট/রিটেনশন চাহিদা যোগ হওয়া।
  • কোনো বহি:স্থ API প্রত্যাশার বিপরীতে আচরণ করা।

সমাধান হলো AI কমানো নয় — বরং প্রম্পটে এমন বাধ্যতামূলক নির্দেশ রাখা যাতে শীঘ্রই কনস্ট্রেইন্ট, কনট্রাক্ট ও অনুমান প্রকাশ পায়।

When should I use these prompting patterns in my workflow?

এগুলোকে ছোট, পুনরাবৃত্তি যোগ্য চেকপয়েন্ট হিসেবে ব্যবহার করুন—যা পুনরায় ব্যবহারযোগ্য আর্টিফ্যাক্ট দেয় (নোট কাগজ নয়):

  • কোড করার আগে: একটি অ্যালাইনমেন্ট লুপ (লক্ষ্য, ব্যবহারকারী, কনস্ট্রেইন্ট, সাফল্য মেট্রিক)।
  • ডিজাইনের সময়: স্পষ্ট ট্রেডঅফস জোর করা (বিকল্প, ঝুঁকি, সীমা)।
  • রিভিউ সময়ে: চেকলিস্ট-স্টাইল প্রম্পট চালান (এজ কেস, রিলায়াবিলিটি, নিরাপত্তা, পারফরম্যান্স)।

ইটারেশন রাখুন 10–15 মিনিটের: প্রম্পট → দ্রুত স্কিম → টাইটেন → অ্যাকসেপ্ট্যান্স ক্রাইটেরিয়ার বিরুদ্ধে স্ব-চেক।

What inputs should I gather before prompting an LLM about architecture?

একটি ছোট, ধারাবাহিক ইনপুট বান্ডল নিয়ে আসুন:

  • লক্ষ্য: কী মানে ‘ডান হয়েছে’ (লেটেন্সি, UX আউটকাম, খরচ সীমা)
  • ব্যবহারকারী: রোল ও প্রধান ওয়ার্কফ্লো
  • কনস্ট্রেইন্ট: স্ট্যাক, ডেডলাইন, কমপ্লায়েন্স/সিকিউরিটি
  • ডেটা ও ইন্টিগ্রেশন: সোর্স, মালিকানা, API, তৃতীয় পক্ষ

যদি কিছু না জানা থাকে, স্পষ্টভাবে বলুন এবং মডেলকে অনুমানগুলো তালিকাভুক্ত করতে বলুন।

What reusable outputs should I request instead of “explain the design”?

AI-কে বলুন এমন আউটপুট দিন যা সরাসরি ডকস বা টিকেটে পেস্ট করা যাবে:

  • একটি ডিসিশন লগ (বিকল্প → সুবিধা/অসুবিধা → নির্বাচিত → কেন)
  • একটি কোম্পোনেন্ট/মডিউল টেবিল (দায়িত্ব, সীমা)
  • একটি রিলায়াবিলিটি/টেস্টিং চেকলিস্ট
  • একটি ডায়াগ্রাম বর্ণনা (উদাহরণ: Mermaid টেক্সট)

এটি AI আউটপুটকে কার্যকর রাখে এবং “হারানো প্রসঙ্গ”-এর ফলে হওয়া রিয়ার্কগুলো কমায়।

How do I clarify requirements with AI before doing any architecture?

মডেলকে একটি রিকোয়ারমেন্ট ইন্টারভিউয়ার হিসেবে ব্যবহার করুন। করান:

  • 10–15 স্পষ্ট ক্ল্যারিফাইং প্রশ্ন (গ্রুপ করুন: ব্যবহারকারী, ওয়ার্কফ্লো, ডেটা, ইন্টিগ্রেশন, সিকিউরিটি/কমপ্লায়েন্স, স্কেল, অপারেশন)
  • একটি প্রায়োরিটাইজড স্কোপ লিস্ট (must-have / nice-to-have / out-of-scope)
  • কনস্ট্রেইন্ট তালিকা (পারফরম্যান্স, খরচ, সিকিউরিটি, কমপ্লায়েন্স, টাইমলাইন)
  • সবশেষে ঠিক 10টি বুলেটে চূড়ান্ত স্পেক পুনরায় বলুন

যে 10-বুলেট রিস্টেটমেন্টকে কনট্রাক্ট হিসেবে ধরে নিন এবং স্টেকহোল্ডারদের দ্রুত হ্যাঁ/না নিন—তার পরেই ডিজাইন শুরু করুন।

Why does “user journeys first” lead to better architecture decisions?

প্রথমে রোল ও অ্যাকশন নিয়ে শুরু করুন, তারপর মডেলকে বলুন:

  • ধাপে ধাপে ফ্লো সাধারণ ভাষায় বর্ণনা করতে
  • একটি সাধারণ স্টেট লিস্ট (যেমন Draft → Submitted → Approved)
  • নন-হ্যাপি-পাথ পরিস্থিতি (টাইমআউট, রিট্রাই, ডুপ্লিকেট, ক্যানসেল, ইনভ্যালিড ইনপুট)

ফ্লোগুলি পরিষ্কার হলে ম্যাপ করুন কোথায় ভ্যালিডেশন শেষ হয়, ব্যবসায়িক নিয়ম কোথায় থাকে, এবং কোথায় আইডেম্পোটেন্সি দরকার। সব শেষে প্রতিটি ফ্লো-কে Given/When/Then এক্সেপ্টেন্স ক্রাইটেরিয়ায় রূপান্তর করুন।

What is an assumption log, and how does it prevent surprise rewrites?

LLM‑গুলো অনুশংস্য অনুমান করে ফেলে যদি আপনি স্পষ্টভাবে জোর না দেন যে কোনগুলো সত্য আর কোনগুলো অনুমান। একটি Assumption Log বানান যা আলাদা করে:

  • আপনি যা দিয়েছেন (validated)
  • মডেল যা অনুমান করেছে (unknown)

প্রতিটি আইটেমের জন্য রাখুন:

  • কেন তা গুরুত্বপূর্ণ (কোন ডিসিশনে প্রভাব ফেলে)
  • কিভাবে দ্রুত ভ্যালিডেট করবেন (প্রশ্ন/মেট্রিক/স্পাইক)
  • ভুল হলে কি বদলাবে

এবং বলুন “আপনার উত্তর কবে বদলে যাবে?”—উদাহরণ: ভলিউম, লেটেন্সি, কমপ্লায়েন্স। এটি ডিজাইনকে শর্তসাপেক্ষ করে এবং রিরাইট-বিরোধী করে।

How do I compare multiple architectures without turning it into endless debate?

মডেলকে বাধ্য করুন একাধিক আর্কিটেকচার প্রস্তাব করতে এবং একটি গঠনযুক্ত ট্রেডঅফ টেবিল দেখাতে:

  • 2–3 বিকল্প ডিজাইন প্রস্তাব করুন
  • প্রতিটির জন্য কাটারিয়া: জটিলতা, নির্ভরযোগ্যতা, ship‑time, স্কেল, খরচ
  • শেষ করুন একটি সুপারিশ দিয়ে এবং বলুন "এই রিলিজে আমরা কি বানাচ্ছি না"

একটি তুলনা গোপন অনুমানগুলো উন্মোচন করে এবং সিদ্ধান্তকে আপনার প্রকৃত লক্ষ্যগুলোর সাথে সংযুক্ত করে—ফলে অপ্রত্যাশিত স্কোপ প্রসারণ কমে।

How do “data & API contracts first” prevent integration rewrites?

চুক্তি‑ফার্স্ট পদ্ধতি ইন্টিগ্রেশন রিওয়ার্ক কমায় কারণ এটি ডেটা শেপ ও কম্প্যাটিবিলিটি নিয়মগুলো স্পষ্ট করে। বলুন মডেলকে:

  • প্রতিটি এন্টিটির মালিকানা, লাইফসাইকেল, সোর্স‑অফ‑ট্রুথ ব্যাখ্যা করতে
  • API অনুরোধ/প্রতিক্রিয়া উদাহরণ এবং স্ট্যান্ডার্ড এরর শেপ দিতে
  • ফিল্ড-স্তরের ভ্যালিডেশন ও এজকেস তালিকাভুক্ত করতে
  • ভার্সনিং নিয়ম (যেমন: অ্যাডিটিভ ফিল্ডগুলো ভি‑বাম্ব ছাড়া যোগ করা যাবে; রিনেম হলে /v2)

UI, ব্যাকএন্ড ও ইন্টিগ্রেশন একই কনট্রাক্ট আর্টিফ্যাক্ট ভাগ করলে পরে মেলাতে কম সময় লাগবে।

Related posts