16-bo‘lim

Jamoaviy ish va muvofiqlashtirish

Versiya nazorati amaliyoti, jamoa tuzilishi, muloqot, Konvey qonuni va masofaviy ish.

🕑 13 daqiqa o‘qish 📄 1 218 so‘z 👁 6 marta ko‘rilgan
Ushbu bo‘lim mundarijasi
  1. Konvey qonuni
  2. Jamoa tuzilishi
  3. Versiya nazorati amaliyoti
  4. Konvensional kommitlar
  5. Tarmoq strategiyasi
  6. Kod egaligi
  7. Muloqot
  8. Bilim almashish
  9. Masofaviy ish
  10. Nizolarni hal qilish
  11. Navbatchilik
  12. Hodisadan keyingi tahlil
  13. Jamoa sog'lig'i
  14. Xulosa

Dasturiy ta'minot - jamoa mahsuli. Texnik mahorat qanchalik yuqori bo'lmasin, muvofiqlashtirish yomon bo'lsa loyiha muvaffaqiyatsiz bo'ladi.

Konvey qonuni #

Ta'rif

*"Tizim loyihalayotgan tashkilotlar shu tashkilotning muloqot tuzilmasini nusxalovchi dizayn yaratadi."*

— Melvin Konvey, 1967

Jamoa tuzilmasi arxitekturaga aylanadi Jamoalar Frontend jamoa Backend jamoa Baza jamoasi Arxitektura UI qatlami API qatlami Ma'lumot qatlami Amaliy xulosa Kerakli arxitekturaga mos jamoa tuzilmasini yarating - teskarisi emas
Bu kuzatuv o'nlab tadqiqotlarda tasdiqlangan
Teskari Konvey manevri

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 #

ModelTuzilmaQachon
Komponenta jamoalariFrontend, backend, QA alohidaKatta, barqaror tizim
Xususiyat jamoalariHar bir jamoa to'liq stackTez yetkazish kerak
Mahsulot jamoalariBir soha uchun to'liq javobgarMustaqil mahsulotlar
Ikki yondashuv Komponenta jamoalari Frontend jamoa Backend jamoa Baza jamoasi Bitta imkoniyat uchta jamoadan o'tadi Kutish, muvofiqlashtirish, kechikish Xususiyat jamoalari Savat UI API Baza To'lov UI API Baza Katalog UI API Baza Jamoa imkoniyatni mustaqil yetkazadi Kutish yo'q, javobgarlik aniq Xususiyat jamoalari tezroq, lekin har bir a'zodan kengroq bilim talab qiladi
Jamoa hajmi 5-9 kishi bo'lgani optimal
"Ikki pitsa qoidasi"

Amazon qoidasi: *"Jamoa ikkita pitsa bilan to'yadigan darajada kichik bo'lsin"* - ya'ni 6-8 kishi.

Sabab - muloqot yo'llari soni:

Natija
5 kishi  → 10 ta yo'l
10 kishi → 45 ta yo'l
20 kishi → 190 ta yo'l

Versiya nazorati amaliyoti #

Terminal
# 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
Kommit hajmi

Bitta kommit - bitta mantiqiy o'zgarish.

YomonYaxshi
"Kunlik ish" (500 satr, 12 fayl)"Bekor qilish qoidalari qo'shildi"
"Tuzatish""Bo'sh savatda xato tuzatildi"
Bir kommitda refaktoring + yangi imkoniyatIkkita alohida kommit

Kommit teskari qaytarilishi mumkin bo'lsin: git revert bitta mantiqiy o'zgarishni olib tashlasin.

Konvensional kommitlar #

Natija
<tur>(<soha>): <qisqa tavsif>

<batafsil tavsif>

<izohlar>
Natija
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
TurQachonVersiyaga ta'siri
featYangi imkoniyatMINOR
fixXato tuzatishPATCH
docsHujjatlarYo'q
refactorQayta yozishYo'q
perfTezlikPATCH
testTestlarYo'q
build, ciQurish, CIYo'q
choreTexnik ishlarYo'q
Nima uchun standart format?
  1. CHANGELOG avtomatik yaratiladi
  2. Semantik versiya avtomatik aniqlanadi
  3. Tarixni filtrlash oson: git log --grep="^fix"
  4. Kommit maqsadi bir qarashda ko'rinadi

Tarmoq strategiyasi #

Natija
main                    ← har doim ishlaydigan holatda, himoyalangan
 ├── feature/142-...    ← qisqa muddatli, 1-3 kun
 ├── fix/145-...
 └── hotfix/148-...     ← shoshilinch
Uzoq yashaydigan tarmoqlardan qoching
Natija
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:

Terminal
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 #

Natija
# .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
ModelMa'nosiXavfi
Kuchli egalikFaqat egasi o'zgartiradiTo'siq, bilim to'planishi
Zaif egalikEgasi javobgar, boshqalar ham o'zgartirishi mumkinMuvozanatli
Jamoaviy egalikHamma javobgarSifat pasayishi mumkin
Zaif egalik - eng amaliy

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 #

Qaysi kanalni tanlash? Asinxron (yozma) Hujjat, PR izohi, vazifa tavsifi + Saqlanadi, izlanadi, uzmaydi - Sekin, noaniqlik qolishi mumkin Sinxron (og'zaki) Suhbat, yig'ilish, qo'ng'iroq + Tez, murakkab mavzuga mos - Uzadi, saqlanmaydi Amaliy qoida Ikki-uch marta yozishmadan keyin ham tushunmasangiz - gaplashing Suhbatdan keyin natijani albatta yozib qo'ying Aks holda kelishuv unutiladi va bahs qaytadan boshlanadi
Sinxron muloqot tez, asinxron muloqot masshtablanadi
Yig'ilishlarni kamaytiring

Har bir yig'ilishdan oldin so'rang:

  1. Maqsad nima? Aniq natija bo'lishi kerak
  2. Kim kerak? Faqat zarur odamlar
  3. Kun tartibi oldindan yuborilganmi?
  4. Buni yozma hal qilib bo'lmaydimi?

Yig'ilish narxi: 8 kishi × 1 soat = 8 soat ishchi vaqt.

Bilim almashish #

UsulQachon
Kod tekshiruviHar kuni, tabiiy
Juftlikda dasturlashMurakkab vazifa, o'qitish
Texnik uchrashuvYangi texnologiya, tajriba
Ichki hujjatBarqaror bilim
ADRArxitektura qarorlari
Onboarding hujjatiYangi a'zolar uchun
MARKDOWN
# 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
Onboarding hujjatini yangi a'zo yangilasin

U eng yaxshi biladi: nima tushunarsiz bo'ldi, nima yetishmadi.

Birinchi vazifasi shu bo'lsin.

Masofaviy ish #

Masofaviy jamoa uchun qoidalar
  1. Yozma birinchi - hamma narsa hujjatlashtirilsin
  2. Vaqt zonalarini hisobga oling - umumiy soatlarni belgilang
  3. Kamera yoqilgan muhim yig'ilishlarda
  4. Yozib olish - qatnasha olmaganlar uchun
  5. Norasmiy muloqot uchun ham vaqt ajrating
  6. Holatni ochiq ko'rsating - kim nima ustida ishlayapti
  7. Javob vaqti kutilmasi kelishilgan bo'lsin
MARKDOWN
# 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 #

Texnik nizolar
  1. Faktlarni ajrating - fikr va dalilni farqlang
  2. Mezonlarni kelishing - "nima yaxshiroq" degan savolga javob berish uchun mezon kerak
  3. Prototip qiling - bahs o'rniga o'lchang
  4. Qaytariladigan qarorni tanlang - noaniqlikda oson o'zgartiriladigani yaxshiroq
  5. Qaror qabul qiluvchini aniqlang
  6. Kelishuvni yozing - ADR sifatida

"Kelishmayman, lekin qo'llab-quvvatlayman" - sog'lom jamoa belgisi.

Shaxsiy nizolarga aylanmasin

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.

MARKDOWN
# 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
Navbatchiga bo'sh vaqt bering

Navbatchi haftasida rejalashtirilgan ish olmasin.

Aks holda u ikki ish bilan band bo'ladi va ikkalasini ham yomon bajaradi.

Hodisadan keyingi tahlil #

MARKDOWN
# 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 |
Aybdorsiz tahlil

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 #

Muntazam tekshiring

Har chorakda jamoa bilan quyidagilarni muhokama qiling:

Savol1-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.

Charchash belgilari
  • 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.

Amaliy topshiriq
  1. Loyihangizning arxitekturasi jamoa tuzilmasiga qanday mos kelishini tahlil qiling.
  2. Konvensional kommit formatiga o'ting va 10 ta kommit yozing.
  3. CODEOWNERS fayl yarating.
  4. Jamoa kelishuvi hujjatini yozing.
  5. Yangi a'zo uchun onboarding ro'yxatini tuzing.
  6. Loyihangizdagi eng uzun yashagan tarmoqni toping - nima uchun uzoq turdi?
  7. Oxirgi 5 ta yig'ilishni baholang - ular kerak edimi?
  8. Navbatchilik jadvalini va vazifalarini yozing.
  9. Bo'lgan hodisa uchun aybdorsiz tahlil hisoboti yozing.
  10. 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.

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.