এই পর্বে যা শিখবেন
- Agile Manifesto-র চারটি মূল্যবোধ হুবহু, আর বারোটি নীতির সারকথা — এবং Agile কী নয়
- Extreme Programming (XP)-এর মূল অনুশীলনগুলো কেন Scrum-এর পাশে দরকার
- Scrum Guide 2020 অনুযায়ী empiricism, Scrum Team, পাঁচটি event, তিনটি artifact আর তাদের commitment
- Backlog refinement-এ বড় কাজকে ছোট করা, আর একটি Sprint শুরু থেকে শেষ পর্যন্ত চালানো
- Velocity, burndown, burnup আর Monte Carlo দিয়ে সৎ forecast করা — আর সাধারণ anti-pattern চেনা
১ · কেন Agile এলো — বড় নকশা থেকে ছোট ছোট ধাপে
আগের পর্ব পর্ব ০৪ · SDLC আর process model-এ দেখেছেন waterfall কীভাবে কাজকে ধারাবাহিক ধাপে সাজায়: আগে সব requirement, তারপর নকশা, তারপর কোড, শেষে test. যেখানে requirement সত্যিই স্থির, সেখানে এই ক্রম কাজ করে। কিন্তু বেশিরভাগ software-এ ব্যবহারকারী নিজেও শুরুতে জানেন না তিনি ঠিক কী চান। হাতে কিছু একটা পেয়ে তবেই বলেন, “না, এটা না — ওইটা।”
একজন দর্জির কথা ভাবুন। ভালো দর্জি মাপ নিয়েই পুরো শেরওয়ানি সেলাই করে ফেলেন না। মাঝপথে একবার “trial” দেন — কাঁধ ঢিলা কি না, হাতা লম্বা কি না দেখে নেন। বিয়ের আগের দিন পুরো পোশাক হাতে পেয়ে ভুল ধরা পড়লে আর কিছু করার থাকে না। Agile ঠিক এই trial-এর ধারণাটিকে software-এ নিয়ম বানিয়েছে: অল্প সময় পরপর কাজ করা একটি অংশ দেখান, মতামত নিন, তারপর পরের অংশ।
১৯৯০-এর দশকে অনেক দল আলাদা আলাদাভাবে এই পথে হাঁটছিল। Ken Schwaber আর Jeff Sutherland-এর Scrum, Kent Beck-এর Extreme Programming (XP), Alistair Cockburn-এর Crystal, Jim Highsmith-এর Adaptive Software Development, DSDM, Feature-Driven Development — নাম আলাদা, কিন্তু সবার মিল ছিল এক জায়গায়: ভারী দলিল আর দীর্ঘ পরিকল্পনার বদলে ছোট iteration, ঘন ঘন delivery আর গ্রাহকের সাথে নিয়মিত কথা। এদের তখন বলা হতো “lightweight method”.
২০০১ সালের ফেব্রুয়ারিতে (১১–১৩ তারিখ) যুক্তরাষ্ট্রের Utah অঙ্গরাজ্যের Snowbird স্কি রিসোর্টে এই ধারার ১৭ জন মানুষ মিলিত হন — তাঁদের মধ্যে ছিলেন Kent Beck, Ward Cunningham, Martin Fowler, Robert C. Martin, Ken Schwaber, Jeff Sutherland, Alistair Cockburn, Jim Highsmith, Ron Jeffries, Andrew Hunt ও Dave Thomas প্রমুখ। “Lightweight” শব্দটি তাঁদের পছন্দ হয়নি; সেখানেই “Agile” নামটি বেছে নেওয়া হয়, আর লেখা হয় এক পাতার Manifesto for Agile Software Development. সেই বছরের শেষে Agile Alliance নামে একটি অলাভজনক সংগঠনও গড়ে ওঠে।
খেয়াল করুন, Agile কোনো এক ব্যক্তির আবিষ্কার নয়। Iterative আর incremental উন্নয়নের ধারণা বহু পুরোনো (পর্ব ০৪-এর spiral model মনে করুন); Manifesto সেই অভিজ্ঞতাগুলোকে মূল্যবোধের ভাষায় বেঁধে দিয়েছে। Software engineering-এর বৃহত্তর ইতিহাসে এর জায়গা কোথায়, তা পর্ব ০২-এ আছে।
২ · Agile Manifesto — চারটি মূল্যবোধ আর বারোটি নীতি
Manifesto-র মূল অংশ মাত্র কয়েক লাইনের। পরীক্ষা আর ইন্টারভিউতে প্রায়ই হুবহু জিজ্ঞেস করা হয়, তাই মূল ইংরেজিটিই আগে দেখুন:
We are uncovering better ways of developing software by doing it and helping others do it.
Through this work we have come to value:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
That is, while there is value in the items on the right, we value the items on the left more.
| বাঁ দিক (বেশি মূল্য) | ডান দিক (মূল্য আছে, তবে কম) | সহজ বাংলায় মানে |
|---|---|---|
| Individuals and interactions | processes and tools | মানুষের সরাসরি কথা আর বোঝাপড়া যেকোনো tool বা নিয়মের খাতার চেয়ে বেশি কাজের। |
| Working software | comprehensive documentation | অগ্রগতি মাপা হয় কাজ করা software দিয়ে, মোটা দলিল দিয়ে নয়। |
| Customer collaboration | contract negotiation | গ্রাহক প্রতিপক্ষ নয়, সহযোগী — চুক্তির ধারা নিয়ে দর-কষাকষির চেয়ে একসাথে কাজ। |
| Responding to change | following a plan | নতুন তথ্য এলে পরিকল্পনা বদলানোই স্বাভাবিক; পরিকল্পনা আঁকড়ে ধরে থাকা নয়। |
সবচেয়ে বেশি ভুল বোঝা শব্দটি হলো “over”. Manifesto বলছে না documentation, plan, tool বা contract বাদ দিন। শেষ লাইনটি স্পষ্ট: ডান দিকেরও মূল্য আছে, কিন্তু দুটির মধ্যে টানাটানি হলে বাঁ দিক জিতবে। মূল্যবোধ মানে অগ্রাধিকার, নিষেধাজ্ঞা নয়।
মূল্যবোধের পাশে আছে বারোটি নীতি (Principles behind the Agile Manifesto). নিচে প্রতিটির সারকথা, মূলের ক্রম মেনে:
- গ্রাহকের সন্তুষ্টি সবার আগে — শুরু থেকেই আর ধারাবাহিকভাবে মূল্যবান software দিয়ে।
- বদলে যাওয়া requirement-কে স্বাগত, উন্নয়নের শেষ দিকে হলেও — কারণ পরিবর্তন গ্রাহককে প্রতিযোগিতায় এগিয়ে রাখতে পারে।
- ঘন ঘন কাজ করা software দেওয়া — কয়েক সপ্তাহ থেকে কয়েক মাস পরপর, যত ছোট সময় তত ভালো।
- ব্যবসার মানুষ আর developer প্রতিদিন একসাথে কাজ করবেন, পুরো project জুড়ে।
- উদ্যমী মানুষদের ঘিরে project — তাঁদের দরকারি পরিবেশ ও সহায়তা দিন, আর বিশ্বাস করুন যে তাঁরা কাজটি করবেন।
- মুখোমুখি কথা দলের ভেতরে ও দলের কাছে তথ্য পৌঁছানোর সবচেয়ে কার্যকর উপায়।
- কাজ করা software-ই অগ্রগতির প্রধান মাপ।
- টেকসই গতি — sponsor, developer আর ব্যবহারকারী যেন অনির্দিষ্টকাল একই গতিতে চলতে পারেন; রাত জেগে “crunch” নয়।
- প্রযুক্তিগত উৎকর্ষ আর ভালো নকশায় নিয়মিত মনোযোগ agility বাড়ায়।
- সরলতা — যে কাজ করতে হবে না, তা যতটা সম্ভব বেশি চিহ্নিত করার শিল্প — অপরিহার্য।
- সেরা architecture, requirement আর নকশা আসে self-organizing দল থেকে।
- নিয়মিত বিরতিতে দল ভেবে দেখে কীভাবে আরও কার্যকর হওয়া যায়, তারপর সেই অনুযায়ী নিজের আচরণ বদলায়।
নীতি ৯ আর ১০ বিশেষভাবে মনে রাখুন। অনেকে Agile বলতে শুধু মিটিং আর board বোঝেন, অথচ Manifesto নিজেই বলছে ভালো নকশা আর প্রযুক্তিগত উৎকর্ষ ছাড়া দ্রুত বদলানো যায় না। নীতি ১২-ই পরে Scrum-এর Sprint Retrospective হয়ে উঠেছে। আর নীতি ৭ মনে করিয়ে দেয়, “৮০% কাজ শেষ” কোনো অগ্রগতি নয় যদি কিছুই ব্যবহার করা না যায় — software quality নিয়ে পর্ব ০৩-এর আলোচনার সাথে এর সরাসরি যোগ।
৩ · Agile কী নয়, আর XP-এর প্রকৌশল অনুশীলন
“আমরা Agile, তাই documentation লাগে না” — এ কথা প্রায়ই শোনা যায়। এটি Manifesto-র ভুল ব্যাখ্যা। কয়েকটি প্রচলিত ভুল ধারণা আর আসল কথা:
| ভুল ধারণা | আসল কথা |
|---|---|
| Agile মানে কোনো পরিকল্পনা নেই | পরিকল্পনা বেশি ঘন ঘন হয় — প্রতি Sprint-এ, প্রতিদিন। শুধু একবারের বিশাল পরিকল্পনাকে চূড়ান্ত ধরা হয় না। |
| Agile মানে documentation নেই | যতটুকু দলিল সত্যিই কাজে লাগে, ততটুকু। API-র বিবরণ, ADR, ব্যবহারকারীর নির্দেশিকা — এগুলো এখনো দরকার। |
| Agile = Scrum | Scrum একটি কাঠামো; XP, Kanban (পর্ব ০৬), Crystal — আরও অনেক পথ আছে। Agile হলো মূল্যবোধ, এগুলো তার প্রয়োগ। |
| Agile মানে দ্রুত | Agile মানে দ্রুত শেখা আর দিক বদলানো। মোট কাজ কমে না; ভুল দিকে কাজ কম হয়। |
| যেকোনো সময় যেকোনো কিছু বদলানো যায় | Product Backlog-এ বদল স্বাগত, কিন্তু চলমান Sprint-এর লক্ষ্য রক্ষা করা হয় (অংশ ৫)। |
Extreme Programming (XP) — কোড লেখার দিকের Agile
Scrum বলে কীভাবে কাজ সাজাবেন, কিন্তু কীভাবে কোড লিখবেন তা বলে না। এই ফাঁক পূরণ করে XP. Kent Beck ১৯৯৯ সালে Extreme Programming Explained: Embrace Change বইয়ে একে বিস্তারিত লেখেন (দ্বিতীয় সংস্করণ ২০০৪, Cynthia Andres-এর সাথে)। নামের পেছনের চিন্তা: যে অনুশীলন ভালো, তাকে “চরমে” নিয়ে যাওয়া — code review ভালো হলে সবসময় review, test ভালো হলে কোডের আগেই test. প্রথম সংস্করণে বারোটির মতো অনুশীলন ছিল; তার মধ্যে সবচেয়ে প্রভাবশালী চারটি:
👥 Pair programming
দুজন একটি কম্পিউটারে — একজন লেখেন (driver), অন্যজন পাশে বসে দিক দেখান ও ভুল ধরেন (navigator), কিছুক্ষণ পরপর ভূমিকা বদল। Review লেখার সময়েই হয়ে যায়।
জ্ঞান ছড়ায়, এক ব্যক্তির ওপর নির্ভরতা কমে🧪 Test-first / TDD
কোডের আগে test — ব্যর্থ test, তারপর তাকে পাশ করানোর সবচেয়ে সরল কোড, তারপর পরিচ্ছন্ন করা। TDD-এর পূর্ণ আলোচনা পর্ব ৪৮-এ।
বদলের সাহস দেয়🔁 Continuous integration
প্রত্যেকে দিনে অন্তত কয়েকবার মূল কোডে নিজের কাজ মেলান, আর প্রতিবার স্বয়ংক্রিয় build ও test চলে। CI-এর pipeline পর্ব ৫৮-এ।
“merge-এর নরক” এড়ায়📦 Small releases
ছোট ছোট অংশ ঘন ঘন ব্যবহারকারীর হাতে। বড় একটি release-এ যত ঝুঁকি, দশটি ছোট release-এ তা ভাগ হয়ে যায়।
মতামত আসে দ্রুতবাকি অনুশীলনের মধ্যে ছিল planning game, simple design, refactoring, collective code ownership, coding standard, টেকসই গতি (প্রথম সংস্করণে “40-hour week”) আর on-site customer. বাস্তবে বহু দল কাজ সাজায় Scrum দিয়ে আর কোড লেখে XP-র অনুশীলনে।
Scrum-এর সব event নিখুঁতভাবে চালিয়েও একটি দল ধীরে ধীরে থেমে যেতে পারে — যদি test না থাকে, নকশা জট পাকায় আর technical debt জমতে থাকে। Martin Fowler ২০০৯ সালে এ অবস্থার নাম দেন “Flaccid Scrum”. Process শুধু কাঠামো দেয়; গুণমান আসে প্রকৌশল অনুশীলন থেকে।
৪ · Scrum-এর ভিত্তি — empiricism আর Scrum Team
Scrum-এর আনুষ্ঠানিক সংজ্ঞা আছে একটি ছোট দলিলে — The Scrum Guide, লিখেছেন Ken Schwaber ও Jeff Sutherland. প্রথম প্রকাশ ২০১০ সালে, তারপর কয়েকবার সংশোধন; সর্বশেষ সংস্করণ ২০২০ সালের নভেম্বরের। এই পর্বে সব নিয়ম ২০২০ সংস্করণ অনুযায়ী। Guide নিজেই নিজেকে বলে একটি “lightweight framework” — ইচ্ছা করে অসম্পূর্ণ, যাতে প্রতিটি দল নিজের অনুশীলন যোগ করতে পারে।
Empiricism — অভিজ্ঞতা থেকে সিদ্ধান্ত
Scrum দাঁড়িয়ে আছে empiricism-এর ওপর: জ্ঞান আসে অভিজ্ঞতা থেকে, আর সিদ্ধান্ত হয় যা দেখা গেছে তার ভিত্তিতে। Guide এর সাথে lean চিন্তাও যোগ করে — অপচয় কমিয়ে মূল জিনিসে মন দেওয়া। Empiricism-এর তিনটি স্তম্ভ:
🔍 Transparency (স্বচ্ছতা)
কাজ আর প্রক্রিয়া যাঁরা করছেন ও যাঁরা কাজটি পাচ্ছেন, সবার কাছে দৃশ্যমান। লুকানো জিনিস যাচাই করা যায় না।
🧐 Inspection (যাচাই)
Artifact আর লক্ষ্যের দিকে অগ্রগতি ঘন ঘন খুঁটিয়ে দেখা, যাতে সমস্যা আগেভাগে ধরা পড়ে। পাঁচটি event-ই যাচাইয়ের সুযোগ।
🔧 Adaptation (খাপ খাওয়ানো)
যাচাইয়ে বিচ্যুতি ধরা পড়লে যত দ্রুত সম্ভব প্রক্রিয়া বা কাজ বদলানো।
রান্নাঘরে নতুন একটি রেসিপি চেষ্টা করছেন। লবণ কতটা লাগবে আগে থেকে নিখুঁত জানেন না। তাই হাঁড়ির ঢাকনা খোলা রাখেন (স্বচ্ছতা), মাঝে মাঝে চেখে দেখেন (যাচাই), আর দরকার হলে একটু লবণ বা পানি যোগ করেন (খাপ খাওয়ানো)। শেষে একবারে চেখে দেখলে আর ঠিক করার সুযোগ থাকে না। Scrum-এর প্রতিটি event আসলে এই “চেখে দেখার” নির্দিষ্ট সময়।
Guide পাঁচটি মূল্যবোধও বলে: Commitment, Focus, Openness, Respect, Courage. যে দলে খারাপ খবর দিলে শাস্তি হয়, সেখানে কেউ সমস্যা দৃশ্যমান করেন না — স্বচ্ছতা টেকে না।
Scrum Team — তিনটি দায়িত্ব
Scrum-এর মৌলিক একক একটি ছোট দল, সাধারণত ১০ জন বা তার কম। দলের ভেতরে কোনো উপ-দল বা স্তরবিন্যাস নেই, আর দলটি cross-functional — কাজ শেষ করতে যত দক্ষতা দরকার, সব দলের ভেতরেই। ২০২০ সংস্করণ “role”-এর বদলে accountability (জবাবদিহির দায়িত্ব) শব্দটি ব্যবহার করে। Guide একই মানুষের দুটি দায়িত্ব নেওয়া স্পষ্ট করে নিষেধ করে না (যেমন Product Owner বা Scrum Master Sprint Backlog-এর কাজ করলে Developer হিসেবেও অংশ নেন), তবে সাধারণত তা না করাই ভালো।
| দায়িত্ব | কিসের জন্য জবাবদিহি | যা নন |
|---|---|---|
| Product Owner | Product-এর মূল্য সর্বোচ্চ করা; Product Goal ঠিক করা ও জানানো; Product Backlog item তৈরি, স্পষ্ট করা আর সাজানোর ক্রম ঠিক করা। একজন মানুষ, কোনো কমিটি নয়। | শুধু stakeholder-এর কথা বয়ে আনা “বার্তাবাহক” নন; সিদ্ধান্ত নেওয়ার ক্ষমতা তাঁর। |
| Scrum Master | দলের কার্যকারিতা; Guide অনুযায়ী Scrum প্রতিষ্ঠা করা; বাধা (impediment) সরাতে সাহায্য; দল, Product Owner আর প্রতিষ্ঠানকে শেখানো। Guide-এর ভাষায় “true leader who serves”. | Project manager বা দলের বস নন; কাজ ভাগ করে দেন না। |
| Developers | প্রতিটি Sprint-এ ব্যবহারযোগ্য Increment তৈরি; Sprint Backlog-এর পরিকল্পনা; Definition of Done মেনে গুণমান; প্রতিদিন পরিকল্পনা খাপ খাওয়ানো। | শুধু programmer নন — tester, designer, analyst, যিনিই Increment বানাতে কাজ করেন। |
সংস্করণের পার্থক্য: ২০১৭ ও তার আগের Guide-এ বলা হতো “Development Team” (৩–৯ জন) আর দলটি “self-organizing”. ২০২০-এ “Development Team” শব্দ বাদ দিয়ে শুধু “Developers” বলা হয়, যাতে দলের ভেতরে আরেকটি দল আছে বলে মনে না হয়; “self-organizing” হয়েছে “self-managing” — কে, কী, কীভাবে করবে তা দল নিজেই ঠিক করে; আর আকার বলা হয় “typically 10 or fewer”. পুরোনো বই বা প্রশ্নে ২০১৭-এর পরিভাষা দেখলে অবাক হবেন না, তবে উত্তরে কোন সংস্করণ ধরছেন তা বলে দিন।
৫ · Sprint আর চারটি event — নির্দিষ্ট সময়ের চক্র
Scrum-এর হৃদয় হলো Sprint — এক মাস বা তার কম সময়ের নির্দিষ্ট দৈর্ঘ্যের একটি চক্র, যার ভেতরে বাকি সব event ঘটে। এক Sprint শেষ হওয়ার পরপরই পরের Sprint শুরু। বাস্তবে অনেক দল দুই সপ্তাহ বেছে নেয়, তবে Guide কোনো নির্দিষ্ট দৈর্ঘ্য বলে না — শুধু ঊর্ধ্বসীমা। প্রতিটি event একটি timebox: সময়ের সর্বোচ্চ সীমা, যার আগে শেষ হতে পারে কিন্তু পরে নয়।
Scrum-এর চক্র
Product Backlog → Sprint Planning → Sprint (with Daily Scrum) → Increment → Review → Retrospective
| Event | উদ্দেশ্য | Timebox (Scrum Guide 2020) | কারা |
|---|---|---|---|
| Sprint | সব কাজের ধারক; একটি Sprint Goal পূরণ করে ব্যবহারযোগ্য Increment | নির্দিষ্ট দৈর্ঘ্য, এক মাস বা তার কম | পুরো Scrum Team |
| Sprint Planning | কেন (Sprint Goal), কী (কোন item), কীভাবে (কাজের পরিকল্পনা) | এক মাসের Sprint-এ সর্বোচ্চ ৮ ঘণ্টা; ছোট Sprint-এ সাধারণত কম | পুরো Scrum Team; দরকারে অন্যদের ডাকা যায় |
| Daily Scrum | Sprint Goal-এর দিকে অগ্রগতি যাচাই, পরের দিনের পরিকল্পনা বদলানো | ১৫ মিনিট, প্রতি কর্মদিবসে একই সময় ও জায়গায় | Developers (PO বা SM যদি Sprint Backlog-এর কাজ করেন, তবে Developer হিসেবে) |
| Sprint Review | ফলাফল দেখানো, stakeholder-এর সাথে যাচাই, Product Backlog বদলানো | এক মাসের Sprint-এ সর্বোচ্চ ৪ ঘণ্টা; ছোট Sprint-এ সাধারণত কম | Scrum Team ও গুরুত্বপূর্ণ stakeholder |
| Sprint Retrospective | মানুষ, সম্পর্ক, process, tool আর Definition of Done নিয়ে ভেবে উন্নতির উপায় খোঁজা | এক মাসের Sprint-এ সর্বোচ্চ ৩ ঘণ্টা; ছোট Sprint-এ সাধারণত কম | Scrum Team |
খেয়াল করুন, ছোট Sprint-এর জন্য Guide কোনো আনুপাতিক সূত্র দেয় না, শুধু বলে “usually shorter”. দুই সপ্তাহের Sprint-এ অনেক দল Planning-এর জন্য ৪ ঘণ্টা ধরে নেয় — এটি প্রচলিত অনুশীলন, Guide-এর নিয়ম নয়। আরও কয়েকটি নিয়ম Sprint চলাকালীন: Sprint Goal ঝুঁকিতে ফেলে এমন বদল করা যায় না; গুণমান কমানো যায় না; Product Backlog দরকার মতো refine হয়; আর কাজ যত বোঝা যায়, Product Owner-এর সাথে আলোচনা করে Sprint-এর scope স্পষ্ট বা পুনর্নির্ধারণ করা যায়। Sprint Goal পুরোপুরি অর্থহীন হয়ে গেলে শুধু Product Owner Sprint বাতিল করতে পারেন।
একটি দলীয় ক্রিকেট ম্যাচ ভাবুন। ম্যাচের আগে অধিনায়ক আর দল ঠিক করে আজকের লক্ষ্য কী — এটি Sprint Planning. খেলার মাঝে প্রতি ওভারের ফাঁকে দুই ব্যাটসম্যান কয়েক সেকেন্ড কথা বলে পরের ওভারের পরিকল্পনা ঠিক করেন (Daily Scrum — লম্বা বৈঠক নয়)। ম্যাচ শেষে দর্শক আর নির্বাচকদের সামনে ফল (Review), আর ড্রেসিংরুমে দলের নিজেদের আলোচনা — কোথায় ভুল, পরের ম্যাচে কী বদলাব — এটি Retrospective. Review দেখে product, Retrospective দেখে দল আর process.
এবার একটি পূর্ণ Sprint ধাপে ধাপে দেখুন। উদাহরণটি একটি কাল্পনিক অনলাইন বাজার অ্যাপের, দুই সপ্তাহের (১০ কর্মদিবস) Sprint, আর দলের সাম্প্রতিক velocity প্রায় ২১ point (অংশ ৭-এ velocity বিস্তারিত)।
- Backlogশুরুর আগে
- Planningদিন ১
- Daily Scrumদিন ৪
- নতুন অনুরোধদিন ৬
- Reviewদিন ১০
- Retroদিন ১০
Product Goal: ক্রেতা ফোনে বাজার অর্ডার করে বাসায় পাবেন PB-1 মোবাইল নম্বর ও OTP দিয়ে লগইন 3 PB-2 নাম লিখে পণ্য খোঁজা 5 PB-3 কার্টে পণ্য যোগ ও বাদ 5 PB-4 ক্যাশ অন ডেলিভারিতে অর্ডার 8 PB-5 অর্ডারের অবস্থা দেখা 3 PB-6 ডিসকাউন্ট কুপন 5
Sprint Goal: লগইন করা ক্রেতা কার্ট থেকে
ক্যাশ অন ডেলিভারিতে অর্ডার দিতে পারবেন
PB-1 (3) · PB-2 (5) · PB-3 (5) · PB-4 (8) = 21
PB-4-এর কাজ: অর্ডার টেবিল, API, ঠিকানার ফর্ম,
নিশ্চিতকরণ SMS, test
Done: PB-1 (3)
বাধা: SMS gateway-র test account এখনো পাওয়া যায়নি
→ OTP আর নিশ্চিতকরণ SMS দুটোই এতে নির্ভর করে
সিদ্ধান্ত: Scrum Master আজই সরবরাহকারীর সাথে কথা বলবেন;
বিস্তারিত আলোচনা মিটিংয়ের পরে, যাঁদের দরকার তাঁরা
Done: PB-1, PB-3 → 8 point
অনুরোধ: “ঈদ অফারের জন্য কুপন (PB-6) এই Sprint-এই চাই”
Product Owner: Sprint Goal-এর অংশ নয় → PB-6 যাবে
Product Backlog-এর একদম ওপরে, পরের Sprint-এ
PB-2 স্পষ্ট করা হলো: আপাতত ইংরেজি নামে খোঁজা
Done: PB-1 (3) · PB-3 (5) · PB-4 (8) = 16
Done নয়: PB-2 — বড় তালিকায় খোঁজা ধীর, test বাকি
→ Increment-এ নেই, Product Backlog-এ ফিরল
Sprint Goal: অর্জিত — ক্রেতা category তালিকা
থেকে বেছে অর্ডার দিতে পারেন
মতামত: “বাংলায় নাম লিখে খোঁজা চাই” → নতুন item PB-7
ভালো হয়েছে: PB-6 নিয়ে চাপের মধ্যেও Goal ঠিক ছিল
উন্নতি দরকার: বাইরের নির্ভরতা (SMS) দেরিতে ধরা পড়ল
পরের Sprint-এ একটি পদক্ষেপ:
Planning-এর আগে প্রতিটি item-এর বাইরের নির্ভরতা যাচাই
velocity লেখা হলো 16 — কারও দোষ খোঁজা নয়, শুধু তথ্য
| দিন | |
| Sprint Backlog | |
| Done | |
| Sprint Goal |
- শুরুর আগে: সাজানো Product Backlog. Product Owner item-গুলো ক্রম অনুযায়ী সাজিয়েছেন, ওপরে সবচেয়ে মূল্যবান। প্রতিটির পাশে দলের নিজের দেওয়া story point (অংশ ৭)। ওপরে লেখা Product Goal — পুরো product-এর দীর্ঘমেয়াদি লক্ষ্য।
- দিন ১ — Sprint Planning. প্রথমে “কেন”: Product Owner প্রস্তাব দেন, দল মিলে Sprint Goal লেখে। তারপর “কী”: আগের velocity ~২১ দেখে Developers ওপরের চারটি item নেন — ৩ + ৫ + ৫ + ৮ = ২১ point. শেষে “কীভাবে”: বড় item-কে এক দিন বা তার কম সময়ের কাজে ভাঙা। Goal + item + পরিকল্পনা মিলে Sprint Backlog.
- দিন ৪ — Daily Scrum. PB-1 Done, ৩ point. একটি বাধা দেখা দিল: SMS gateway-র test account আসেনি, অথচ PB-1-এর OTP আর PB-4-এর নিশ্চিতকরণ SMS দুটোই এতে নির্ভর করে। Sprint Goal ঝুঁকিতে। Daily Scrum সমস্যার সমাধান বসে করে না — ১৫ মিনিটে শেষ হয়, যাঁদের দরকার তাঁরা পরে বসেন; Scrum Master বাধা সরাতে সাহায্য করেন।
- দিন ৬ — মাঝপথে নতুন অনুরোধ. PB-3-ও Done, মোট ৮ point. একজন stakeholder ঈদ অফারের কুপন এখনই চান। Sprint Goal-এর সাথে এর যোগ নেই, তাই Product Owner এটিকে Product Backlog-এর ওপরে রাখেন — পরের Sprint-এ আসবে। একই সময়ে PB-2-এর scope আলোচনা করে স্পষ্ট হলো: আপাতত শুধু ইংরেজি নামে খোঁজা। Sprint Backlog ২১ point-ই থাকল।
- দিন ১০ — Sprint Review. PB-4 Done, মোট ৩ + ৫ + ৮ = ১৬ point. PB-2 Definition of Done মেলায়নি (বড় তালিকায় ধীর, test বাকি), তাই Guide অনুযায়ী এটি Review-তে দেখানোও হয় না — Product Backlog-এ ফিরে যায়। তবু Sprint Goal অর্জিত, কারণ category তালিকা থেকে বেছে অর্ডার দেওয়া যায়। Stakeholder-এর মতামত থেকে নতুন item PB-7.
- দিন ১০ — Sprint Retrospective. দল নিজেদের দিকে তাকায়: কী ভালো গেল, কী বদলাতে হবে। সিদ্ধান্ত একটি নির্দিষ্ট, ছোট পদক্ষেপ — Planning-এর আগে বাইরের নির্ভরতা যাচাই। Velocity লেখা হলো ১৬; এটি পরের পরিকল্পনার তথ্য, কারও শাস্তির কারণ নয়। পরের দিন থেকেই পরের Sprint.
৬ · তিনটি artifact, তিনটি commitment আর backlog refinement
Scrum-এর artifact হলো কাজ বা মূল্যের দৃশ্যমান রূপ — স্বচ্ছতার জন্যই এদের থাকা। ২০২০ সংস্করণে প্রতিটি artifact-এর সাথে একটি commitment যোগ হয়েছে: এমন একটি লক্ষ্য বা মানদণ্ড, যা দিয়ে অগ্রগতি মাপা যায়।
| Artifact | কী | Commitment |
|---|---|---|
| Product Backlog | Product উন্নত করতে যা যা লাগবে তার ক্রমানুসারে সাজানো, সবসময় বদলাতে থাকা তালিকা। একমাত্র কাজের উৎস। | Product Goal — product-এর ভবিষ্যৎ অবস্থার দীর্ঘমেয়াদি লক্ষ্য। একটি পূরণ (বা পরিত্যাগ) করে তবেই পরেরটি। |
| Sprint Backlog | Developers-এর, Developers-এর জন্য পরিকল্পনা: Sprint Goal + বেছে নেওয়া item + কাজের পরিকল্পনা। Sprint জুড়ে হালনাগাদ হয়। | Sprint Goal — এই Sprint-এর একমাত্র লক্ষ্য; scope বদলালেও goal স্থির থাকে। |
| Increment | Product Goal-এর দিকে একটি দৃঢ় ধাপ; আগের সব Increment-এর সাথে যুক্ত ও যাচাই করা, ব্যবহারযোগ্য। এক Sprint-এ একাধিক Increment হতে পারে, Sprint শেষের আগেও release করা যায়। | Definition of Done — গুণমানের সেই আনুষ্ঠানিক বিবরণ, যা মেলালে তবেই কাজটি Increment-এর অংশ। |
Definition of Done দেখতে কেমন? একটি কাল্পনিক দলের জন্য উদাহরণ: কোড review হয়েছে; unit test লেখা ও সব test পাস; CI pipeline সবুজ; গ্রহণযোগ্যতার শর্ত (acceptance criteria) মিলেছে; staging-এ deploy হয়েছে; দরকারি documentation হালনাগাদ। প্রতিষ্ঠানের কোনো মানদণ্ড থাকলে সব দলকে অন্তত সেটি মানতে হয়। Guide-এর একটি কঠিন নিয়ম: যে item Definition of Done মেলায় না, তা release করা যায় না, Sprint Review-তে দেখানোও যায় না — Product Backlog-এ ফিরে যায়। “প্রায় শেষ” বলে কোনো অবস্থা নেই।
Product Backlog item-কে অনেক দল user story আকারে লেখে — “একজন ক্রেতা হিসেবে আমি … চাই, যাতে …”. কিন্তু Scrum Guide কোনো নির্দিষ্ট ফরম্যাট চায় না; user story এসেছে XP থেকে। কীভাবে ভালো user story আর acceptance criteria লিখবেন, INVEST আর Given-When-Then — এসব পর্ব ২২-এ।
Backlog refinement — বড় কাজকে ছোট করা
Product Backlog refinement হলো item-গুলোকে ভেঙে ছোট আর স্পষ্ট করা, বিবরণ, ক্রম আর আকার যোগ করা। এটি আলাদা কোনো event নয়, একটি চলমান কাজ — Developers সাধারণত আকার অনুমান করেন, Product Owner বুঝতে ও সিদ্ধান্ত নিতে সাহায্য করেন। লক্ষ্য: ওপরের item-গুলো যেন এত ছোট আর স্পষ্ট হয় যে একটি Sprint-এর ভেতরে Done করা যায়। (২০১৭-এর Guide-এ বলা ছিল refinement সাধারণত দলের সময়ের ১০%-এর বেশি নেয় না; ২০২০ সংস্করণে এমন কোনো সংখ্যা নেই।)
PB-20 ক্রেতা অনলাইনে টাকা দিয়ে অর্ডার করবেন 40 ?
(velocity ~21 → এক Sprint-এ হবে না)
কোন পথে টাকা? ক্যাশ অন ডেলিভারি, মোবাইল ওয়ালেট, কার্ড ঠিকানা আর ডেলিভারির সময় কি এর অংশ? হ্যাঁ রসিদ লাগবে? হ্যাঁ, SMS-এ টাকা ফেরত (refund)? লাগবে, তবে পরে
PB-20a ঠিকানা আর ডেলিভারির সময় বাছাই PB-20b টাকা পরিশোধ (সব পথ) PB-20c SMS-এ রসিদ PB-20d টাকা ফেরত
PB-20a ঠিকানা আর ডেলিভারির সময় বাছাই PB-20b1 ক্যাশ অন ডেলিভারি PB-20b2 মোবাইল ওয়ালেটে পরিশোধ PB-20b3 কার্ডে পরিশোধ PB-20c SMS-এ রসিদ PB-20d টাকা ফেরত
1 PB-20a ঠিকানা আর সময় 5
2 PB-20b1 ক্যাশ অন ডেলিভারি 5
3 PB-20c SMS-এ রসিদ 3 ← মোট 13
4 PB-20b2 মোবাইল ওয়ালেট 8
5 PB-20b3 কার্ড 8
6 PB-20d টাকা ফেরত 13
সব মিলিয়ে 42
| item সংখ্যা | |
| সবচেয়ে বড় item | |
| এক Sprint-এ Done করা যায়? |
- একটি বড় item. “অনলাইনে টাকা দিয়ে অর্ডার” — মোটামুটি অনুমান ৪০ point, যেখানে দলের velocity মাত্র ~২১. এত বড় item-কে প্রায়ই epic বলা হয়। এটি এক Sprint-এ Done হবে না, আর এত বড় অনুমানে ভুলের ঝুঁকিও বেশি।
- প্রশ্ন করে বোঝা. Product Owner আর Developers একসাথে বসে অস্পষ্টতা দূর করেন: কোন কোন পথে টাকা, ঠিকানা ও সময় এর অংশ কি না, রসিদ কোথায় যাবে, টাকা ফেরতের কী হবে। উত্তরগুলোই ভাগ করার রেখা দেখিয়ে দেয়।
- কাজের ধারা (workflow) ধরে ভাগ. ক্রেতার যাত্রার ধাপ ধরে চারটি item. প্রতিটি ধাপ আলাদাভাবে ব্যবহারকারীর কাছে মূল্য দেয় — শুধু “database অংশ”, “UI অংশ” এভাবে স্তর ধরে ভাগ করা হয়নি, কারণ তাতে কোনো একটি টুকরোও একা ব্যবহারযোগ্য হতো না।
- ধরন (variant) ধরে আরও ভাগ. “টাকা পরিশোধ” তিনটি পথে ভাঙল। সরলতম পথ — ক্যাশ অন ডেলিভারি — আগে, কারণ এতে বাইরের কোনো payment সেবার সাথে যুক্ত হতে হয় না। এখন ৬টি item.
- আকার অনুমান আর ক্রম. Developers প্রতিটির আকার দেন; Product Owner ক্রম ঠিক করেন। ওপরের তিনটি মিলে ৫ + ৫ + ৩ = ১৩ point — পরের Sprint-এ সহজেই আঁটবে, আর একসাথে ব্যবহারযোগ্য একটি পথ (ক্যাশে অর্ডার, SMS-এ রসিদ)। খেয়াল করুন, ভাগ করার পর মোট ৫ + ৫ + ৩ + ৮ + ৮ + ১৩ = ৪২, আগের অনুমান ৪০ নয় — ভাঙলে লুকানো কাজ বেরিয়ে আসে, এটাই স্বাভাবিক। Story point আর planning poker পর্ব ৬০-এ।
৭ · Velocity, burndown আর সৎ forecast
প্রথমেই একটি কথা স্পষ্ট করা দরকার: velocity আর story point Scrum Guide 2020-এ নেই, আর burndown-এর নাম আছে শুধু একটি উদাহরণ হিসেবে — কোনো নিয়ম হিসেবে নয়। এগুলো বহু দলের প্রচলিত অনুশীলন, মূলত XP থেকে আসা। Guide শুধু বলে অগ্রগতি মাপার বিভিন্ন পদ্ধতি (burn-down, burn-up, cumulative flow) কাজে লাগতে পারে, কিন্তু empiricism-এর জায়গা নিতে পারে না — ভবিষ্যৎ নয়, শুধু যা ঘটে গেছে তা-ই সিদ্ধান্তের ভিত্তি।
Story point হলো কাজের আপেক্ষিক আকার (জটিলতা, অনিশ্চয়তা, পরিমাণ মিলিয়ে) — ঘণ্টা নয়। আর velocity হলো একটি Sprint-এ Done হওয়া item-গুলোর মোট point. শুধু Done — আধা-শেষ item-এর point গোনা হয় না। আগের stepper-এ তাই velocity ২১ নয়, ১৬.
Velocity থেকে একটি পরিসর
ধরুন একটি দলের শেষ ছয়টি Sprint-এর velocity আছে, আর বাকি কাজ ১৫০ থেকে ২০০ point-এর মধ্যে (বাকি কাজের আকারও অনিশ্চিত)। আর কত Sprint লাগবে? একটি সংখ্যা নয়, একটি পরিসর বের করুন। নিচের প্রোগ্রাম seed দেওয়া ছোট একটি PRNG (mulberry32) দিয়ে ছয়টি velocity তৈরি করে, যাতে প্রতিবার একই সংখ্যা আসে:
// Velocity of 6 past sprints -> average, range, and sprints left for a backlog.
let seed = 2001; // mulberry32: small seeded PRNG
function rand() {
seed = (seed + 0x6D2B79F5) | 0; let t = Math.imul(seed ^ (seed >>> 15), 1 | seed);
t = (t + Math.imul(t ^ (t >>> 7), 61 | t)) ^ t; return ((t ^ (t >>> 14)) >>> 0) / 4294967296;
}
const velocity = [];
for (let s = 1; s <= 6; s++) velocity.push(16 + Math.floor(rand() * 15)); // 16..30 points
console.log("velocity per sprint:", velocity.join(", "));
const sum = velocity.reduce((a, b) => a + b, 0);
const avg = sum / velocity.length;
const lo = Math.min(...velocity), hi = Math.max(...velocity);
console.log("average " + avg.toFixed(1) + " min " + lo + " max " + hi + " range " + (hi - lo));
const last3 = velocity.slice(-3), avg3 = last3.reduce((a, b) => a + b, 0) / 3;
console.log("last 3 sprints average " + avg3.toFixed(1));
const backlog = { min: 150, max: 200 }; // remaining work is itself uncertain
const best = Math.ceil(backlog.min / hi);
const mid = Math.ceil(((backlog.min + backlog.max) / 2) / avg);
const worst = Math.ceil(backlog.max / lo);
console.log("backlog " + backlog.min + "-" + backlog.max + " points");
console.log("optimistic " + backlog.min + "/" + hi + " -> " + best + " sprints");
console.log("using avg " + (backlog.min + backlog.max) / 2 + "/" + avg.toFixed(1) + " -> " + mid + " sprints");
console.log("pessimistic " + backlog.max + "/" + lo + " -> " + worst + " sprints");
console.log("forecast: " + best + " to " + worst + " sprints (a range, not a promise)");আউটপুট:
velocity per sprint: 17, 23, 23, 25, 17, 20
average 20.8 min 17 max 25 range 8
last 3 sprints average 20.7
backlog 150-200 points
optimistic 150/25 -> 6 sprints
using avg 175/20.8 -> 9 sprints
pessimistic 200/17 -> 12 sprints
forecast: 6 to 12 sprints (a range, not a promise)
ছয়টি velocity-র যোগফল ১২৫, গড় ১২৫ ÷ ৬ = ২০.৮৩. সবচেয়ে আশাবাদী হিসাব: সবচেয়ে কম কাজ (১৫০) ভাগ সবচেয়ে বেশি velocity (২৫) = ঠিক ৬ Sprint. সবচেয়ে হতাশাবাদী: ২০০ ÷ ১৭ = ১১.৭৬, ওপরের দিকে নিলে ১২. মাঝামাঝি: ১৭৫ ÷ ২০.৮৩ = ৮.৪, অর্থাৎ ৯. ভগ্নাংশ সবসময় ওপরের দিকে (Math.ceil) নিতে হয় — ৮.৪ Sprint মানে ৯তম Sprint-এও কাজ চলছে। ৬ থেকে ১২ পরিসরটি সৎ, কিন্তু অনেক চওড়া; এর দুই প্রান্ত ঘটার সম্ভাবনা খুব কম, কারণ পরপর ছয়বার সর্বোচ্চ velocity আসা বিরল।
Burndown আর burnup
Burndown chart দেখায় Sprint-এর প্রতিদিন কত কাজ বাকি; পাশে একটি “ideal” সরল রেখা — প্রতিদিন সমান হারে কমলে যেমন হতো। Burnup chart দেখায় দুটি রেখা: কত কাজ Done হয়েছে, আর মোট scope কত। নিচের প্রোগ্রাম ১০ দিনের একটি Sprint-এ ৪০ point দিয়ে শুরু করে, প্রতিদিন seed দেওয়া এলোমেলো ০–৭ point শেষ করে, আর ৪র্থ দিনে ৮ point নতুন কাজ ঢুকিয়ে দেয়:
// Text burndown for a 10-day sprint: 40 points committed, 8 points added on day 4.
let seed = 2020; // mulberry32: small seeded PRNG
function rand() {
seed = (seed + 0x6D2B79F5) | 0; let t = Math.imul(seed ^ (seed >>> 15), 1 | seed);
t = (t + Math.imul(t ^ (t >>> 7), 61 | t)) ^ t; return ((t ^ (t >>> 14)) >>> 0) / 4294967296;
}
const DAYS = 10, START = 40;
const added = { 4: 8 }; // scope change: new work pushed in on day 4
let remaining = START, scope = START, doneTotal = 0;
console.log("day done added left ideal chart (# = 2 points left)");
console.log(" 0 - - " + String(remaining).padStart(4) + " 40.0 " + "#".repeat(remaining / 2));
for (let d = 1; d <= DAYS; d++) {
const done = Math.min(remaining, Math.floor(rand() * 8)); // 0..7 points finished today
const add = added[d] || 0;
remaining = remaining - done + add;
scope += add; doneTotal += done;
const ideal = START - (START / DAYS) * d;
console.log(String(d).padStart(3) + String(done).padStart(6) + String(add || "-").padStart(7) +
String(remaining).padStart(6) + ideal.toFixed(1).padStart(7) + " " + "#".repeat(Math.round(remaining / 2)));
}
console.log("burnup view: done " + doneTotal + " of scope " + scope + " (scope grew by " + (scope - START) + ")");
console.log("left at sprint end: " + remaining + " points -> back to the Product Backlog");আউটপুট:
day done added left ideal chart (# = 2 points left)
0 - - 40 40.0 ####################
1 6 - 34 36.0 #################
2 5 - 29 32.0 ###############
3 7 - 22 28.0 ###########
4 3 8 27 24.0 ##############
5 3 - 24 20.0 ############
6 3 - 21 16.0 ###########
7 2 - 19 12.0 ##########
8 1 - 18 8.0 #########
9 5 - 13 4.0 #######
10 0 - 13 0.0 #######
burnup view: done 35 of scope 48 (scope grew by 8)
left at sprint end: 13 points -> back to the Product Backlog
প্রথম তিন দিন দল ideal রেখার নিচে — এগিয়ে (৩য় দিনে বাকি ২২, ideal ২৮)। ৪র্থ দিনে ৩ point শেষ হলেও ৮ point ঢুকল, তাই বাকি ২২ − ৩ + ৮ = ২৭ — রেখা ওপরে উঠে গেল। এরপর ৫ থেকে ৮ নম্বর দিনে প্রতিদিন মাত্র ১–৩ point. শেষে ১৩ point বাকি। Burnup-এর হিসাব আলাদা করে বলে দেয়: Done হয়েছে ৩৫ (যা আসলে শুরুর ৪০-এর খুব কাছে), কিন্তু scope বেড়ে হয়েছে ৪৮. Burndown একা দেখলে এই দুটি কারণ — কম কাজ হয়েছে, না কাজ বেড়েছে — আলাদা করা যায় না।
এবার এই chart-টিকে একজন অভিজ্ঞ Scrum Master-এর চোখে পড়ুন:
day left ideal 0 40 40.0 #################### 1 34 36.0 ################# 2 29 32.0 ############### 3 22 28.0 ###########
day done added left ideal 3 7 - 22 28.0 ########### 4 3 8 27 24.0 ############## ↑ +5
day done left ideal 5 3 24 20.0 ############ 6 3 21 16.0 ########### 7 2 19 12.0 ########## 8 1 18 8.0 #########
day done left ideal 9 5 13 4.0 ####### 10 0 13 0.0 ####### → 13 point Done হয়নি, Product Backlog-এ ফিরবে
day 1 2 3 4 5 6 7 8 9 10 done 6 11 18 21 24 27 29 30 35 35 scope 40 40 40 48 48 48 48 48 48 48
| বাকি (left) | |
| ideal-এর তুলনায় | |
| রোগ নির্ণয় |
- দিন ০–৩: ideal-এর নিচে. বাকি কাজের রেখা ideal-এর নিচে থাকা মানে দল এগিয়ে আছে। ৩য় দিনে বাকি ২২, যেখানে ideal ২৮ — ৬ point এগিয়ে। তবে ideal রেখা কোনো লক্ষ্য নয়; কাজ কখনো সমান হারে শেষ হয় না।
- দিন ৪: রেখা ওপরে. Burndown রেখা ওপরে ওঠা মানেই বাকি কাজ বেড়েছে: হয় নতুন কাজ ঢুকেছে, নয়তো কোনো item-এর আকার নতুন করে অনুমান করা হয়েছে। এখানে ৮ point নতুন কাজ, ২২ − ৩ + ৮ = ২৭; ideal ২৪-এর চেয়ে ৩ point পিছিয়ে। প্রশ্ন করুন: এই কাজ কি Sprint Goal-এর জন্য জরুরি ছিল, আর Product Owner-এর সাথে কথা বলে কি ঢোকানো হয়েছে?
- দিন ৫–৮: সমতল ঢাল. প্রতিদিন মাত্র ৩, ৩, ২, ১ point. ৮ম দিনে বাকি ১৮, ideal ৮ — ১০ point পিছিয়ে। সাধারণ কারণ: অনেকগুলো item একসাথে শুরু হয়েছে কিন্তু কোনোটিই Done হচ্ছে না, বা কোনো বাধা। Point গোনা হয় শুধু Done item-এ, তাই অর্ধেক কাজ chart-এ দেখায় না। Daily Scrum-এ এটাই তোলার কথা।
- দিন ৯–১০: শেষে বাকি. ৯ম দিনে একসাথে ৫ point Done (জমে থাকা কাজ শেষ), ১০ম দিনে কিছুই না। ১৩ point বাকি — এগুলো Increment-এ যাবে না, Product Backlog-এ ফিরবে। আসল প্রশ্ন point নয়: Sprint Goal কি পূরণ হয়েছে? Burndown সেটা বলে না।
- Burnup আলাদা করে দেখায়. Done রেখা ৩৫-এ পৌঁছেছে — শুরুর প্রতিশ্রুতি ৪০-এর খুব কাছে। Scope রেখা ৪র্থ দিনে ৪০ থেকে ৪৮-এ লাফিয়েছে। অর্থাৎ সমস্যার বড় অংশ scope creep (পরিকল্পনার বাইরে কাজ ঢোকা), দলের ধীরগতি নয়। Scope creep সামলানো নিয়ে পর্ব ২৪-এ আরও আছে।
Monte Carlo — অতীতকে বারবার নতুন করে চালানো
অংশের শুরুর ৬–১২ পরিসর অনেক চওড়া। আরও কাজের উত্তর হলো সম্ভাবনা: “৮৫% নিশ্চয়তায় কত Sprint?” Monte Carlo simulation সেটাই করে: অতীতের ছয়টি velocity থেকে এলোমেলোভাবে একটি করে বেছে নিয়ে (একটি বারবার আসতে পারে) ভবিষ্যতের Sprint সাজায়, যতক্ষণ না backlog শেষ হয়। এভাবে ১০,০০০ বার “ভবিষ্যৎ” চালিয়ে দেখে কতবার কত Sprint লাগল। প্রতিবার backlog-এর আকারও ১৫০–২০০-এর মধ্যে এলোমেলো:
// Monte Carlo forecast: resample past velocities to see how many sprints a 150-200 point backlog needs.
let seed = 1995; // mulberry32: small seeded PRNG
function rand() {
seed = (seed + 0x6D2B79F5) | 0; let t = Math.imul(seed ^ (seed >>> 15), 1 | seed);
t = (t + Math.imul(t ^ (t >>> 7), 61 | t)) ^ t; return ((t ^ (t >>> 14)) >>> 0) / 4294967296;
}
const past = [17, 23, 23, 25, 17, 20]; // velocities of the last 6 sprints
const TRIALS = 10000;
const result = [];
for (let t = 0; t < TRIALS; t++) {
let left = 150 + Math.floor(rand() * 51), sprints = 0; // backlog 150..200
while (left > 0) { // pick one past sprint at random (with replacement)
left -= past[Math.floor(rand() * past.length)];
sprints++;
}
result.push(sprints);
}
result.sort((a, b) => a - b);
const count = {};
for (const s of result) count[s] = (count[s] || 0) + 1;
let cum = 0;
console.log("sprints trials cumulative");
for (const s of Object.keys(count).map(Number)) {
cum += count[s];
console.log(String(s).padStart(7) + String(count[s]).padStart(8) + (100 * cum / TRIALS).toFixed(1).padStart(11) + "%");
}
const pct = (p) => result[Math.ceil(p * TRIALS) - 1]; // smallest value covering p of trials
console.log("50% confidence: done within " + pct(0.50) + " sprints");
console.log("85% confidence: done within " + pct(0.85) + " sprints");
console.log("95% confidence: done within " + pct(0.95) + " sprints");আউটপুট:
sprints trials cumulative
7 373 3.7%
8 3046 34.2%
9 3999 74.2%
10 2378 98.0%
11 203 100.0%
12 1 100.0%
50% confidence: done within 9 sprints
85% confidence: done within 10 sprints
95% confidence: done within 10 sprints
১০,০০০ বারের মধ্যে মাত্র ৩.৭% ক্ষেত্রে ৭ Sprint-এ শেষ, আর ৬ Sprint একবারও আসেনি — আশাবাদী প্রান্তটি কার্যত অসম্ভব। ক্রমযোজিত (cumulative) কলাম পড়ুন: ৯ Sprint-এর মধ্যে শেষ হয় ৭৪.২% ক্ষেত্রে, ১০-এর মধ্যে ৯৮.০%. তাই ৫০% নিশ্চয়তায় ৯, ৮৫% নিশ্চয়তায় ১০ Sprint. ১২ Sprint এসেছে মাত্র একবার। Stakeholder-কে বলার মতো বাক্য: “প্রায় অর্ধেক সম্ভাবনায় ৯ Sprint, আর ৮৫% নিশ্চয়তায় ১০ Sprint-এর মধ্যে।” তবে মনে রাখুন, মডেলটি ধরে নেয় ভবিষ্যৎ অতীতের মতো — দল বদলালে, বড় ছুটি এলে বা scope অনেক বাড়লে আবার হিসাব করতে হবে।
Velocity পরিকল্পনার হাতিয়ার, পারফরম্যান্সের মাপকাঠি নয়। Story point প্রতিটি দলের নিজের মাপ — এক দলের ২০ আর অন্য দলের ৪০ তুলনা করা চলে না, যেমন একজনের “এক মুঠো চাল” আর আরেকজনের “এক মুঠো” এক নয়। Velocity দিয়ে দলকে চাপ দিলে দল খুব সহজে point বাড়িয়ে দেয়, কাজ বাড়ে না। আর প্রতি Sprint-এ velocity “বাড়াতে হবে” এমন লক্ষ্য Manifesto-র টেকসই গতির নীতির বিরোধী।
৮ · Anti-pattern, বড় প্রতিষ্ঠানে Scrum আর চুক্তি
Scrum-এর নিয়ম অল্প, তাই নাম রেখে ভেতরটা বদলে ফেলা সহজ। Ken Schwaber এমন অবস্থার নাম দিয়েছিলেন “ScrumBut” — “আমরা Scrum করি, কিন্তু Retrospective বাদ দিই, কারণ সময় নেই।” প্রতিটি “কিন্তু” কোনো একটি সমস্যাকে দৃশ্যমান হতে দেয় না। সাধারণ কয়েকটি anti-pattern:
| Anti-pattern | কেমন দেখায় | কেন ক্ষতিকর, কী করবেন |
|---|---|---|
| Daily Scrum = status meeting | প্রত্যেকে manager-এর দিকে তাকিয়ে “গতকাল কী করেছি” বলেন; ৪৫ মিনিট | Daily Scrum Developers-এর নিজের পরিকল্পনার জন্য, Sprint Goal ঘিরে। আগের সংস্করণের “তিনটি প্রশ্ন” ২০২০-এর Guide-এ নেই — কাঠামো Developers নিজেরা বাছেন; ১৫ মিনিটই সীমা। |
| Proxy Product Owner | PO শুধু আসল সিদ্ধান্তদাতার বার্তা বয়ে আনেন, নিজে কিছু ঠিক করতে পারেন না | প্রতিটি প্রশ্নে অপেক্ষা; Backlog-এর ক্রম আসলে কেউ ঠিক করে না। PO-কে সত্যিকারের ক্ষমতা দিতে হবে। |
| “Hardening” sprint | কয়েকটি Sprint feature বানিয়ে, তারপর একটি Sprint শুধু bug ঠিক আর test | প্রতিটি Increment-এরই Definition of Done মেলানোর কথা। Hardening sprint মানে DoD দুর্বল আর আগের Increment-গুলো আসলে Done ছিল না। |
| Sprint-এর মাঝে লক্ষ্য বদল | প্রতি সপ্তাহে নতুন “জরুরি” কাজ ঢোকে | Sprint Goal অর্থহীন হয়। জরুরি কাজ Product Backlog-এ যায়; সত্যিই goal অচল হলে PO Sprint বাতিল করেন। |
| Retrospective-এ কিছুই বদলায় না | একই অভিযোগ প্রতিবার, কোনো পদক্ষেপ নেই | প্রতিবার অন্তত একটি ছোট, নির্দিষ্ট উন্নতি পরের Sprint Backlog-এ রাখুন। |
বড় প্রতিষ্ঠানে — একাধিক দল
Scrum একটি ছোট দলের জন্য। একই product-এ দশটি দল কাজ করলে কী হবে? এর জন্য কয়েকটি “scaling” কাঠামো আছে। SAFe (Scaled Agile Framework, Dean Leffingwell-এর নেতৃত্বে, ২০১০-এর দশকের শুরু থেকে) অনেক স্তর, নির্দিষ্ট role আর বড় পরিকল্পনা-অনুষ্ঠান যোগ করে; বড় প্রতিষ্ঠানে জনপ্রিয়, আবার অনেক Agile অনুশীলনকারীর সমালোচনাও পায় যে এটি বেশি ভারী। LeSS (Large-Scale Scrum, Craig Larman ও Bas Vodde) উল্টো পথে হাঁটে — যতটা সম্ভব কম নতুন জিনিস: একটি Product Backlog, একজন Product Owner, একাধিক দল একই Sprint-এ। Scrum.org-এর Nexus-ও আছে। কোনটি “সেরা” — এ নিয়ে কোনো সর্বসম্মত প্রমাণ নেই; প্রতিটির পক্ষে-বিপক্ষে অভিজ্ঞতা আছে।
চুক্তি আর outsourcing
Manifesto-র তৃতীয় মূল্যবোধ চুক্তির কথা বলে, কারণ বাস্তবে software প্রায়ই একটি প্রতিষ্ঠান আরেকটির জন্য বানায়। প্রচলিত fixed-price, fixed-scope চুক্তিতে শুরুতেই সব feature, দাম আর সময় বাঁধা থাকে — Agile-এর “বদলকে স্বাগত” নীতির সাথে সরাসরি টান। প্রচলিত বিকল্পগুলোর মধ্যে আছে: সময় ও খরচ নির্দিষ্ট রেখে scope নমনীয় রাখা (Product Backlog-এর ওপরের অংশ আগে); time-and-materials (কাজের সময় অনুযায়ী বিল); অথবা ছোট ছোট পর্যায়ে চুক্তি, প্রতিটি শেষে চালিয়ে যাওয়া বা থামার সুযোগ। কোনটি উপযুক্ত, তা দুই পক্ষের আস্থা, ঝুঁকি আর আইনি পরিবেশের ওপর নির্ভর করে।
বিদেশি গ্রাহকের জন্য কাজ করা দলের (বাংলাদেশসহ অনেক দেশে এমন কাজ প্রচলিত) কিছু সাধারণ চ্যালেঞ্জ আছে: সময়-অঞ্চলের পার্থক্যে Daily Scrum বা Review-র সময় মেলানো; গ্রাহকের পক্ষের প্রকৃত Product Owner দূরে থাকায় স্থানীয় একজন “proxy” রাখার প্রবণতা; আর চুক্তিতে Agile লেখা থাকলেও কার্যত waterfall-এর মতো শেষে একবার হস্তান্তর। এগুলো সাধারণ অভিজ্ঞতার কথা, কোনো পরিসংখ্যান নয়; প্রশ্ন ০৪-এ আরও আলোচনা আছে।
আরও গভীরে: মূল উৎসগুলো ছোট আর বিনামূল্যে পড়া যায় — agilemanifesto.org-এ Manifesto, বারোটি নীতি আর Jim Highsmith-এর লেখা ২০০১-এর বৈঠকের ইতিহাস; scrumguides.org-এ Scrum Guide 2020 (প্রায় ১৩ পাতা) আর আগের সংস্করণগুলো। “Scrum” নামটি এসেছে Hirotaka Takeuchi ও Ikujiro Nonaka-র ১৯৮৬ সালের Harvard Business Review প্রবন্ধ “The New New Product Development Game” থেকে, যেখানে rugby-র scrum-এর মতো একসাথে এগোনো দলের কথা বলা হয়। Forecasting নিয়ে Mike Cohn-এর Agile Estimating and Planning (২০০৫) একটি পরিচিত বই।
পরীক্ষা ও ইন্টারভিউতে:
- Agile Manifesto-র চারটি মূল্যবোধ লিখুন। — Individuals and interactions over processes and tools; Working software over comprehensive documentation; Customer collaboration over contract negotiation; Responding to change over following a plan.
- Scrum-এর তিনটি artifact আর তাদের commitment? — Product Backlog → Product Goal, Sprint Backlog → Sprint Goal, Increment → Definition of Done (Scrum Guide 2020).
- Sprint Review আর Sprint Retrospective-এর পার্থক্য? — Review যাচাই করে product আর ফল, stakeholder-সহ; Retrospective যাচাই করে দলের কাজের ধরন আর process.
- Velocity দিয়ে দুটি দলের তুলনা করা যায় কি? — না; story point প্রতিটি দলের আপেক্ষিক মাপ, আর velocity শুধু সেই দলের নিজের পরিকল্পনার জন্য।
- Scrum Master কি project manager? — না; দলের কার্যকারিতার জন্য জবাবদিহি, বাধা সরান ও শেখান, কাজ ভাগ করে দেন না।
৯ · AI-এর যুগে Agile আর Scrum
AI এখন user story লেখে, backlog সাজায়, এমনকি story point-ও অনুমান করে। কিন্তু Scrum দাঁড়িয়ে আছে empiricism-এর ওপর — যা আপনার দলে সত্যিই ঘটেছে তার ওপর, আর AI আপনার দল, গ্রাহক বা codebase দেখেনি। তাই AI-এর দেওয়া Scrum “নিয়ম” বা সংখ্যা যাচাই করে নিন।
| AI প্রায়ই যা করে | কীভাবে ধরবেন |
|---|---|
| পুরোনো Guide-এর নিয়ম বলে — “Development Team ৩–৯ জন”, “Daily Scrum-এ তিনটি প্রশ্ন বলা Scrum-এর নিয়ম” | scrumguides.org-এর ২০২০ সংস্করণ খুলে মিলিয়ে দেখুন |
| “Sprint 0”, “hardening sprint”, “release sprint”-কে Scrum-এর অংশ বলে | Guide-এ এগুলো নেই; কোনো নির্দিষ্ট কাঠামো বা প্রতিষ্ঠানের প্রথা হতে পারে |
| Timebox বা নিয়ম বানিয়ে বলে, নির্দিষ্ট পাতা বা সংস্করণের উল্লেখসহ | উদ্ধৃতিটি মূল লেখায় খুঁজুন; না পেলে বানানো ধরে নিন |
| নিখুঁত একটি তারিখ বা “২৩.৫ point” ধরনের অনুমান দেয় | নিজের দলের velocity দিয়ে পরিসর বা Monte Carlo চালান |
| User story-র নামে আসলে কারিগরি task লেখে (“database টেবিল বানানো”) | ব্যবহারকারী কী মূল্য পাবেন, তা আছে কি না দেখুন (পর্ব ২২) |
AI দিয়ে backlog refinement-এ সাহায্য নিতে চাইলে প্রসঙ্গ দিন, সীমা দিন, আর যাচাইয়ের সুযোগ রাখুন। গ্রাহকের গোপন তথ্য, চুক্তির শর্ত বা কর্মীদের ব্যক্তিগত তথ্য prompt-এ পেস্ট করবেন না:
Software engineering-এ AI ব্যবহারের চেকলিস্ট
ভাবনার প্রশ্ন
প্রতিটি প্রশ্ন নিয়ে নিজে কিছুক্ষণ ভাবুন — তারপর “→ উত্তর” চাপুন।
প্র ০১Manifesto বলছে “working software over comprehensive documentation” — তাহলে কি ব্যাংক বা হাসপাতালের software-এও documentation কমিয়ে দেওয়া উচিত?
না, আর Manifesto নিজেও তা বলে না। মূল লেখার শেষ বাক্যটিই উত্তর: “while there is value in the items on the right, we value the items on the left more.” অর্থাৎ এটি অগ্রাধিকারের কথা, বাদ দেওয়ার নয়। ২০০১ সালের Snowbird বৈঠকে যাঁরা ছিলেন, তাঁরা মূলত এমন প্রতিষ্ঠানের অভিজ্ঞতা থেকে কথা বলছিলেন, যেখানে মাসের পর মাস শুধু দলিল লেখা হতো, আর সেই দলিল কোড লেখা শুরুর আগেই পুরোনো হয়ে যেত। তাঁদের প্রতিবাদ ছিল এমন দলিলের বিরুদ্ধে, যা কেউ পড়ে না এবং যা অগ্রগতির ভুল ধারণা দেয়।
নিয়ন্ত্রিত ক্ষেত্রে — চিকিৎসা যন্ত্র, বিমান, রেল সংকেত, ব্যাংকিং — আইন বা মানদণ্ড নির্দিষ্ট দলিল চায়: requirement থেকে test পর্যন্ত traceability, ঝুঁকি বিশ্লেষণ, পরিবর্তনের রেকর্ড। উদাহরণ হিসেবে চিকিৎসা যন্ত্রের software-এর জন্য IEC 62304 নামে একটি আন্তর্জাতিক মানদণ্ড আছে। এসব ক্ষেত্রেও Agile ব্যবহারের অভিজ্ঞতা প্রকাশিত হয়েছে; সেখানে দলিল বাদ যায় না, বরং প্রতিটি Sprint-এর Definition of Done-এ দলিল হালনাগাদ রাখাকে অন্তর্ভুক্ত করা হয়। ফলে দলিল শেষে একবারে লেখার বিশাল বোঝা হয় না, আর কোডের সাথে মিলও থাকে।
আরেকটি সূক্ষ্ম কথা: “Agile” শব্দটি নিজেই পরে বাণিজ্যিক পণ্যে পরিণত হয়েছে — সার্টিফিকেট, tool, পরামর্শ সেবা। Manifesto-র সহ-স্বাক্ষরকারী Dave Thomas ২০১৪ সালে “Agile Is Dead (Long Live Agility)” নামে একটি লেখায় বলেছিলেন, বিশেষ্য “Agile” বিক্রির জিনিস হয়ে গেছে; আসল জিনিস হলো ক্রিয়াবিশেষণ — agilely কাজ করা: কোথায় আছেন দেখুন, লক্ষ্যের দিকে ছোট একটি পদক্ষেপ নিন, যা শিখলেন তা দিয়ে বোঝাপড়া বদলান, আবার করুন। এই দৃষ্টিতে প্রশ্নটি হয়ে যায়: কোন দলিল সত্যিই কারও সিদ্ধান্তে বা নিরাপত্তায় কাজে লাগে, আর কোনটি শুধু অভ্যাসে লেখা হয়?
মূল উপলব্ধি: Manifesto অগ্রাধিকার বলে, নিষেধাজ্ঞা নয়। নিয়ন্ত্রিত ক্ষেত্রে দরকারি দলিল Definition of Done-এর অংশ হয়ে প্রতিটি Increment-এর সাথে এগোয়।
প্র ০২Scrum Guide ২০১০ থেকে ২০২০-এ কয়েকবার বদলেছে, আর প্রতিবার আরও ছোট ও কম নির্দেশমূলক হয়েছে। কেন একটি কাঠামো নিজেকে ছোট করবে?
Scrum-এর শিকড় একটি ব্যবসায়িক প্রবন্ধে। ১৯৮৬ সালে Hirotaka Takeuchi ও Ikujiro Nonaka Harvard Business Review-তে দেখান, Honda, Canon, Fuji-Xerox-এর মতো কোম্পানির সফল পণ্য-উন্নয়ন দল relay দৌড়ের মতো এক বিভাগ থেকে আরেক বিভাগে কাজ হস্তান্তর করে না, বরং rugby-র scrum-এর মতো পুরো দল একসাথে এগোয়। ১৯৯৩ সালের দিকে Jeff Sutherland একটি software কোম্পানিতে এই ধারণা প্রয়োগ করেন, আর Ken Schwaber-এর সাথে মিলে ১৯৯৫ সালে OOPSLA সম্মেলনে Scrum উপস্থাপন করেন। Schwaber প্রক্রিয়া-নিয়ন্ত্রণ তত্ত্ব থেকে একটি গুরুত্বপূর্ণ ধারণা আনেন: জটিল, অনিশ্চিত কাজে পূর্বনির্ধারিত (defined) প্রক্রিয়া চলে না, দরকার empirical নিয়ন্ত্রণ — দেখা, যাচাই, খাপ খাওয়ানো।
২০১০ সালে প্রথম Scrum Guide প্রকাশ হয়, তারপর ২০১১, ২০১৩, ২০১৬, ২০১৭ আর ২০২০-এ সংশোধন। সংস্করণ-ইতিহাস থেকে কয়েকটি উল্লেখযোগ্য উদাহরণ: ২০১১-এ burndown chart-এর বাধ্যবাধকতা বাদ যায় আর “commitment”-এর বদলে Sprint-এর কাজকে “forecast” বলা হয়; ২০১৬-এ পাঁচটি মূল্যবোধ যোগ হয়; ২০২০-এ আগের সংস্করণগুলোতে বর্ণিত Daily Scrum-এর তিনটি পরিচিত প্রশ্ন (গতকাল কী করেছি, আজ কী করব, কোনো বাধা আছে কি না) পুরোপুরি বাদ যায়, “Development Team” শব্দ বাদ যায়, Product Goal আর প্রতিটি artifact-এর commitment যোগ হয়, আর software-নির্দিষ্ট ভাষা কমিয়ে দলিলটি অন্য ক্ষেত্রের জন্যও খোলা হয়।
কেন ছোট করা? প্রথমত, যত বেশি খুঁটিনাটি নিয়ম, তত বেশি মানুষ নিয়মকেই লক্ষ্য ভাবে — তিনটি প্রশ্ন যান্ত্রিকভাবে বলা হয়, কিন্তু Sprint Goal নিয়ে কেউ ভাবে না। দ্বিতীয়ত, empiricism নিজেই বলে প্রতিটি দলের পরিস্থিতি আলাদা; তাই কাঠামো শুধু ন্যূনতম “অপরিবর্তনীয়” অংশ দেবে, বাকিটা দল নিজের অভিজ্ঞতায় যোগ করবে। Guide নিজে বলে, কাঠামোটি অপরিবর্তনীয় — শুধু কিছু অংশ প্রয়োগ করা সম্ভব, কিন্তু ফলটি আর Scrum নয়। অর্থাৎ নিয়ম কম, কিন্তু যা আছে তা অপরিহার্য।
মূল উপলব্ধি: ভালো কাঠামো ন্যূনতম, অপরিহার্য নিয়ম দেয় আর বাকিটা দলের শেখার ওপর ছাড়ে। কোনো প্রশ্নের উত্তরে Scrum-এর নিয়ম বললে সংস্করণটিও বলুন।
প্র ০৩একজন manager বলছেন, “দল A-র velocity ৪০, দল B-র মাত্র ২০ — দল B-কে আরও খাটতে হবে।” এতে ভুল কোথায়, আর তাহলে কী মাপা উচিত?
প্রথম ভুল একক নিয়ে। Story point কোনো সার্বজনীন একক নয় — প্রতিটি দল নিজের একটি পরিচিত item-কে ভিত্তি ধরে বাকিগুলোর আপেক্ষিক আকার দেয়। দল A যে কাজকে ৮ বলে, দল B তাকে ৩ বলতে পারে। তাই ৪০ বনাম ২০ তুলনা মানে কেজি আর পাউন্ড না জেনে দুটি ওজন তুলনা করা।
দ্বিতীয় ভুল আরও গভীর। অর্থনীতিবিদ Charles Goodhart-এর নামে পরিচিত একটি সূত্র, যার জনপ্রিয় রূপ নৃবিজ্ঞানী Marilyn Strathern-এর ভাষায়: “When a measure becomes a target, it ceases to be a good measure.” Velocity-কে লক্ষ্য বানালে দল খুব স্বাভাবিকভাবেই অনুমান বাড়িয়ে দেয় — ৩-এর কাজ ৫ হয়ে যায়, velocity “বাড়ে”, কিন্তু একটি বাড়তি feature-ও আসে না। আরও খারাপ: দ্রুত point দেখাতে test বাদ যায়, technical debt জমে, পরে সব ধীর হয়ে যায়। Story point-এর প্রচলনে যাঁদের ভূমিকা ছিল বলে ধরা হয়, তাঁদের কেউ কেউ (যেমন Ron Jeffries) পরে লিখেছেন যে এর অপব্যবহার দেখে তাঁরা দুঃখিত।
তাহলে কী মাপবেন? প্রথমত, ফল: ব্যবহারকারী কি সমস্যার সমাধান পাচ্ছেন, Sprint Goal কত ঘন ঘন পূরণ হচ্ছে, Increment কত দ্রুত ব্যবহারকারীর হাতে পৌঁছাচ্ছে। দ্বিতীয়ত, প্রবাহ: একটি কাজ শুরু থেকে শেষ হতে কত সময় লাগে (cycle time) আর সপ্তাহে কয়টি item শেষ হয় (throughput) — এগুলো আসল সময় আর গণনা, অনুমান নয়; Kanban-এর আলোচনায় (পর্ব ০৬) এদের বিস্তারিত পাবেন। তৃতীয়ত, delivery-র স্বাস্থ্য: deploy কত ঘন ঘন হয়, কত deploy-এ সমস্যা হয় — DORA metric নামে পরিচিত, পর্ব ৫৯-এ। আর দল B কেন ধীর মনে হচ্ছে, তা জানতে হলে তাদের Retrospective-এ যা উঠে আসছে, সেটাই সবচেয়ে ভালো তথ্য।
মূল উপলব্ধি: Velocity দলের নিজের পরিকল্পনার যন্ত্র; একে লক্ষ্য বা তুলনার মাপ বানালেই এটি অর্থ হারায়। ফল আর প্রবাহ মাপুন।
প্র ০৪একটি software প্রতিষ্ঠান বিদেশি গ্রাহকের সাথে fixed-price চুক্তি করেছে, কিন্তু কাজ করতে চায় Scrum-এ। এটা কি সম্ভব, আর কোথায় সাবধান হতে হবে?
Project management-এ একটি পুরোনো ধারণা আছে “iron triangle” — scope, সময় আর খরচ; তিনটিই একসাথে বেঁধে দিলে চতুর্থ জিনিস, গুণমান, চাপে পড়ে। প্রচলিত fixed-price, fixed-scope চুক্তি ঠিক এটাই করে: শুরুতে সব feature লেখা, দাম আর তারিখ নির্দিষ্ট। Agile ত্রিভুজটিকে উল্টে দেয় — সময় (Sprint) আর খরচ (দলের আকার) মোটামুটি স্থির, scope নমনীয়; Product Owner প্রতিটি Sprint-এ সবচেয়ে মূল্যবান কাজ আগে আনেন।
দুটি মেলানোর কয়েকটি প্রচলিত উপায় আছে। একটি হলো মোট বাজেট নির্দিষ্ট রেখে scope-এর অদলবদলের নিয়ম চুক্তিতে লেখা: সমান আকারের নতুন একটি item আনলে একটি পুরোনো item বাদ যাবে। Jeff Sutherland এমন চুক্তির ধরনকে “Money for Nothing, Change for Free” নামে জনপ্রিয় করেন — নতুন কিছু বদলে দেওয়া বিনামূল্যে, আর যথেষ্ট মূল্য পেয়ে গেলে গ্রাহক আগেভাগে চুক্তি শেষ করতে পারেন, বাকি অর্থের একটি অংশ দিয়ে। আরেকটি হলো ছোট পর্যায়ে চুক্তি: প্রথমে একটি আবিষ্কার পর্যায়, তারপর কয়েক Sprint করে নবায়ন। আবার time-and-materials চুক্তিতে স্বচ্ছতা বেশি লাগে, কারণ গ্রাহক সময় অনুযায়ী টাকা দেন। কোনোটিই সব ক্ষেত্রে ঠিক নয়; আইনি পরামর্শ আর পারস্পরিক আস্থা দুটোই লাগে।
Outsourcing-এ বিশেষ ঝুঁকি হলো “নামে Agile”: চুক্তি fixed-scope, গ্রাহক Sprint Review-তে আসেন না, স্থানীয় একজন proxy Product Owner আন্দাজে সিদ্ধান্ত নেন, আর শেষে একবারে হস্তান্তরে দেখা যায় গ্রাহক অন্য কিছু ভেবেছিলেন। সময়-অঞ্চলের পার্থক্য থাকলে Review আর Planning-এর একটি নিয়মিত সময় আগে থেকে ঠিক করা, প্রতিটি Sprint-এর শেষে গ্রাহককে কাজ করা Increment ব্যবহার করতে দেওয়া, আর দুই পক্ষের সই করা Definition of Done — এগুলো সাধারণভাবে ঝুঁকি কমায়। এখানে কোনো নির্দিষ্ট দেশ বা প্রতিষ্ঠানের পরিসংখ্যান দাবি করা হচ্ছে না; এগুলো বহু দলের সাধারণ অভিজ্ঞতা।
মূল উপলব্ধি: চুক্তি যা বেঁধে দেয়, দল সেটাই অনুসরণ করে। Agile-এ কাজ করতে চাইলে scope-এর নমনীয়তা আর গ্রাহকের নিয়মিত অংশগ্রহণ চুক্তিতেই লিখে নিতে হয়।
প্র ০৫একটি দল দুই বছর ধরে নিখুঁতভাবে সব Scrum event করছে, তবু প্রতিটি নতুন feature আগের চেয়ে বেশি সময় নিচ্ছে। Scrum কি ব্যর্থ, নাকি অন্য কিছু?
এটি একটি পরিচিত রোগ। Martin Fowler ২০০৯ সালে “Flaccid Scrum” নামে একটি লেখায় বর্ণনা করেন: দল Scrum-এর process মানছে, কিন্তু প্রযুক্তিগত অনুশীলনে মন দেয়নি — স্বয়ংক্রিয় test কম, নকশা অগোছালো, integration দেরিতে। শুরুতে খুব দ্রুত feature আসে, কিন্তু কোড যত বাড়ে, প্রতিটি বদল তত ঝুঁকিপূর্ণ আর ধীর হয়। Scrum নিজে কোড লেখার কোনো অনুশীলন বলে না — ইচ্ছা করেই — তাই এই ফাঁক দলকে নিজে পূরণ করতে হয়।
Manifesto-র নবম নীতি ঠিক এটাই বলে: প্রযুক্তিগত উৎকর্ষ আর ভালো নকশায় নিয়মিত মনোযোগ agility বাড়ায়। XP-র অনুশীলনগুলো এখানে কাজে আসে: test-first উন্নয়ন বদলের সাহস দেয়, ধারাবাহিক refactoring নকশাকে পরিচ্ছন্ন রাখে, continuous integration বড় merge-এর বিপদ এড়ায়, আর pair programming বা নিয়মিত code review জ্ঞান ছড়িয়ে দেয়। এদের বিস্তারিত এই কোর্সের পরের মডিউলগুলোতে — refactoring পর্ব ৪২-এ, technical debt পর্ব ৪৩-এ, TDD পর্ব ৪৮-এ আর CI পর্ব ৫৮-এ।
Scrum-এর ভেতরে প্রতিকারের জায়গাও আছে। Retrospective-এ দল Definition of Done নিয়েও ভাবতে পারে — যেমন “প্রতিটি item-এ unit test আর code review” যোগ করা। Product Owner-কে বোঝাতে হয় যে technical debt কমানোর কাজও মূল্যবান, কারণ এতে ভবিষ্যতের প্রতিটি feature দ্রুত হয়; এমন কাজ Product Backlog-এ দৃশ্যমান রাখুন। দলের velocity সাময়িক কমতে পারে, কিন্তু সেটি সৎ সংখ্যা। আর scaling-এর প্রশ্নে একই শিক্ষা: দুর্বল প্রকৌশল অনুশীলন নিয়ে দশটি দলকে SAFe বা LeSS-এ জুড়ে দিলে সমস্যা দশ গুণ হয়, কমে না।
মূল উপলব্ধি: Scrum কাজের ছন্দ আর স্বচ্ছতা দেয়; গতি টেকসই রাখে প্রকৌশল অনুশীলন। দুটি একসাথে না থাকলে “Agile” নাম থাকে, agility থাকে না।
অনুশীলন
কাগজ-কলম নিয়ে বসুন — হিসাবগুলো নিজে করে তারপর উত্তর মেলান।
-
Forecast-এর হিসাব: একটি দলের শেষ পাঁচ Sprint-এর velocity: ৩০, ২৪, ২৭, ৩৩, ২৬. বাকি কাজ ১৮০ থেকে ২২০ point. প্রতিটি Sprint দুই সপ্তাহের। (ক) গড় velocity কত? (খ) আশাবাদী, গড়-ভিত্তিক (বাকি কাজের মাঝামাঝি ধরে) আর হতাশাবাদী হিসাবে কত Sprint? (গ) সপ্তাহে কত পরিসর? (ঘ) একটি ১০ দিনের Sprint-এ ৫০ point নেওয়া হলে ৬ষ্ঠ দিনের শেষে ideal রেখায় কত বাকি থাকার কথা?
(ক) যোগফল ৩০ + ২৪ + ২৭ + ৩৩ + ২৬ = ১৪০; গড় ১৪০ ÷ ৫ = ২৮.
(খ) আশাবাদী: ১৮০ ÷ ৩৩ = ৫.৪৫ → ৬ Sprint. গড়-ভিত্তিক: মাঝামাঝি কাজ ২০০, ২০০ ÷ ২৮ = ৭.১৪ → ৮ Sprint. হতাশাবাদী: ২২০ ÷ ২৪ = ৯.১৭ → ১০ Sprint. প্রতিটি ক্ষেত্রে ভগ্নাংশ ওপরের দিকে, কারণ আংশিক Sprint-ও পুরো Sprint-এর সময় নেয়।
(গ) ৬ থেকে ১০ Sprint × ২ সপ্তাহ = ১২ থেকে ২০ সপ্তাহ। Stakeholder-কে একটি তারিখ নয়, এই পরিসর বলুন — আর আরও ভালো হয় Monte Carlo চালিয়ে ৮৫% নিশ্চয়তার সংখ্যাটি দিলে।
(ঘ) Ideal রেখা প্রতিদিন ৫০ ÷ ১০ = ৫ point কমে; ৬ দিন পরে বাকি ৫০ − ৫ × ৬ = ২০ point.
-
আউটপুট অনুমান করুন: নিচের JavaScript কোড চালালে কী ছাপা হবে? আগে হাতে হিসাব করুন।
const v = [20, 26, 23]; const avg = v.reduce((a, b) => a + b, 0) / v.length; let left = 100, sprints = 0; while (left > 0) { left -= avg; sprints++; } console.log(avg, sprints, left);আউটপুট:
23 5 -15গড় (২০ + ২৬ + ২৩) ÷ ৩ = ৬৯ ÷ ৩ = ২৩. Loop: ১০০ → ৭৭ → ৫৪ → ৩১ → ৮ — চার Sprint পরে এখনো ৮ বাকি, তাই পঞ্চমবার চলে: ৮ − ২৩ = −১৫. শর্ত
left > 0মিথ্যা হয়, loop থামে,sprints= ৫. ঋণাত্মকleftমানে শেষ Sprint-এ ক্ষমতার ১৫ point অব্যবহৃত — সেখানে Product Backlog-এর পরের কাজ নেওয়া যায়। এটিMath.ceil(100 / 23)= ৫-এর সমান ফল দেয়। -
সমালোচনা করুন: একটি কাল্পনিক দলের নিয়ম: “প্রতিদিন সকাল ১০টায় ৪৫ মিনিটের Daily Scrum, যেখানে প্রত্যেক Developer department head-কে নিজের গতকালের কাজের হিসাব দেন। প্রতি চতুর্থ Sprint হলো ‘hardening sprint’, শুধু bug ঠিক করার জন্য। প্রতিটি দলের velocity প্রতি মাসে ১০% বাড়াতে হবে।” কোন কোন জায়গায় সমস্যা, আর কীভাবে বদলাবেন?
Daily Scrum: Timebox ১৫ মিনিট, ৪৫ নয়। এটি Developers-এর নিজেদের পরিকল্পনার জন্য, Sprint Goal ঘিরে — কোনো কর্তার কাছে হিসাব দেওয়ার মিটিং নয়। Department head-এর হিসাব দরকার হলে Sprint Review বা স্বচ্ছ Sprint Backlog-ই উৎস।
Hardening sprint: প্রতিটি Increment-এরই Definition of Done মেলানোর কথা। নিয়মিত bug-ঠিক-করার Sprint লাগা মানে আগের কাজ আসলে Done ছিল না। প্রতিকার: Definition of Done শক্ত করা (test, review, CI), প্রয়োজনে প্রতি Sprint-এ কম item নেওয়া।
Velocity লক্ষ্য: Velocity-কে লক্ষ্য বানালে অনুমান ফুলে ওঠে, কাজ বাড়ে না; আর অনির্দিষ্টকাল ১০% করে বাড়ানো টেকসই গতির নীতির বিরোধী। দলগুলোর velocity তুলনাও অর্থহীন। এর বদলে Sprint Goal পূরণের হার, cycle time আর ব্যবহারকারীর ফল দেখুন।
-
একটি item ভাঙুন: একটি কাল্পনিক বিশ্ববিদ্যালয়ের ফলাফল পোর্টালের Product Backlog item: “শিক্ষার্থীরা অনলাইনে ফল দেখবেন, transcript ডাউনলোড করবেন আর পুনর্মূল্যায়নের আবেদন করবেন” — দলের অনুমান প্রায় ৩৪ point, velocity ~১৮. এটিকে এমনভাবে ভাগ করুন যাতে প্রতিটি অংশ আলাদাভাবে ব্যবহারযোগ্য হয়, আর একটি প্রথম Sprint-এর Sprint Goal লিখুন।
একটি সম্ভাব্য ভাগ (কাজের ধারা আর ধরন ধরে): (১) roll নম্বর ও পাসওয়ার্ডে লগইন করে নিজের এক term-এর ফল দেখা; (২) সব term-এর ফল আর CGPA দেখা; (৩) অনানুষ্ঠানিক transcript PDF ডাউনলোড; (৪) পুনর্মূল্যায়নের আবেদন জমা; (৫) আবেদনের অবস্থা দেখা; (৬) আবেদনের ফি অনলাইনে দেওয়া। প্রতিটি আলাদাভাবে শিক্ষার্থীর কাজে লাগে; “database বানানো” বা “UI বানানো” ধরনের স্তর-ভিত্তিক ভাগ এড়ানো হয়েছে।
প্রথম Sprint-এর জন্য (১) আর (২) — আকার দল নিজে ঠিক করবে, ধরা যাক ৫ + ৮ = ১৩, velocity ~১৮-এর মধ্যে। Sprint Goal: “একজন শিক্ষার্থী নিরাপদে লগইন করে নিজের সব term-এর ফল আর CGPA দেখতে পারবেন।” খেয়াল করুন, goal একটি ফল বর্ণনা করে, item-এর তালিকা নয়; কাজ কম-বেশি হলেও goal স্থির থাকে।
নিজেকে যাচাই করুন
ভুল হলে কারণসহ ব্যাখ্যা পাবেন, আবার চেষ্টাও করতে পারবেন।
ক্রমScrum Guide 2020 অনুযায়ী একটি Sprint-এর ভেতরের ঘটনাগুলো সঠিক ক্রমে সাজান (▲▼ চেপে সরান)
- 🎯 Sprint Planning — Sprint Goal আর Sprint Backlog তৈরি
- ⏱️ Daily Scrum — প্রতিদিন ১৫ মিনিটে অগ্রগতি যাচাই
- 📦 Sprint Review — Increment আর ফল stakeholder-এর সাথে যাচাই
- 🔄 Sprint Retrospective — দল আর process-এর উন্নতি খোঁজা
- ➡️ পরের Sprint-এর Sprint Planning
Agile Manifesto (২০০১)-এর চারটি মূল্যবোধের একটি কোনটি?
- Following a plan over responding to change
- Working software over comprehensive documentation
- Velocity over customer satisfaction
- Contract negotiation over customer collaboration
Scrum Guide 2020-এ Scrum Team-এর তিনটি দায়িত্ব (accountability) কী কী?
- Project Manager, Team Lead, Developers
- Product Owner, Scrum Master, Development Team
- Product Owner, Scrum Master, Developers
- Product Owner, Stakeholder, Tester
Scrum Guide 2020 অনুযায়ী Increment-এর commitment কোনটি?
- Definition of Done
- Sprint Goal
- Product Goal
- Velocity target
একটি দলের শেষ তিন Sprint-এর velocity ১৮, ২২ আর ২০ point. বাকি কাজ ৯০ point. গড় velocity ধরে আর কত Sprint লাগবে?
- ৪
- ৪.৫
- ৬
- ৫
একটি ১০ দিনের Sprint-এর burndown chart-এ ৪র্থ দিনে বাকি কাজের রেখা ২২ থেকে ২৭-এ উঠে গেছে। এর সবচেয়ে সম্ভাব্য ব্যাখ্যা কী?
- ওই দিন দল কোনো কাজই শেষ করেনি
- Sprint-এ নতুন কাজ ঢুকেছে বা কোনো item-এর আকার নতুন করে বড় অনুমান করা হয়েছে
- একটি বড় item Done হয়েছে
- Ideal রেখা বদলে গেছে
“প্রতি চতুর্থ Sprint-এ আমরা শুধু bug ঠিক করি আর test চালাই (hardening sprint)” — Scrum-এর দৃষ্টিতে এটি কী নির্দেশ করে?
- এটি Scrum Guide 2020-এর বাধ্যতামূলক অংশ
- দলটি গুণমানে খুব মনোযোগী, তাই এটি আদর্শ অনুশীলন
- Definition of Done দুর্বল — আগের Increment-গুলো আসলে Done ছিল না
- Sprint-এর দৈর্ঘ্য এক মাসের বেশি হয়ে গেছে
শব্দকোষ
লেখার মধ্যে ডটেড দাগ দেওয়া শব্দে মাউস রাখুন বা চাপুন — অর্থ দেখাবে। এই পর্বের সব নতুন শব্দ এখানে একসাথে:
মনে রাখুন
- Agile Manifesto (২০০১, Snowbird, ১৭ জন): ৪টি মূল্যবোধ আর ১২টি নীতি; “over” মানে অগ্রাধিকার, বাদ দেওয়া নয়।
- Scrum Guide 2020: empiricism (স্বচ্ছতা, যাচাই, খাপ খাওয়ানো); Product Owner, Scrum Master, Developers; দল সাধারণত ১০ জন বা কম।
- Event: Sprint (≤ ১ মাস) আর তার ভেতরে Planning (≤ ৮ ঘণ্টা), Daily Scrum (১৫ মিনিট), Review (≤ ৪ ঘণ্টা), Retrospective (≤ ৩ ঘণ্টা) — সীমাগুলো এক মাসের Sprint-এর জন্য।
- Artifact → commitment: Product Backlog → Product Goal, Sprint Backlog → Sprint Goal, Increment → Definition of Done.
- Velocity পরিকল্পনার হাতিয়ার, তুলনা বা লক্ষ্যের মাপ নয়; forecast দিন পরিসরে বা Monte Carlo-র সম্ভাবনায়, আর burnup দিয়ে scope creep আলাদা করুন।
আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ
- পর্ব ০৬ · Kanban আর lean — WIP limit, flow, lead time আর ধারাবাহিক উন্নতিপরবর্তী পর্বনির্দিষ্ট Sprint ছাড়াই কাজের প্রবাহ নিয়ন্ত্রণ।
- পর্ব ০৪ · SDLC আর process modelআগের পর্বWaterfall, V-model, iterative, incremental আর spiral — Agile-এর পটভূমি।
- সফটওয়্যার ইঞ্জিনিয়ারিং ও Git · কোর্স হোম৭০টি পর্বপুরো কোর্সের রোডম্যাপ — কোন পর্ব কখন।
- System Design · Deployment আর releaseপাশের ট্র্যাকছোট ছোট release নিরাপদে ব্যবহারকারীর কাছে পৌঁছানোর কৌশল।
- System Design · Requirement আর trade-offপাশের ট্র্যাককী বানাবেন আর কোনটি আগে — সিদ্ধান্তের কাঠামো।