5-bo‘lim
Rejalashtirish va baholash
Vaqtni baholash usullari, xavflarni boshqarish, uchburchak cheklovlari va nima uchun bahoyingiz doim noto'g'ri chiqadi.
Ushbu bo‘lim mundarijasi
"Bu ish qancha vaqt oladi?" - dasturchi eng ko'p eshitadigan va eng qiyin savol.
Nima uchun baholash qiyin? #
Psixologiyada bu hodisa planning fallacy deb ataladi: odamlar o'z vazifalarini bajarish vaqtini muntazam ravishda kam baholaydi, hatto o'tmishda ham xuddi shunday xato qilganini bilsa ham.
Tadqiqotlarga ko'ra, dasturchilar baholari o'rtacha 1.5-2 barobar past chiqadi.
Sabablari:
| Sabab | Izoh |
|---|---|
| Optimizm | "Hammasi silliq ketadi" deb faraz qilinadi |
| Ko'rinmas ishlar | Test, tekshiruv, hujjat, deploy hisobga olinmaydi |
| Uzilishlar | Yig'ilishlar, savollar, boshqa loyihalar |
| Noaniqlik | Talab to'liq tushunilmagan |
| Bosim | "Bir haftada bo'ladimi?" degan savolga "ha" deyish |
| Tajriba yo'qligi | Yangi texnologiya, notanish kod |
Uchburchak cheklovlari #
Mijoz: "Muddatni ikki hafta qisqartiring."
Noto'g'ri javob: "Yaxshi, harakat qilamiz."
To'g'ri javob:
"Buning uchta yo'li bor:
1. Doirani qisqartiramiz - sharhlar modulini keyingi relizga qoldiramiz
2. Jamoaga yana ikki dasturchi qo'shamiz (lekin ular 2 hafta o'rganadi)
3. Sifatni kamaytiramiz - testlarni tashlaymiz (tavsiya etmayman)
Qaysi birini tanlaymiz?"
"Yo'q, bo'lmaydi" deyish - qarama-qarshilik.
"Mana variantlar, tanlang" - hamkorlik. Mijoz odatda o'zi doirani qisqartirishni tanlaydi.
Bruks qonuni: "Kechikkan loyihaga yangi odam qo'shish uni yanada kechiktiradi."
Sabablari:
- Yangi odamni o'rgatish vaqt oladi - mavjudlardan vaqt olinadi
- Muloqot yo'llari soni keskin oshadi
- Ba'zi ishlarni bo'lib bo'lmaydi
Muloqot yo'llari: n(n-1)/2
- 3 kishi → 3 ta yo'l
- 6 kishi → 15 ta yo'l
- 10 kishi → 45 ta yo'l
"To'qqiz ayol bir oyda bir bola tug'a olmaydi."
Baholash usullari #
1. Uch nuqtali baholash (PERT) #
O - optimistik (hammasi silliq ketsa)
M - eng ehtimolli
P - pessimistik (muammolar chiqsa)
Baho = (O + 4M + P) / 6
Og'ish = (P - O) / 6
def pert_baho(optimistik, ehtimolli, pessimistik):
baho = (optimistik + 4 * ehtimolli + pessimistik) / 6
ogish = (pessimistik - optimistik) / 6
return {
"baho": round(baho, 1),
"ogish": round(ogish, 1),
"ishonch_oraligi": (round(baho - 2 * ogish, 1), round(baho + 2 * ogish, 1)),
}
vazifalar = {
"Savat interfeysi": (2, 3, 6),
"To'lov integratsiya": (3, 5, 12),
"Hisobot moduli": (4, 6, 10),
}
jami_baho = 0
for nom, (o, m, p) in vazifalar.items():
natija = pert_baho(o, m, p)
jami_baho += natija["baho"]
print(f"{nom:22s} {natija['baho']:5.1f} kun "
f"(oralik: {natija['ishonch_oraligi'][0]}-{natija['ishonch_oraligi'][1]})")
print(f"\nJami: {jami_baho:.1f} kun")
Savat interfeysi 3.3 kun (oralik: 1.9-4.7)
To'lov integratsiya 5.8 kun (oralik: 2.8-8.8)
Hisobot moduli 6.3 kun (oralik: 4.3-8.3)
Jami: 15.4 kun
"Eng yomon holatda qancha vaqt ketadi?" degan savol xavflarni oshkor qiladi.
Yuqoridagi misolda to'lov integratsiyasining oralig'i eng keng (2.8-8.8) - demak u eng noaniq va eng xavfli qism.
2. O'xshashlik bo'yicha baholash #
"O'tgan safar shunga o'xshash modulni 6 kunda qildik.
Bu biroz murakkabroq - 8 kun deb hisoblaymiz."
Bu eng tez va ko'pincha eng aniq usul - agar tarix yozib borilsa.
Vazifa Baho Haqiqiy Nisbat
CSV eksport 3 5 1.7
Email xabarnoma 2 3 1.5
To'lov integratsiyasi 5 12 2.4
Qidiruv filtri 4 5 1.3
O'rtacha: 1.7
Endi yangi bahoni 1.7 ga ko'paytiring. Bu shaxsiy "tuzatish koeffitsiyentingiz".
Uch oydan keyin bahoyingiz sezilarli aniqroq bo'ladi.
3. Dekompozitsiya #
"Buyurtma moduli" - 3 hafta? (noaniq)
Bo'lamiz:
Savat jadvali va model 4 soat
Savatga qo'shish/o'chirish 6 soat
Savat interfeysi 8 soat
Buyurtma yaratish mantiqi 8 soat
To'lov provayderi integratsiyasi 16 soat
Buyurtma holati va tarixi 6 soat
Email xabarnomalar 4 soat
Admin panelida ko'rish 8 soat
Testlar 12 soat
Hujjat 4 soat
-------
76 soat ≈ 10 ish kuni
Agar vazifa 8 soatdan katta bo'lsa - siz uni yetarli tushunmagansiz.
Uni yanada bo'ling. Bo'lish jarayonining o'zi noma'lum joylarni oshkor qiladi.
4. Vaqt qutisi #
Teskari yondashuv:
Oddiy: "Bu ish qancha vaqt oladi?" → noaniq javob
Vaqt qutisi: "Bizda 5 kun bor. Shu vaqtda nima qila olamiz?"
Bu usul tadqiqot va noaniq ishlar uchun ideal:
Vazifa: yangi qidiruv kutubxonasini o'rganish
Vaqt qutisi: 2 kun
2 kundan keyin qaror:
- Mos keladi → integratsiyani rejalashtiramiz
- Mos kelmaydi → boshqa yechim qidiramiz
- Noaniq → yana 2 kun yoki voz kechamiz
Bufer qo'shish #
"Ish uning uchun ajratilgan vaqtni to'ldirish uchun kengayadi."
3 kunlik ishga 5 kun bersangiz - u 5 kun oladi. Shuning uchun har bir vazifaga alohida bufer qo'shish ishlamaydi.
| Loyiha turi | Tavsiya etilgan bufer |
|---|---|
| Tanish texnologiya, aniq talab | 15-20% |
| Odatiy loyiha | 25-30% |
| Yangi texnologiya | 40-50% |
| Tadqiqot xarakteridagi ish | 100%+ yoki vaqt qutisi |
Xavflarni boshqarish #
Xavf reyestri
ID Tavsif Ehtimol Ta'sir Ball Chora
R1 To'lov API hujjati noto'g'ri O'rta Yuqori 6 Erta prototip qilish
R2 Asosiy dasturchi ta'tilga chiqadi Yuqori O'rta 6 Bilimni hujjatlashtirish
R3 Talablar keskin o'zgaradi O'rta Yuqori 6 Qisqa iteratsiyalar
R4 Server yuklamaga chidamaydi Past Yuqori 3 Erta yuk testi
R5 Dizayn kech tayyor bo'ladi Yuqori Past 3 Vaqtinchalik shablon
| Strategiya | Misol |
|---|---|
| Qochish | Xavfli texnologiya o'rniga tanishini tanlash |
| Kamaytirish | Erta prototip, qo'shimcha test |
| O'tkazish | Sug'urta, sub-pudratchi, bulut xizmati |
| Qabul qilish | "Bo'lsa, shunda hal qilamiz" (past xavflar uchun) |
Gantt diagrammasi #
Loyihaning eng uzun bog'liq vazifalar zanjiri.
Undagi har bir kun kechikish - butun loyiha uchun bir kun kechikish. Undan tashqaridagi vazifalarda esa bo'sh vaqt (slack) bor.
Resurslarni birinchi navbatda kritik yo'lga yo'naltiring.
Progressni kuzatish #
Reja: 100 ball, 5 sprint, sprintiga 20 ball
Holat: 3-sprint tugadi
Sprint 1: 18 ball (jami 18)
Sprint 2: 22 ball (jami 40)
Sprint 3: 19 ball (jami 59)
O'rtacha tezlik: 19.7
Qolgan: 41 ball
Kerakli sprint: 41 / 19.7 = 2.1 → 3 sprint
Bashorat: rejadagi 5 emas, 6 sprint kerak bo'ladi
Kechikish aniq bo'lganda darhol xabar bering.
"Oxirgi kunda aytish" - eng yomon variant. Erta aytilsa, chora ko'rish imkoni bo'ladi: doirani qisqartirish, resurs qo'shish, muddatni ko'chirish.
Kechikish odatda bir kunda emas, sekin-asta to'planadi.
Amaliy maslahatlar #
- Diapazon bering, bitta raqam emas: "5-8 kun"
- Farazlarni yozing: "agar API hujjati to'g'ri bo'lsa"
- Ishonch darajasini ayting: "80% ishonch bilan 8 kun"
- Vazifani bo'ling - katta baho har doim noto'g'ri
- Bahoni majburiyat bilan aralashtirmang
- Bosim ostida bahoni o'zgartirmang - doirani o'zgartiring
- Baholar tarixini yozib boring
YOMON:
"Bu 3 kun oladi."
YAXSHI:
"Agar to'lov API si hujjatga mos ishlasa - 3 kun.
Muammo chiqsa - 6 kungacha cho'zilishi mumkin.
Aniqroq aytish uchun bir kun tadqiqot kerak."
Baho - texnik mutaxassisning professional fikri.
Majburiyat - biznes qarori.
Rahbar: "3 kunda qila olasizmi?" Dasturchi: "Bahom 6 kun. Agar 3 kun kerak bo'lsa, imkoniyatlarning yarmini olib tashlaymiz."
Bahoni bosim ostida o'zgartirish - loyihani muvaffaqiyatsizlikka yo'naltirish.
- Oxirgi bajargan vazifangizni eslang: bahoyingiz va haqiqiy vaqt qanday farq qildi?
- "Blog tizimi" loyihasini 15 ta vazifaga bo'ling.
- Har biriga PERT usuli bilan uch nuqtali baho bering.
- Jami bahoni hisoblang va 25% bufer qo'shing.
- Loyiha uchun 6 ta xavf yozing va matritsaga joylang.
- Har bir yuqori xavf uchun chora yozing.
- Gantt diagrammasi tuzing va kritik yo'lni belgilang.
- Uchburchak cheklovlari asosida mijozga javob matnini yozing.
- Baholar tarixi jadvalini boshlang va bir oy yuriting.
- "Bu ish 2 kun oladi" degan bahoni to'g'ri shaklda qayta yozing.
Xulosa #
- Dasturchilar baholari muntazam ravishda 1.5-2 barobar past chiqadi.
- Asosiy sabab - ko'rinmaydigan ishlar: test, tekshiruv, hujjat, deploy.
- Uchburchak cheklovlari: doira, vaqt, resurs - uchtasini bir vaqtda belgilab bo'lmaydi.
- Bruks qonuni: kechikkan loyihaga odam qo'shish uni yanada kechiktiradi.
- PERT uch nuqtali baho beradi va noaniqlikni ko'rsatadi.
- Dekompozitsiya - eng ishonchli usul; vazifa 8 soatdan oshmasin.
- Vaqt qutisi noaniq va tadqiqot ishlari uchun ideal.
- Buferni loyiha darajasida saqlang, har vazifaga alohida emas.
- Xavf reyestri yuriting va yuqori xavflar bilan darhol shug'ullaning.
- Baho - texnik fikr, majburiyat - biznes qarori. Ularni aralashtirmang.
- Yomon xabarni erta ayting.
Keyingi bo'limda dasturiy arxitektura bilan tanishamiz.
O‘qish tarixini saqlamoqchimisiz?
Tizimga kirsangiz, tugatgan bo‘limlaringiz saqlanadi va qoldirgan joyingizdan davom etasiz.
Xatolik topdingizmi?
Imlo xatosi, ishlamaydigan kod yoki noto‘g‘ri ma‘lumotni ko‘rsangiz - bizga xabar bering. Har bir xabar administrator tomonidan ko‘rib chiqiladi.