16-bo‘lim
Jamoaviy ish va muvofiqlashtirish
Versiya nazorati amaliyoti, jamoa tuzilishi, muloqot, Konvey qonuni va masofaviy ish.
Ushbu bo‘lim mundarijasi
Dasturiy ta'minot - jamoa mahsuli. Texnik mahorat qanchalik yuqori bo'lmasin, muvofiqlashtirish yomon bo'lsa loyiha muvaffaqiyatsiz bo'ladi.
Konvey qonuni #
*"Tizim loyihalayotgan tashkilotlar shu tashkilotning muloqot tuzilmasini nusxalovchi dizayn yaratadi."*
— Melvin Konvey, 1967
Mikroservis arxitekturasi kerak bo'lsa - avval jamoalarni shunday tuzing: har bir jamoa bitta biznes sohasi uchun to'liq javobgar bo'lsin.
Aks holda: uchta jamoa (frontend, backend, baza) mikroservis qurishga urinsa, natijada taqsimlangan monolit chiqadi - eng yomon variant.
Jamoa tuzilishi #
| Model | Tuzilma | Qachon |
|---|---|---|
| Komponenta jamoalari | Frontend, backend, QA alohida | Katta, barqaror tizim |
| Xususiyat jamoalari | Har bir jamoa to'liq stack | Tez yetkazish kerak |
| Mahsulot jamoalari | Bir soha uchun to'liq javobgar | Mustaqil mahsulotlar |
Amazon qoidasi: *"Jamoa ikkita pitsa bilan to'yadigan darajada kichik bo'lsin"* - ya'ni 6-8 kishi.
Sabab - muloqot yo'llari soni:
5 kishi → 10 ta yo'l
10 kishi → 45 ta yo'l
20 kishi → 190 ta yo'l
Versiya nazorati amaliyoti #
# Kunni yangilanish bilan boshlang
git switch main && git pull
# Har bir vazifa uchun tarmoq
git switch -c feature/142-buyurtma-bekor-qilish
# Kichik va mazmunli kommitlar
git add manba/Domen/BuyurtmaHolati.php
git commit -m "feat(buyurtma): holat o'tish qoidalari qo'shildi"
git add manba/Servislar/BuyurtmaServisi.php testlar/
git commit -m "feat(buyurtma): bekor qilish mantiqi va testlari"
# Muntazam yuborish
git push -u origin feature/142-buyurtma-bekor-qilish
Bitta kommit - bitta mantiqiy o'zgarish.
| Yomon | Yaxshi |
|---|---|
| "Kunlik ish" (500 satr, 12 fayl) | "Bekor qilish qoidalari qo'shildi" |
| "Tuzatish" | "Bo'sh savatda xato tuzatildi" |
| Bir kommitda refaktoring + yangi imkoniyat | Ikkita alohida kommit |
Kommit teskari qaytarilishi mumkin bo'lsin: git revert bitta
mantiqiy o'zgarishni olib tashlasin.
Konvensional kommitlar #
<tur>(<soha>): <qisqa tavsif>
<batafsil tavsif>
<izohlar>
feat(savat): mahsulot sonini o'zgartirish qo'shildi
Savat sahifasida har bir mahsulot yonida son maydoni paydo bo'ldi.
Son o'zgarganda jami summa AJAX orqali qayta hisoblanadi.
Ombor tekshiruvi ham qo'shildi: mavjud miqdordan ko'p tanlab
bo'lmaydi.
Fixes #142
| Tur | Qachon | Versiyaga ta'siri |
|---|---|---|
feat | Yangi imkoniyat | MINOR |
fix | Xato tuzatish | PATCH |
docs | Hujjatlar | Yo'q |
refactor | Qayta yozish | Yo'q |
perf | Tezlik | PATCH |
test | Testlar | Yo'q |
build, ci | Qurish, CI | Yo'q |
chore | Texnik ishlar | Yo'q |
CHANGELOGavtomatik yaratiladi- Semantik versiya avtomatik aniqlanadi
- Tarixni filtrlash oson:
git log --grep="^fix" - Kommit maqsadi bir qarashda ko'rinadi
Tarmoq strategiyasi #
main ← har doim ishlaydigan holatda, himoyalangan
├── feature/142-... ← qisqa muddatli, 1-3 kun
├── fix/145-...
└── hotfix/148-... ← shoshilinch
1-kun: tarmoq yaratildi
7-kun: main da 40 ta kommit paydo bo'ldi
14-kun: merge - 15 ta konflikt
Har kuni main dan yangilanishni oling:
git fetch origin
git rebase origin/main
Tarmoq 3 kundan oshmasin. Uzoq ish kerak bo'lsa - uni bo'ling yoki funksiya kalitlari ortida bosqichma-bosqich chiqaring.
Kod egaligi #
# .github/CODEOWNERS
# Standart
* @husanboy
# Frontend
/public/assets/ @jasur @malika
# Baza va migratsiyalar
/database/ @husanboy
/manba/Infratuzilma/ @husanboy
# To'lov moduli - ikki tasdiq kerak
/manba/Modullar/Tolov/ @husanboy @aziz
# CI sozlamalari
/.github/ @husanboy
| Model | Ma'nosi | Xavfi |
|---|---|---|
| Kuchli egalik | Faqat egasi o'zgartiradi | To'siq, bilim to'planishi |
| Zaif egalik | Egasi javobgar, boshqalar ham o'zgartirishi mumkin | Muvozanatli |
| Jamoaviy egalik | Hamma javobgar | Sifat pasayishi mumkin |
Har bir soha uchun mas'ul bor (u tekshiradi va bilimni saqlaydi), lekin boshqalar ham o'zgartirishi mumkin.
Bu bilim to'planishining oldini oladi va "avtobus omili" ni oshiradi.
Muloqot #
Har bir yig'ilishdan oldin so'rang:
- Maqsad nima? Aniq natija bo'lishi kerak
- Kim kerak? Faqat zarur odamlar
- Kun tartibi oldindan yuborilganmi?
- Buni yozma hal qilib bo'lmaydimi?
Yig'ilish narxi: 8 kishi × 1 soat = 8 soat ishchi vaqt.
Bilim almashish #
| Usul | Qachon |
|---|---|
| Kod tekshiruvi | Har kuni, tabiiy |
| Juftlikda dasturlash | Murakkab vazifa, o'qitish |
| Texnik uchrashuv | Yangi texnologiya, tajriba |
| Ichki hujjat | Barqaror bilim |
| ADR | Arxitektura qarorlari |
| Onboarding hujjati | Yangi a'zolar uchun |
# Yangi a'zo uchun qo'llanma
## Birinchi kun
- [ ] Kirish huquqlari: GitHub, Slack, Jira, VPN
- [ ] Loyihani lokal ishga tushirish (README bo'yicha)
- [ ] Jamoa bilan tanishuv
- [ ] Arxitektura ko'rigi (mentor bilan 1 soat)
## Birinchi hafta
- [ ] `good first issue` yorlig'i bilan bitta vazifa
- [ ] Birinchi PR va kod tekshiruvi
- [ ] Deploy jarayonini kuzatish
- [ ] Monitoring panellari bilan tanishish
## Birinchi oy
- [ ] Mustaqil o'rtacha murakkablikdagi vazifa
- [ ] Boshqa a'zoning PR ini tekshirish
- [ ] Navbatchilikda kuzatuvchi sifatida qatnashish
U eng yaxshi biladi: nima tushunarsiz bo'ldi, nima yetishmadi.
Birinchi vazifasi shu bo'lsin.
Masofaviy ish #
- Yozma birinchi - hamma narsa hujjatlashtirilsin
- Vaqt zonalarini hisobga oling - umumiy soatlarni belgilang
- Kamera yoqilgan muhim yig'ilishlarda
- Yozib olish - qatnasha olmaganlar uchun
- Norasmiy muloqot uchun ham vaqt ajrating
- Holatni ochiq ko'rsating - kim nima ustida ishlayapti
- Javob vaqti kutilmasi kelishilgan bo'lsin
# Jamoa kelishuvi
## Ish vaqti
Umumiy soatlar: 10:00 - 16:00 (Toshkent)
Bu vaqtda barcha onlayn va javob berishga tayyor
## Javob vaqti
- Slack: 2 soat ichida (umumiy soatlarda)
- PR tekshiruvi: 24 soat ichida
- Email: 1 ish kuni
## Yig'ilishlar
- Standup: har kuni 10:00, 15 daqiqa
- Rejalashtirish: dushanba 11:00, 1 soat
- Retrospektiva: juma 15:00, 1 soat
- Boshqa yig'ilishlar: 24 soat oldin xabar bilan
## Fokus vaqti
14:00 - 16:00 - yig'ilishsiz vaqt
Bu paytda faqat shoshilinch masalalar
Nizolarni hal qilish #
- Faktlarni ajrating - fikr va dalilni farqlang
- Mezonlarni kelishing - "nima yaxshiroq" degan savolga javob berish uchun mezon kerak
- Prototip qiling - bahs o'rniga o'lchang
- Qaytariladigan qarorni tanlang - noaniqlikda oson o'zgartiriladigani yaxshiroq
- Qaror qabul qiluvchini aniqlang
- Kelishuvni yozing - ADR sifatida
"Kelishmayman, lekin qo'llab-quvvatlayman" - sog'lom jamoa belgisi.
Texnik bahs shaxsiy munosabatga ta'sir qilmasligi kerak.
Belgilar:
- "Sen har doim shunday qilasan"
- Ovoz ko'tarish
- Sarkastik izohlar
- Boshqalar oldida kamsitish
Bunday holatda muhokamani to'xtating va rahbar bilan gaplashing.
Navbatchilik #
# Navbatchi vazifalari
## Kunlik
- Monitoring ogohlantirishlariga javob berish
- Ishlab chiqarishdagi xatolarni tekshirish
- Qo'llab-quvvatlash so'rovlarini ko'rib chiqish
- Deploy ni kuzatish
## Qoidalar
- Navbatchi rejalashtirilgan vazifa olmaydi
- Navbat 1 hafta, dushanbadan dushanbagacha
- Topshirish yig'ilishi: dushanba 10:00
- Ochiq masalalar keyingi navbatchiga yoziladi
## Eskalatsiya
1. Navbatchi 30 daqiqada hal qila olmasa - jamoaga
2. 1 soatda hal bo'lmasa - texnik yetakchiga
3. Kritik nosozlik - darhol hammaga
Navbatchi haftasida rejalashtirilgan ish olmasin.
Aks holda u ikki ish bilan band bo'ladi va ikkalasini ham yomon bajaradi.
Hodisadan keyingi tahlil #
# Hodisa hisoboti: To'lov tizimi 45 daqiqa ishlamadi
**Sana:** 2026-08-15, 14:22 - 15:07
**Ta'sir:** ~340 buyurtma yaratilmadi, taxminan 42 mln so'm
## Vaqt jadvali
| Vaqt | Voqea |
|------|-------|
| 14:22 | Deploy: to'lov moduli yangilandi |
| 14:24 | Xato darajasi ko'tarila boshladi |
| 14:31 | Monitoring ogohlantirishi ishladi |
| 14:35 | Navbatchi tekshirishni boshladi |
| 14:52 | Sabab aniqlandi: sozlama o'zgarishi qo'llanmagan |
| 15:02 | Orqaga qaytarish boshlandi |
| 15:07 | Xizmat tiklandi |
## Ildiz sabab
Yangi kod `TOLOV_API_VERSIYA` muhit o'zgaruvchisini talab qilardi.
U ishlab chiqish muhitida bor edi, ishlab chiqarishda yo'q.
Sozlama tekshiruvi ishga tushish paytida bajarilmagan.
## Nima yaxshi ketdi
- Monitoring muammoni 2 daqiqada sezdi
- Orqaga qaytarish 5 daqiqada bajarildi
- Ma'lumot yo'qolmadi
## Nima yaxshilanishi kerak
- Ogohlantirish 9 daqiqa kechikdi (kanal sozlamasi)
- Sabab topish 17 daqiqa oldi - jurnal yetarli emas edi
## Harakatlar
| Harakat | Mas'ul | Muddat |
|---------|--------|--------|
| Ishga tushishda majburiy sozlama tekshiruvi | Jasur | 2026-08-20 |
| Ogohlantirish kanalini tuzatish | Husanboy | 2026-08-18 |
| Sozlama xatolarini alohida jurnalga | Aziz | 2026-08-25 |
| Deploy dan keyin avtomatik salomatlik tekshiruvi | Jasur | 2026-09-01 |
Hodisa tahlilining maqsadi - aybdorni topish emas, tizimni yaxshilash.
Agar odamlar jazolanishdan qo'rqsa:
- Muammolarni yashiradi
- Xatolarni tan olmaydi
- Bir xil hodisalar takrorlanadi
To'g'ri savol: "Qanday tizim bunday xatoga yo'l qo'ydi?"
Noto'g'ri savol: "Kim aybdor?"
Jamoa sog'lig'i #
Har chorakda jamoa bilan quyidagilarni muhokama qiling:
| Savol | 1-5 baho |
|---|---|
| Ish qiziqarlimi? | |
| Yetkazish tezligi yaxshimi? | |
| Kod sifati qoniqarlimi? | |
| Jarayonlar yordam beradimi? | |
| Muloqot yaxshimi? | |
| O'rganish imkoniyati bormi? | |
| Sog'lom ish-hayot muvozanati bormi? |
Pastroq baholarni muhokama qiling va aniq harakatlar belgilang.
- Doimiy ortiqcha ish
- Sifatga e'tibor pasayishi
- Yig'ilishlarda passivlik
- Kasallik varaqalarining ko'payishi
- Jamoadan chiqib ketish
Bu belgilar ko'ringanda tezlikni kamaytiring. Charchagan jamoa tez ishlay olmaydi.
- Loyihangizning arxitekturasi jamoa tuzilmasiga qanday mos kelishini tahlil qiling.
- Konvensional kommit formatiga o'ting va 10 ta kommit yozing.
CODEOWNERSfayl yarating.- Jamoa kelishuvi hujjatini yozing.
- Yangi a'zo uchun onboarding ro'yxatini tuzing.
- Loyihangizdagi eng uzun yashagan tarmoqni toping - nima uchun uzoq turdi?
- Oxirgi 5 ta yig'ilishni baholang - ular kerak edimi?
- Navbatchilik jadvalini va vazifalarini yozing.
- Bo'lgan hodisa uchun aybdorsiz tahlil hisoboti yozing.
- Jamoa sog'lig'i so'rovnomasini o'tkazing.
Xulosa #
- Konvey qonuni: jamoa tuzilmasi arxitekturaga aylanadi.
- Teskari Konvey manevri: kerakli arxitekturaga mos jamoa tuzing.
- Xususiyat jamoalari komponenta jamoalaridan tez yetkazadi.
- Jamoa hajmi 5-9 kishi - muloqot yo'llari kam bo'lsin.
- Kommit - bitta mantiqiy o'zgarish, teskari qaytarilishi mumkin.
- Konvensional kommitlar CHANGELOG va versiyani avtomatlashtiradi.
- Tarmoq 3 kundan oshmasin.
- Zaif kod egaligi eng muvozanatli model.
- Ikki-uch yozishmadan keyin gaplashing, natijani yozib qo'ying.
- Navbatchiga rejalashtirilgan ish bermang.
- Hodisa tahlili aybdorsiz bo'lsin - maqsad tizimni yaxshilash.
- Charchash belgilarini e'tibordan qoldirmang.
Keyingi bo'limda CI/CD va DevOps ni ko'ramiz.
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.