Mundarija (43)
- Bu darsda
- 1. Nega bu kerak?
- 2. Agile manifesti
- 2.1 To'rt qadriyat
- 2.2 O'n ikki tamoyil
- 2.3 Agile — falsafa, Scrum — usul
- 3. Scrum: asoslar
- 3.1 Ta'rif
- 3.2 Uch ustun va besh qadriyat
- 3.3 Scrum jamoasi
- 4. Artefaktlar va majburiyatlar
- 4.1 Product Backlog
- 4.2 Sprint Goal
- 4.3 Definition of Done
- 5. Marosimlar
- 5.1 Sprint va to'rt marosim
- 5.2 Sprint Planning
- 5.3 Daily Scrum
- 5.4 Sprint Review
- 5.5 Sprint Retrospective
- 6. Story point va velocity
- 6.1 Ular Guide'da yo'q
- 6.2 Kanon backlog'ini sanaymiz
- 6.3 Velocity — prognoz, maqsad emas
- 7. Scrum'ning buzilgan shakllari
- 8. Loyiha qadami: Product Backlog qoralamasi
- 8.1 Nima rejalaymiz
- 8.2 Kursning sinov reposida shunday ko'rinadi
- 8.3 O'z backlog qoralamangiz
- 8.4 Sprint Planning — qog'ozda
- 9. Ko'p uchraydigan xatolar
- 9.1 "Agile = rejasiz"
- 9.2 Sprint o'rtasida maqsadni almashtirish
- 9.3 Story point = soat
- 9.4 DoD yo'q
- 9.5 Jamlanma raqamiga ishonish
- 10. Mashqlar
- 1-mashq (oson): bo'shliqlarni to'ldiring
- 2-mashq (o'rta): velocity bo'yicha prognoz
- 3-mashq (qiyin): bog'liqlik bilan Sprint Planning
- 11. Real ishda
- Xulosa
- Manbalar
Agile va Scrum: sprint, backlog, rollar va marosimlar
Qisqacha: Agile — 2001 yilgi manifestdagi qadriyatlar: ishlaydigan dastur, mijoz bilan hamkorlik, o'zgarishga tayyorlik. Scrum — Agile'ni amalga oshiradigan yengil freymvork: ish bir oydan oshmaydigan sprintlarda qilinadi, uchta mas'uliyat (Product Owner, Scrum Master, Developers), beshta marosim va uchta artefakt bor. Rasmiy manba — Scrum Guide (2020-yil noyabr). Unda story point ham, velocity ham yo'q — ular jamoalar qo'shgan amaliyot. Bu darsda kurs sinov reposidagi haqiqiy backlog'ni (epic va 16 story pointlik 6 ta sub-issue) o'qiymiz va
vazifalar-apiuchun o'z backlog qoralamangizni yozasiz.
Bu darsda
- Agile manifestining to'rt qadriyatini va Agile bilan Scrum farqini tushuntira olasiz.
- Scrum'ning mas'uliyatlari, marosimlari va artefaktlarini rasmiy matn bo'yicha aytib bera olasiz.
- Velocity bo'yicha prognozni hisoblaysiz va uning chegarasini tushunasiz.
- Scrum'ning buzilgan shakllarini taniysiz.
vazifalar-apiuchun Product Goal, tartiblangan backlog va Sprint Goal qoralamasini yozasiz.
Oldin bilishingiz kerak: Ingliz tilida yozish va gapirish, Jamoada muloqot: sinxron va asinxron, Issues, Projects va shablonlar, GitHub CLI (gh).
1. Nega bu kerak?
Tasavvur qiling: Toshkentdagi bir kompaniya "Bahor" choyxonasi uchun buyurtma tizimi yasamoqchi. Jamoa olti oylik reja tuzdi: avval hamma talablar yoziladi, keyin dizayn, keyin kod, oxirida test. To'rtinchi oyda egasi kelib aytadi: "Endi Click orqali to'lov kerak, bron esa Telegram bot orqali bo'lsin". Reja buzildi. Olti oyda yozilgan kodning yarmi keraksiz bo'lib chiqdi.
Bu — "sharshara" (waterfall) usulining tipik muammosi: hamma narsa oldindan rejalanadi, natija esa eng oxirida ko'rinadi. Xato kech topiladi, o'zgarish qimmatga tushadi.
Boshqa yo'l: har ikki haftada ishlaydigan kichik qism chiqarish. Birinchi ikki haftada — menyu va buyurtma. Egasi uni ko'radi va darhol aytadi: "To'lov kerak". Keyingi ikki hafta — to'lov. O'zgarish erta keladi, arzon tushadi.
Bu g'oya Agile (chaqqon) deyiladi. Scrum esa uni amalga oshirishning eng mashhur usuli.
Hayotiy o'xshatish: uzoq safar. Toshkentdan Samarqandga yo'l oldingiz. Sharshara usuli — xaritaga bir marta qarab, oxirigacha ko'zni yumib haydash. Agile — har 50 km da navigatorga qarash: yo'l yopilgan bo'lsa, burilasiz. Scrum esa aniq qoida beradi: qachon to'xtash, kim navigatorga qaraydi, qanday qaror qilinadi.
2. Agile manifesti
2.1 To'rt qadriyat
2001 yilda 17 dasturchi uchrashib, qisqa matn yozdi — Agile manifesti (agilemanifesto.org, 2026-11-04 da ochib o'qildi). Asosiy qismi to'rt qator:
Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan
O'zbekchasi:
| Ko'proq qadrlaymiz | Kamroq qadrlaymiz |
|---|---|
| odamlar va ularning muloqoti | jarayonlar va vositalar |
| ishlaydigan dastur | to'liq hujjatlar |
| mijoz bilan hamkorlik | shartnoma bo'yicha savdolashish |
| o'zgarishga javob berish | rejaga qat'iy amal qilish |
Ko'pincha unutiladigan gap esa eng muhimi. "That is, while there is value in the items on the right, we value the items on the left more." — "O'ngdagilarning ham qiymati bor, lekin chapdagilarni ko'proq qadrlaymiz."
Ya'ni Agile "hujjat yozmaymiz" degani emas. vazifalar-api da README, ARXITEKTURA.md, ADR bor — ular ishlaydigan dasturga xizmat qiladi. Faqat hujjat dasturning o'rnini bosmaydi.
2.2 O'n ikki tamoyil
Manifest ortida 12 ta tamoyil bor (agilemanifesto.org/principles.html, 2026-11-04 da ochib o'qildi). Dasturchi uchun eng amaliylari:
- "Deliver working software frequently, from a couple of weeks to a couple of months" — ishlaydigan dasturni tez-tez, bir necha haftadan bir necha oygacha bo'lgan oraliqda yetkazing.
- "Working software is the primary measure of progress." — taraqqiyotning asosiy o'lchovi — ishlaydigan dastur. "Kodning 80 % yozildi" emas.
- "Welcome changing requirements, even late in development." — talab kech o'zgarsa ham, uni qabul qiling.
- "At regular intervals, the team reflects on how to become more effective…" — jamoa muntazam ravishda o'z ishini tahlil qiladi.
- "Simplicity — the art of maximizing the amount of work not done — is essential." — soddalik: qilinmaydigan ishni ko'paytirish san'ati.
Oxirgisi qiziq: eng yaxshi kod — yozilmagan kod. Keraksiz xususiyatdan voz kechish ham ish.
2.3 Agile — falsafa, Scrum — usul
Agile — qadriyatlar to'plami. U "har kuni 15 daqiqa uchrashing" demaydi. Uni amalga oshiradigan aniq usullar ko'p: Scrum, Kanban (Kanban, vazifa trekerlari va ish oqimi darsi), Extreme Programming (XP). "Biz Agile'miz" degan kompaniyadan doim so'rang: "Aniq qanday ishlaysizlar?"
Tekshirib ko'ring: Jamoa rahbari aytdi: "Biz Agile'miz, shuning uchun hujjat yozmaymiz." Manifestga ko'ra bu to'g'rimi?
Javob
Yo'q. Manifest "ishlaydigan dastur to'liq hujjatdan ko'ra qadrliroq" deydi va darhol qo'shadi: o'ngdagilarning ham qiymati bor. Hujjat yo'qolmaydi, u o'z o'rnini egallaydi: dasturni tushunishga yordam beradigan darajada. Rahbar manifestning yarmini o'qigan.
3. Scrum: asoslar
3.1 Ta'rif
Scrum'ning yagona rasmiy manbai — Scrum Guide, oxirgi versiyasi 2020-yil noyabrdagi (scrumguides.org, 2026-11-04 da ochib o'qildi). Mualliflari — Ken Schwaber va Jeff Sutherland. Ta'rif:
"Scrum is a lightweight framework that helps people, teams and organizations generate value through adaptive solutions for complex problems."
"Scrum — odamlar, jamoalar va tashkilotlarga murakkab muammolar uchun moslashuvchan yechimlar orqali qiymat yaratishga yordam beradigan yengil freymvork." Kalit so'z — lightweight (yengil): qoidalar kam, qolganini jamoa o'zi tanlaydi.
3.2 Uch ustun va besh qadriyat
Scrum empirizmga tayanadi: bilim tajribadan keladi, qaror — ko'rilgan narsaga qarab. Guide uch ustunni nomlaydi — transparency, inspection, and adaptation:
- Shaffoflik — ish va muammolar hammaga ko'rinadi (issue'lar, doska).
- Tekshiruv — natijaga muntazam qaraladi (sprint oxirida).
- Moslashish — tekshiruvda nimadir noto'g'ri chiqsa, reja o'zgaradi.
Besh qadriyat: Commitment, Focus, Openness, Respect, and Courage — sodiqlik, diqqat, ochiqlik, hurmat va jasorat. Jasorat — masalan, "bu sprintga ulgurmaymiz" deb erta aytish (Ingliz tilida yozish va gapirish darsidagi heads-up).
3.3 Scrum jamoasi
Guide'ga ko'ra Scrum jamoasi odatda 10 yoki undan kam kishidan iborat va uchta mas'uliyat bor: the Developers, the Product Owner, and the Scrum Master.
| Mas'uliyat | Nima qiladi | vazifalar-api misolida |
|---|---|---|
| Product Owner (PO) | backlog'ni tartiblaydi, qiymat uchun javob beradi | qaysi xususiyat birinchi: takrorlanuvchi vazifalarmi, eksportmi |
| Scrum Master (SM) | Scrum to'g'ri ishlashiga yordam beradi, to'siqlarni olib tashlaydi | "review 3 kun kutyapti" muammosini hal qiladi |
| Developers | har sprintda ishlaydigan qismni yaratadi | Aziz, Nodira, Sardor — kod, test, hujjat |
E'tibor bering: Guide "rol" emas, mas'uliyat (accountability) deydi. Developers — faqat dasturchilar emas: testchi, dizayner ham shu guruhga kiradi. Scrum Master — boshliq emas. Guide aytadi: "Scrum Masters are true leaders who serve the Scrum Team and the larger organization" — jamoaga xizmat qiladigan yetakchi.
4. Artefaktlar va majburiyatlar
Scrum'da uchta artefakt (ish natijasi yoki rejasi) bor. Har biriga bitta majburiyat (commitment) bog'langan — u artefaktning maqsadini aniq qiladi.
| Artefakt | Nima | Majburiyat |
|---|---|---|
| Product Backlog | mahsulot uchun qilinadigan hamma ishning tartiblangan ro'yxati | Product Goal — uzoq muddatli maqsad |
| Sprint Backlog | shu sprint uchun tanlangan ishlar va reja | Sprint Goal — sprintning yagona maqsadi |
| Increment | sprint oxiridagi ishlaydigan, foydalansa bo'ladigan natija | Definition of Done |
4.1 Product Backlog
Backlog (navbatdagi ishlar ro'yxati) — tartiblangan. Eng yuqoridagisi — eng qimmatli va eng aniq. Pastdagilari xira bo'lishi mumkin. Ularni aniqlashtirish — refinement: Guide'ga ko'ra, "the act of breaking down and further defining Product Backlog items into smaller more precise items" — elementlarni kichikroq va aniqroq qismlarga bo'lish. Vazifani qismlarga bo'lishni Estimatsiya va vazifani kichik qismlarga bo'lish darsida batafsil o'rganamiz.
4.2 Sprint Goal
Guide: "The Sprint Goal is the single objective for the Sprint." — sprintning yagona maqsadi. "6 ta issue'ni yopish" — maqsad emas, ro'yxat. Maqsad: "Foydalanuvchi vazifani haftalik takrorlanadigan qila oladi". Issue'lar maqsadga xizmat qiladi. Biri chiqmay qolsa, jamoa maqsadni saqlab, rejani o'zgartiradi.
4.3 Definition of Done
Definition of Done (DoD) — "tayyor" so'zining aniq ta'rifi. Guide: "a formal description of the state of the Increment when it meets the quality measures required for the product" — increment mahsulot sifat talablariga javob berganidagi holatning rasmiy tavsifi.
DoD bo'lmasa, "tayyor" har kimda boshqacha: biri uchun "kod yozildi", boshqasi uchun "testdan o'tdi va hujjatlandi". Kanon epic issue'sidagi DoD (sinov reposidagi issue #1 dan aynan):
**Tayyor (DoD):** hamma sub-issue yopilgan; qabul mezonlari testda
o'tadi; API.md va CHANGELOG yangilangan; `npm run check` yashil.Uchala shart ham tekshiriladi: test, hujjat, buyruq natijasi. "Men tayyor deb o'ylayman" — DoD emas.
Diqqat: Kanon label'laridan birining tavsifida DoR (Definition of Ready — "boshlashga tayyor" ta'rifi) yozilgan:
holat: tayyor— "Backlog: boshlashga tayyor (DoR)". Scrum Guide 2020 da DoR yo'q — faqat Definition of Done bor. Guide faqat "Sprint Planning'da tanlashga tayyor" elementlar haqida gapiradi, ta'rif bermaydi. DoR — ko'p jamoalar qo'shadigan amaliyot. U foydali, lekin "Scrum talab qiladi" deb aytmang.
5. Marosimlar
5.1 Sprint va to'rt marosim
Scrum'da beshta marosim (event) bor. Birinchisi — sprintning o'zi, qolgan to'rttasi uning ichida. Guide bo'yicha vaqt chegaralari (bir oylik sprint uchun; qisqaroq sprintda odatda kamroq):
| Marosim | Vaqt chegarasi | Savol |
|---|---|---|
| Sprint | bir oy yoki kamroq | — |
| Sprint Planning | ko'pi bilan 8 soat | nima va qanday qilamiz? |
| Daily Scrum | 15 daqiqa | maqsadga qanday yaqinlashyapmiz? |
| Sprint Review | ko'pi bilan 4 soat | nima qildik, keyin nima? |
| Sprint Retrospective | ko'pi bilan 3 soat | qanday ishlashni yaxshilaymiz? |
flowchart LR
PB["Product Backlog"] --> SP["Sprint Planning"]
SP --> SB["Sprint Backlog"]
SB --> D["Daily Scrum<br/>har kuni"]
D --> I["Increment"]
I --> R["Sprint Review"]
R --> RT["Retrospective"]
RT --> PBDiagrammaga qarang: bu — aylana. Review natijasi backlog'ni o'zgartiradi, retro esa jamoaning ishlash usulini. Keyin yangi sprint.
5.2 Sprint Planning
Uch savol: nega bu sprint qimmatli (Sprint Goal), backlog'dan nima olinadi va qanday bajariladi. PO maqsadni taklif qiladi, Developers qancha ish sig'ishini aytadi. Natija — Sprint Backlog.
5.3 Daily Scrum
15 daqiqalik kundalik uchrashuv — standup. Uni, uch savolli qolipni va asinxron shaklini Jamoada muloqot darsida o'rgangansiz. Bu yerda Scrum'ga xos bitta gap: "The Developers can select whatever structure and techniques they want" — tuzilmani Developers o'zi tanlaydi, asosiysi — Sprint Goal'ga qanday yaqinlashish. Standup — boshliqqa hisobot emas, jamoaning o'zaro rejalashuvi.
5.4 Sprint Review
Jamoa natijani manfaatdor tomonlarga ko'rsatadi va birga keyingi qadamni muhokama qiladi. Guide: "The Sprint Review is a working session" — bu ishchi uchrashuv, taqdimot emas. Va muhim gap: "The Sprint Review should never be considered a gate to releasing value." Ya'ni reliz review'ni kutmaydi — vazifalar-api GitHub flow'da har merge'dan keyin chiqishi mumkin (Jamoa workflow'lari).
5.5 Sprint Retrospective
Guide: "The purpose of the Sprint Retrospective is to plan ways to increase quality and effectiveness." — maqsad: sifat va samaradorlikni oshirish yo'llarini rejalash. Oddiy shakli — uch savol: nima yaxshi o'tdi, nima yomon, keyingi sprintda bitta nimani o'zgartiramiz.
vazifalar-api kanonidan haqiqiy retro mavzusi bo'lardi: "Yangi branch'ning birinchi push'i GitHub'da ikki marta Internal Server Error oldi. Harakat: skriptga 3 urinish qo'shamiz." Kanon aynan shunday qildi. Retro'dan chiqqan harakat aniq va tekshiriladigan bo'lsin.
Tekshirib ko'ring: Ikki haftalik sprintning uchinchi kunida mijoz butunlay boshqa xususiyat so'radi. Sprintni kim bekor qila oladi?
Javob
Guide'ga ko'ra — faqat Product Owner: "Only the Product Owner has the authority to cancel the Sprint." Bekor qilish odatda Sprint Goal eskirib qolganda bo'ladi. Ko'p hollarda esa yangi talab backlog'ga yoziladi va keyingi Sprint Planning'da tartiblanadi — joriy sprint maqsadi buzilmaydi.
6. Story point va velocity
6.1 Ular Guide'da yo'q
Story point (SP) — ishning nisbiy hajmi: murakkablik, hajm va noaniqlik birga. Soat emas. Ko'pincha Fibonachchi qatori bilan: 1, 2, 3, 5, 8. Velocity (tezlik) — jamoa bir sprintda yopgan story pointlar yig'indisi.
Scrum Guide 2020 matnida story point ham, velocity ham uchramaydi. Guide prognoz uchun burn-down, burn-up kabi usullarni tilga oladi, lekin hech birini majburiy qilmaydi. SP va velocity — jamoalar Scrum'ga qo'shgan eng mashhur amaliyot. Ularni qanday baholashni Estimatsiya va vazifani kichik qismlarga bo'lish darsida o'rganamiz.
6.2 Kanon backlog'ini sanaymiz
vazifalar-api ning "takrorlanuvchi vazifalar" epic'i oltita sub-issue'ga bo'lingan. Ularning SP baholari — kanon talab hujjatidan:
- #2 migratsiya2 SP
- #3 keyingiMuddat()3 SP
- #4 API: PATCH3 SP
- #5 keyingi nusxaeng xavfli5 SP
- #6 o'chirish/tiklash2 SP
- #7 hujjat1 SP
Manba: IlmHamroh kanon tajribasi, 2026-11-04: vazifalar-api talab hujjati, sinov reposidagi issue #2–#7 label'lari (sp: N)
Grafikka qarang: eng katta qism — #5 (5 SP). Kanon uni "eng xavfli" deb belgilagan: ikki marta bosilganda bitta nusxa yaratilishi kerak — konkurentlik. Jami SP ni JavaScript bilan hisoblaymiz (reduce):
const backlog = [
{ issue: 2, nom: "migratsiya", sp: 2 },
{ issue: 3, nom: "keyingiMuddat()", sp: 3 },
{ issue: 4, nom: "API: PATCH takror", sp: 3 },
{ issue: 5, nom: "keyingi nusxa", sp: 5 },
{ issue: 6, nom: "o'chirish/tiklash", sp: 2 },
{ issue: 7, nom: "hujjat", sp: 1 },
];
const jami = backlog.reduce((s, b) => s + b.sp, 0);
const eng = backlog.reduce((a, b) => (b.sp > a.sp ? b : a));
console.log("jami SP:", jami);
console.log("eng katta:", `#${eng.issue} ${eng.nom} (${eng.sp})`);Konsolda:
jami SP: 16
eng katta: #5 keyingi nusxa (5)16 SP — kanon talab hujjatidagi yig'indi bilan bir xil. Agar jamoa odatda sprintda ~9 SP yopsa, epic taxminan ikki sprint oladi. Buni 2-mashqda hisoblaysiz.
6.3 Velocity — prognoz, maqsad emas
Velocity faqat shu jamoa uchun ma'noli. Bir jamoaning 30 SP si boshqa jamoaning 10 SP sidan "yaxshi" emas — ular boshqa o'lchov birligida o'lchaydi. Rahbar velocity'ni KPI qilib, "keyingi sprintda 20 % ko'proq" desa, nima bo'ladi? Jamoa baholarni shishiradi: 3 SP lik ish 5 bo'ladi. Velocity o'sadi, ish esa o'sha-o'sha. Raqam ma'nosini yo'qotadi.
7. Scrum'ning buzilgan shakllari
Guide qat'iy gapiradi: "The Scrum framework, as outlined herein, is immutable." va "Scrum exists only in its entirety" — Scrum faqat to'liq holida mavjud. Qismini olib, qolganini tashlasangiz, natijani "Scrum" deb atash noto'g'ri. Amalda eng ko'p uchraydigan buzilishlar:
| Belgisi | Nega yomon |
|---|---|
| Daily — boshliqqa hisobot | jamoa bir-biri bilan emas, boshliq bilan gaplashadi; muammo yashiriladi |
| Sprint — mini-sharshara | 1-hafta kod, 2-hafta test; oxirida "test ulgurmadi" |
| PO yo'q yoki band | backlog tartiblanmaydi, Developers o'zi taxmin qiladi |
| Retro'dan harakat chiqmaydi | har sprint bir xil shikoyat, hech narsa o'zgarmaydi |
| Velocity — KPI | baholar shishiriladi, prognoz buziladi |
| "Tayyor"ning ta'rifi yo'q | sprint oxirida "90 % tayyor" ishlar to'planadi |
Bunday holatni ba'zan "Scrum-but" deyishadi: "Biz Scrum qilamiz, lekin retro o'tkazmaymiz". Intervyuda "jamoangizda Scrum qanday ishlaydi?" degan savolga shu jadvaldagi belgilarni bilib javob bersangiz, tajribangiz ko'rinadi.
Tekshirib ko'ring: Jamoada daily har kuni 45 daqiqa davom etadi, har kim boshliqqa navbat bilan hisobot beradi. Guide'ning qaysi ikki qoidasi buzilgan?
Javob
Birinchisi — vaqt chegarasi: Daily Scrum 15 daqiqalik marosim. Ikkinchisi — maqsadi: Daily Developers uchun, Sprint Goal'ga qanday yaqinlashishni rejalash uchun. Boshliqqa hisobot — boshqa uchrashuv. Yechim: Daily'ni qisqartirish, batafsil muammolarni undan keyin kerakli odamlar bilan alohida muhokama qilish.
8. Loyiha qadami: Product Backlog qoralamasi
8.1 Nima rejalaymiz
vazifalar-api uchun keyingi katta xususiyat — takrorlanuvchi vazifalar ("har dushanba hisobot", "har oy elektr to'lovi"). Uni Scrum'cha rejalaymiz:
- epic (bir nechta issue'dan iborat katta ish) — bitta yozuv, DoD bilan;
- epic qismlari — har biriga SP bahosi va bog'liqlik;
- tartib — PO belgilaydi: eng qimmatli va eng aniq — tepada.
Bu darsda GitHub'da hech narsa yaratmaymiz. Avval rejani qog'ozda (Markdown faylda) yozamiz. Label'larni Kanban, vazifa trekerlari va ish oqimi darsida, epic va sub-issue'larni esa Estimatsiya va vazifani kichik qismlarga bo'lish darsida GitHub'da yaratasiz. Shunda har amal o'z mavzusi yonida turadi.
8.2 Kursning sinov reposida shunday ko'rinadi
Oldin natijaga qaraylik. Kanon backlog'ni kurs sinov reposida GitHub issue'lari sifatida qurdi (github.com/Sarvarbek0704/ilmhamroh-git-sinov/issues/1): epic #1 va uning oltita sub-issue'si #2–#7. Epic'ning sub-issue ro'yxati (kanon chiqishi, gh api orqali):
#2 feat: migratsiya: vazifalar.takror jsonb + CHECK (expand) [tur: xususiyat, holat: tayyor, sp: 2]
#3 feat: domen: keyingiMuddat() — toza funksiya va chekka holat testlari [tur: xususiyat, holat: tayyor, sp: 3]
#4 feat: API: PATCH takror (Zod) va javobda keyingiMuddat; OpenAPI surati [tur: xususiyat, holat: tayyor, sp: 3]
#5 feat: bajarilganda keyingi nusxa — tranzaksiyada, idempotent [tur: xususiyat, holat: tayyor, sp: 5]
#6 feat: o'chirish/tiklash qoidasi va hodisalar [tur: xususiyat, holat: tayyor, sp: 2]
#7 feat: hujjat: API.md va CHANGELOG [tur: xususiyat, holat: tayyor, sp: 1]
{"completed":0,"percent_completed":0,"total":5}Scrum ko'zi bilan o'qiymiz:
- Ro'yxat — Product Backlog'ning bir qismi: tartiblangan, har element kichik va aniq.
sp: Nlabel'lari — story point bahosi; jami 16 SP.holat: tayyor— "boshlashga tayyor" belgisi; yuqoridagi DoR ogohlantirishini eslang.- Epic tavsifida — «Definition of Done» bo'limidagi DoD.
Oxirgi qatorga e'tibor bering: ro'yxatda 6 ta sub-issue, jamlanmada esa "total":5. Kanon jamlanmani 15 soatcha keyin qayta so'radi — "total":6. GitHub jamlanmani fonda, biroz kechikib hisoblaydi (eventual consistency — "oxir-oqibat mos keladigan" holat). Saboq: yangi yaratilgan narsa haqidagi jamlanma raqamiga darhol ishonmang — ro'yxatning o'zini tekshiring.
8.3 O'z backlog qoralamangiz
Endi o'zingiz yozasiz. Repo'ngiz ichida emas, alohida joyda (masalan ~/rejalar/backlog.md) fayl oching — u keyingi ikki darsda issue matniga aylanadi. Namuna — kanon epic va sub-issue'lari asosida:
# Product Goal
vazifalar-api foydalanuvchisi takroriy ishlarni qo'lda yozmaydi.
## Epic: takrorlanuvchi vazifalar
Hikoya: vazifa egasi sifatida men vazifani "har hafta" deb
belgilamoqchiman, toki uni qayta-qayta yozmay.
DoD: hamma sub-issue yopilgan; qabul mezonlari testda o'tadi;
API.md va CHANGELOG yangilangan; npm run check yashil.
## Backlog (tartib — PO)
| # | Qism | SP | Bog'liq |
|---|---|---|---|
| 1 | migratsiya: takror jsonb + CHECK | 2 | — |
| 2 | domen: keyingiMuddat() + testlar | 3 | — |
| 3 | API: PATCH takror, keyingiMuddat | 3 | 1, 2 |
| 4 | bajarilganda keyingi nusxa | 5 | 1, 2 |
| 5 | o'chirish/tiklash qoidasi | 2 | 4 |
| 6 | hujjat: API.md, CHANGELOG | 1 | 3–5 |
## 1-sprint
Sprint Goal: foydalanuvchi API orqali vazifani takrorlanadigan
qila oladi va keyingi muddatni ko'radi.
Tanlandi: 1, 2, 3 (8 SP).Faylda uchta Scrum artefaktining izi bor: Product Goal (backlog majburiyati), tartiblangan backlog va Sprint Goal. SP baholari hozircha kanondan olingan — ularni qanday topishni Estimatsiya darsida o'rganasiz.
Bu darsda repodagi fayllar o'zgarmaydi. Epic tavsifi havola qiladigan talab hujjatini Mahsulot tafakkuri darsida yozamiz va commit o'sha yerda bo'ladi — hozir commit qilmang.
8.4 Sprint Planning — qog'ozda
Birinchi Sprint Planning qanday o'tardi? Faraz qilaylik, jamoa sprintda ~9 SP yopadi.
- Sprint Goal: "Foydalanuvchi API orqali vazifani takrorlanadigan qila oladi va keyingi muddatni ko'radi."
- Tanlanadi: migratsiya (2),
keyingiMuddat()(3), API (3) — jami 8 SP. Kanon issue raqamlarida — #2, #3, #4. Ular maqsadga to'g'ri xizmat qiladi. - Keyingi sprintga: "keyingi nusxa" (5 SP, eng xavfli), o'chirish/tiklash, hujjat.
Nega "keyingi nusxa" birinchi sprintga kirmadi? U 9 SP ga sig'mas edi, va u migratsiya hamda keyingiMuddat() ga bog'liq. Bog'liqlik va sig'imni hisobga oladigan rejalashni 3-mashqda kod bilan yozasiz.
9. Ko'p uchraydigan xatolar
9.1 "Agile = rejasiz"
Agile rejadan voz kechmaydi — rejani qisqa oraliqda qayta ko'radi. Sprint Planning — reja. Sprint Goal — majburiyat.
9.2 Sprint o'rtasida maqsadni almashtirish
Har kuni yangi "shoshilinch" ish qo'shilsa — sprint ma'nosini yo'qotadi. Yangi ish backlog'ga tushadi, tartibni PO belgilaydi.
9.3 Story point = soat
"3 SP = 3 soat" deb hisoblash SP g'oyasini buzadi. SP — nisbiy: "bu ish anavi 2 SP likdan taxminan ikki barobar murakkab".
9.4 DoD yo'q
Sprint oxirida "deyarli tayyor" ishlar. Davosi — yozma DoD, kanon epic'idagidek: test, hujjat, npm run check.
9.5 Jamlanma raqamiga ishonish
sub_issues_summary kechikadi — «Kursning sinov reposida shunday ko'rinadi» bo'limida ko'rdik. Avtomatlashtirishda ro'yxatni o'zi sanang.
10. Mashqlar
Mashqlar kurs/mashqlar/32/15-scrum/ da. 2- va 3-mashq yechimlari Node 24.21.0 da tekshirilgan (biz ishga tushirdik).
1-mashq (oson): bo'shliqlarni to'ldiring
- Scrum Guide'ga ko'ra sprint uzunligi — bir yoki kamroq
- Daily Scrum davomiyligi (daqiqa) —
- Sprintni bekor qila oladigan yagona mas'uliyat — Product
- Increment'ning majburiyati — Definition of
- Scrum Guide 2020 da uchramaydigan, lekin jamoalar ko'p ishlatadigan tezlik o'lchovi —
Yechim
- oy — "one month or less".
- 15 — "a 15-minute event".
- Owner — "Only the Product Owner has the authority to cancel the Sprint."
- Done — Product Backlog → Product Goal, Sprint Backlog → Sprint Goal, Increment → DoD.
- velocity — story point bilan birga Guide matnida yo'q.
2-mashq (o'rta): velocity bo'yicha prognoz
prognoz(bajarilgan, qolganSP) funksiyasini yozing. bajarilgan — oxirgi sprintlarda yopilgan SP lar massivi. Funksiya qaytarsin: ortacha (bir xona aniqlikda), taxmin — o'rtacha tezlik bilan nechta sprint kerak, optimistik — eng tez sprint bilan, pessimistik — eng sekin bilan. Sprint soni butun: Math.ceil. Ishora: yig'indi — reduce; eng katta va kichik — Math.max(...massiv) (spread); bir xona — Number(x.toFixed(1)).
Yechim
function prognoz(bajarilgan, qolganSP) {
const ortacha =
bajarilgan.reduce((s, v) => s + v, 0) / bajarilgan.length;
const sprint = (v) => Math.ceil(qolganSP / v);
return {
ortacha: Number(ortacha.toFixed(1)),
taxmin: sprint(ortacha),
optimistik: sprint(Math.max(...bajarilgan)),
pessimistik: sprint(Math.min(...bajarilgan)),
};
}
console.log(prognoz([8, 11, 9], 16));
console.log(prognoz([8, 11, 9], 40));
console.log(prognoz([20, 4, 12], 40));Konsolda:
{ ortacha: 9.3, taxmin: 2, optimistik: 2, pessimistik: 2 }
{ ortacha: 9.3, taxmin: 5, optimistik: 4, pessimistik: 5 }
{ ortacha: 12, taxmin: 4, optimistik: 2, pessimistik: 10 }Sprint ma'lumotlari o'quv uchun o'ylab topilgan, 16 SP esa kanon epic'idan. Birinchi qator: epic uchun uchala prognoz ham 2 sprint — ishonch yuqori. Ikkinchisi: kattaroq ishda oraliq paydo bo'ldi — 4 dan 5 gacha. Uchinchisi eng muhim: o'rtacha tezlik kattaroq (12), lekin tezlik beqaror (4 dan 20 gacha), oraliq 2 dan 10 sprintgacha. O'rtachaning o'zi aldaydi. Mijozga bitta raqam emas, oraliq ayting: "4–5 sprint".
3-mashq (qiyin): bog'liqlik bilan Sprint Planning
sprintlargaBol(backlog, sigim) funksiyasini yozing. backlog — tartiblangan ro'yxat: { issue, sp, bogliq }, bogliq — oldin tayyor bo'lishi kerak bo'lgan issue raqamlari. Har sprint uchun backlog'ni boshidan o'qing va elementni oling, agar: (1) uning hamma bog'liqliklari oldingi sprintlarda yoki shu sprintda allaqachon olingan bo'lsa va (2) sprintdagi SP yig'indisi sigim dan oshmasa. Sprintga hech narsa sig'masa — { xato: "sig'maydi", qolgan: [issue raqamlari] }. Natija — "#2 #3 = 5 SP" ko'rinishidagi satrlar massivi. Ma'lumot — kanon talab hujjatidagi qismlar jadvali. Ishora: tayyorlarni Set da saqlang; every va some — massiv metodlari (HOF metodlari).
Yechim
function sprintlargaBol(backlog, sigim) {
const tayyor = new Set();
const qolgan = [...backlog];
const sprintlar = [];
while (qolgan.length > 0) {
const sprint = [];
let sp = 0;
for (const b of [...qolgan]) {
const ochiq = b.bogliq.every((d) => tayyor.has(d) ||
sprint.some((s) => s.issue === d));
if (ochiq && sp + b.sp <= sigim) {
sprint.push(b);
sp += b.sp;
qolgan.splice(qolgan.indexOf(b), 1);
}
}
if (sprint.length === 0) {
return {
xato: "sig'maydi",
qolgan: qolgan.map((b) => b.issue),
};
}
sprint.forEach((s) => tayyor.add(s.issue));
sprintlar.push(`${sprint.map((s) => "#" + s.issue).join(" ")}`
+ ` = ${sp} SP`);
}
return sprintlar;
}
const backlog = [
{ issue: 2, sp: 2, bogliq: [] },
{ issue: 3, sp: 3, bogliq: [] },
{ issue: 4, sp: 3, bogliq: [2, 3] },
{ issue: 5, sp: 5, bogliq: [2, 3] },
{ issue: 6, sp: 2, bogliq: [5] },
{ issue: 7, sp: 1, bogliq: [4, 5, 6] },
];
console.log(sprintlargaBol(backlog, 9));
console.log(sprintlargaBol(backlog, 6));
console.log(sprintlargaBol(backlog, 4));Konsolda:
[ '#2 #3 #4 = 8 SP', '#5 #6 #7 = 8 SP' ]
[ '#2 #3 = 5 SP', '#4 = 3 SP', '#5 = 5 SP', '#6 #7 = 3 SP' ]
{ xato: "sig'maydi", qolgan: [ 5, 6, 7 ] }Sig'im 9 bo'lsa — «Sprint Planning — qog'ozda» bo'limidagi rejaning o'zi: ikki sprint, har biri 8 SP. Sig'im 6 bo'lsa — to'rt sprint: #4 birinchi sprintga sig'madi (5 + 3 > 6), keyin #5 o'zi bir sprintni egalladi. Sig'im 4 da esa #5 (5 SP) hech qachon sig'maydi — funksiya buni aniq aytadi. Real jamoa bu holatda nima qiladi? #5 ni kichik qismlarga bo'ladi (Estimatsiya va vazifani kichik qismlarga bo'lish). Bu funksiya ochko'z (greedy) algoritm: tartib bo'yicha oladi va eng zich rejani qidirmaydi. Bu ataylab — backlog tartibini PO belgilagan, uni buzmaymiz.
11. Real ishda
- Qayerda uchraydi: Scrum — O'zbekiston va dunyodagi IT kompaniyalarda eng ko'p tilga olinadigan usul. Vakansiyalarda "Agile/Scrum tajribasi" ko'p yoziladi. Ko'p jamoalar esa gibrid ishlaydi: Scrum marosimlari + Kanban doskasi.
- Vositalar: Jira (sprint, backlog, velocity hisobotlari), Linear (cycles), GitHub Projects (iteration maydoni). Keyingi darsda ularni solishtiramiz.
- Sertifikatlar: Scrum.org (PSM), Scrum Alliance (CSM) — Scrum Master va PO uchun. Dasturchiga majburiy emas. Undan foydaliroq ish — Guide'ni bir marta to'liq o'qish: u qisqa va bepul.
- Intervyu savollari: "Scrum'da qanday rollar bor?", "Sprint Review va Retrospective farqi?", "Velocity nima va uni qanday ishlatmaslik kerak?", "Sprint o'rtasida talab o'zgarsa nima qilasiz?"
Xulosa
- Agile — qadriyatlar (2001 manifesti): ishlaydigan dastur, hamkorlik, o'zgarishga javob; o'ngdagilar ham qiymatli.
- Scrum — Agile'ning yengil freymvorki: sprint ≤ 1 oy; PO, Scrum Master, Developers; jamoa odatda ≤ 10 kishi.
- Marosimlar: Sprint Planning, Daily Scrum (15 daqiqa), Sprint Review, Retrospective; artefaktlar — Product Backlog, Sprint Backlog, Increment va ularning majburiyatlari.
- Story point va velocity Scrum Guide'da yo'q — ular prognoz vositasi, KPI emas; prognozni oraliq bilan ayting.
- Backlog avval qog'ozda: Product Goal, tartib, SP, Sprint Goal; kanon backlog'i — epic #1 va 6 sub-issue, jami 16 SP;
sub_issues_summarykechikadi — ro'yxatni o'zi tekshiring.
Keyingi dars: Kanban, vazifa trekerlari va ish oqimi — backlog uchun label'larni GitHub'da yaratamiz, holat: label'larini doska ustunlariga aylantiramiz, WIP limit qo'yamiz, cycle time'ni o'lchaymiz va yaxshi ticket yozamiz.
Manbalar
- The Scrum Guide (2020-yil noyabr), Ken Schwaber va Jeff Sutherland: https://scrumguides.org/scrum-guide.html (2026-11-04 da ochib o'qildi)
- Manifesto for Agile Software Development (2001): https://agilemanifesto.org/ (2026-11-04 da ochib o'qildi)
- Principles behind the Agile Manifesto: https://agilemanifesto.org/principles.html (2026-11-04 da ochib o'qildi)
- GitHub Docs — Adding sub-issues: https://docs.github.com/en/issues/tracking-your-work-with-issues/using-issues/adding-sub-issues (2026-11-04 da ochib o'qildi: bitta ota issue'ga 100 tagacha sub-issue, 8 darajagacha ichma-ich)
- Kanon tajribasi (IlmHamroh, 2026-11-04): gh 2.92.0; sinov reposidagi epic #1 va sub-issue'lar #2–#7,
sub_issues_summary5 → 6. 2- va 3-mashq yechimlari — biz tekshirdik (2026-11-04).
Izohlar (0)
Izoh yozish uchun kiring.
- Hozircha izoh yo'q. Birinchi bo'ling!