15.6-bob: Hujjat o'qish va texnik kommunikatsiya
15-QISM — Kasbiy ko'nikmalar · 6-mavzu
1. Kirish va motivatsiya
Texnologiya juda tez o'zgaradi (yangi versiya, yangi kutubxona, yangi framework — har oy). Hech bir dasturchi hamma narsani yodlay olmaydi (va shart ham emas). Eng muhim ko'nikma — mustaqil o'rganish: kerakli ma'lumotni topish, hujjatni o'qib tushunish, va muammoga yechim qidirish. Bu — "qancha bilasiz" emas, balki "qanday tez o'rganasiz" masalasi. Senior dasturchi junior'dan ko'p narsa biladi, lekin asosiy farq — qanday tez yangi narsani o'rganadi (hujjat o'qish, qidirish, eksperiment). Bu bobda aynan shu — mustaqil o'rganish va texnik kommunikatsiya ko'nikmasini ko'ramiz.
Ikki tomon bor: (1) ma'lumot olish — rasmiy hujjat (documentation) o'qish (eng ishonchli, to'liq manba — lekin ko'p dasturchi uni o'qishni bilmaydi yoki o'qimaydi — to'g'ridan Stack Overflow/AI'ga), qidirish (Google/SO — to'g'ri savol), AI vositalari (ChatGPT — to'g'ri ishlatish); (2) ma'lumot berish — texnik yozish (o'z hujjatingiz, README, kommentariya), va savol berish (yaxshi savol — tez, sifatli javob). Bu ikki tomon (olish + berish) — texnik kommunikatsiya. Bu ko'nikmalar kam o'rgatiladi (kod yozish o'rgatiladi, lekin hujjat o'qish, savol berish — ko'pincha "o'zingizga havola"), lekin professional ishda juda muhim (har kun hujjat o'qiysiz, savol berasiz, hujjat yozasiz).
Bu bob: mustaqil o'rganish (nega muhim), hujjat o'qish (rasmiy doc — qanday), qidirish (Google/SO — to'g'ri savol), AI vositalari (to'g'ri ishlatish), texnik yozish (README, hujjat), savol berish (yaxshi savol), va o'rganish strategiyasi. Hujjat o'qish ko'nikmasini boshqa ko'nikmalar bilan bog'lab, to'liq ochib beramiz — chunki mustaqil o'rganishning yuragi aynan shu.
O'xshatish: Mustaqil o'rganish — bu baliq tutishni bilish ("baliq berish" emas). Kimdir sizga baliq bersa (tayyor yechim — AI/SO'dan ko'chirib) — bugun to'q, ertaga och (yangi muammo — yana so'rash). Baliq tutishni bilsangiz (hujjat o'qish, qidirish, eksperiment) — har doim o'zingiz topasiz (har yangi muammo — mustaqil). Hujjat — bu baliqchi qo'llanmasi (rasmiy, to'liq, ishonchli — qaerda qanday baliq); qidirish — bu boshqa baliqchilardan so'rash (Stack Overflow — tajriba); AI — bu aqlli yordamchi (tez maslahat, lekin tekshirish kerak — ba'zan noto'g'ri). Eng yaxshi dasturchi — baliq tutishni biladi (mustaqil o'rganadi — hujjat, qidirish), tayyor baliqqa (ko'chirma yechim) tayanmaydi. Texnologiya o'zgaradi (baliqlar ko'chadi), lekin tutish ko'nikmasi qoladi.
Nega muhim?
- Texnologiya tez o'zgaradi — hamma narsani yodlab bo'lmaydi (qanday o'rganish — muhim).
- Hujjat — eng yaxshi manba — rasmiy, to'liq, ishonchli (lekin ko'p kishi o'qimaydi).
- Mustaqillik — o'zingiz topish (har muammoga so'ramasdan — senior belgisi).
- Kommunikatsiya — savol berish, hujjat yozish (jamoada — kunlik).
2. Nazariya — chuqur tushuntirish
2.1. Mustaqil o'rganish (nega muhim)
MUSTAQIL O'RGANISH — "qancha bilasiz" emas, "qanday o'rganasiz":
HAQIQAT: hech kim hamma narsani bilmaydi:
texnologiya tez o'zgaradi (yangi versiya, kutubxona — doimiy)
senior ham har kun yangi narsa o'rganadi (Google'dan qidiradi)
"bilim" emas, "qanday topish" — asosiy ko'nikma
MUSTAQIL O'RGANISH BOSQICHLARI:
1. Aniqla (nima kerak — muammo/savol aniq)
2. Manba tanla (hujjat? qidirish? AI? — to'g'ri manba)
3. O'qi/tushun (hujjat — eng ishonchli)
4. Eksperiment (sinab ko'r — kichik misol)
5. Qo'lla (loyihaga)
MUSTAQILLIK SPEKTRI:
har muammoga so'rash (junior — boshqalarga bog'liq)
o'zing topish, kerak bo'lganda so'rash (senior — mustaqil)
Mustaqil o'rganish — qanday topish (bilim emas); texnologiya o'zgaradi, usul qoladi
Bosqichlar — aniqla manba o'qi eksperiment qo'lla (o'zing)Mustaqil o'rganish (nega muhim) — eng muhim professional ko'nikma. Haqiqat: hech bir dasturchi hamma narsani bilmaydi (va bilishi shart emas) — texnologiya tez o'zgaradi (yangi versiya, kutubxona, framework — doimiy), senior ham har kun yangi narsa o'rganadi (Google'dan qidiradi, hujjat o'qiydi). Demak asosiy ko'nikma — "bilim" (qancha yodlaganingiz) emas, "qanday topish" (qanday tez o'rganasiz). Mustaqil o'rganish bosqichlari: (1) aniqla (nima kerak — muammo/savol aniq — "Next.js'da rasm optimizatsiya qanday?"); (2) manba tanla (hujjat? qidirish? AI? — to'g'ri manba — 2.2, 2.3); (3) o'qi/tushun (hujjat — eng ishonchli — 2.2); (4) eksperiment (sinab ko'r — kichik misol — o'qish + amaliyot); (5) qo'lla (loyihaga). Mustaqillik spektri: bir uchda — har muammoga boshqalarga so'rash (junior — boshqalarga bog'liq — har savol uchun hamkasb/AI); ikkinchi uchda — o'zingiz topish, kerak bo'lganda so'rash (senior — mustaqil — avval o'zi qidiradi, hujjat o'qiydi, keyin kerak bo'lsa so'raydi). Ikki nuqta: (1) mustaqil o'rganish — qanday topish (bilim yodlash emas); texnologiya o'zgaradi (bilim eskiradi), usul (qidirish, hujjat o'qish) qoladi; (2) bosqichlar — aniqla manba o'qi eksperiment qo'lla (o'zingiz — mustaqil). Bu — eng muhim ko'nikma (texnik bilimdan ham muhimroq uzoq muddatda — bilim eskiradi, o'rganish usuli qoladi). Senior = tez o'rganadi (junior'dan ko'p biladi, lekin asosiy farq — qanday tez yangi narsani o'rganadi — hujjat, qidirish, eksperiment). Mustaqillik — o'zingiz topish (har savolga so'ramasdan — lekin uzoq qiynalsa so'rash — 15.5: 2.7 — balans). Bu ko'nikma rivojlanadi (har muammoni o'zingiz hal qilishga urinish — mustaqillik o'sadi). Mustaqil o'rganish — dasturchi karyerasining poydevori (doimiy o'rganish — texnologiya doimo yangilanadi).
2.2. Hujjat o'qish (rasmiy doc)
HUJJAT O'QISH — rasmiy documentation (ENG ishonchli, to'liq manba):
NEGA RASMIY HUJJAT (Stack Overflow/AI'dan yaxshiroq):
TO'LIQ (barcha imkoniyat, opsiya — SO faqat bir holat)
YANGI (rasmiy — eng so'nggi versiya; SO/blog eskirgan bo'lishi mumkin)
ISHONCHLI (yaratuvchi — to'g'ri; SO/AI ba'zan noto'g'ri)
KONTEKST (nega, qanday ishlaydi — chuqur)
HUJJAT TURLARI:
Getting Started / Tutorial (boshlanish — qadam-baqadam)
Guides / Concepts (chuqur — qanday ishlaydi)
API Reference (har funksiya/opsiya — to'liq — qidiriladigan)
Examples (namuna kod)
QANDAY O'QISH:
Avval umumiy (Getting Started — katta rasm)
Keyin keraklisini (API Reference — aniq funksiya — Ctrl+F)
Misollar (kod — eng tez tushunish)
Boshdan oxirgacha o'qima (keraklisini qidir — reference)
Rasmiy hujjat — eng ishonchli, to'liq, yangi (SO/AI'dan yaxshiroq — birinchi manba)
Qanday — umumiy (Getting Started) kerakli (API ref, Ctrl+F) misolHujjat o'qish (rasmiy doc) — eng ishonchli ma'lumot manbasi. Nega rasmiy hujjat (Stack Overflow yoki AI'dan yaxshiroq — birinchi manba): (1) to'liq (barcha imkoniyat, opsiya — hujjat hammasini yozadi; SO faqat bir aniq holat — qisman); (2) yangi (rasmiy hujjat — eng so'nggi versiya — yaratuvchi yangilaydi; SO javob yoki blog 3 yil oldingi — eskirgan bo'lishi mumkin — 13.1: 2.10 — Next.js 14 vs 15 farqi); (3) ishonchli (yaratuvchi yozgan — to'g'ri; SO/AI ba'zan noto'g'ri — eski, kontekstsiz, yoki xato); (4) kontekst (nega, qanday ishlaydi — chuqur — SO faqat "qanday qilish" — yuzaki). Hujjat turlari: (1) Getting Started / Tutorial (boshlanish — qadam-baqadam — yangi texnologiya); (2) Guides / Concepts (chuqur — qanday ishlaydi — tushunchalar); (3) API Reference (har funksiya/opsiya — to'liq, qidiriladigan — aniq narsa kerak bo'lganda); (4) Examples (namuna kod). Qanday o'qish: (1) avval umumiy (Getting Started — katta rasm — texnologiya nima, qanday); (2) keyin keraklisini (API Reference — aniq funksiya —
Ctrl+Fbilan qidir); (3) misollar (kod — eng tez tushunish — o'qish + ko'rish); (4) boshdan oxirgacha o'qima (hujjat — ma'lumotnoma — keraklisini qidir — reference, hammasi emas). Ikki nuqta: (1) rasmiy hujjat — eng ishonchli, to'liq, yangi (SO/AI'dan yaxshiroq — birinchi manba); (2) qanday — umumiy (Getting Started) kerakli (API ref, Ctrl+F) misol. Eng keng xato — hujjat o'qishni chetlab o'tib, to'g'ridan SO/AI'ga (tayyor yechim — ko'chir) — bu yuzaki (kontekst yo'q, eskirgan bo'lishi mumkin, faqat bir holat). To'g'ri — rasmiy hujjat birinchi (ishonchli, to'liq), SO/AI to'ldiruvchi (aniq muammo, tez maslahat). Hujjat o'qishni o'rganish (qanday topish — Getting Started, API ref, misol) — eng muhim mustaqil o'rganish ko'nikmasi. Ko'p dasturchi hujjatdan "qo'rqadi" (ko'p, quruq), lekin hujjat — eng yaxshi do'st (ishonchli, to'liq). Yaxshi hujjat (React, Next.js, MDN) — o'qish qiyin emas (Getting Started reference misol).
Chuqurroq — changelog, migration guide, versiya va spec/RFC. Rasmiy hujjatning tez-tez e'tibordan chetda qoladigan, lekin juda muhim to'rt qismi bor. (1) Changelog (o'zgarishlar tarixi —
CHANGELOG.mdyoki release notes) — har versiyada nima o'zgardi (yangi imkoniyat, tuzatilgan xato, breaking change — buzuvchi o'zgarish). Kutubxonani yangilashdan oldin changelog o'qish — majburiy odat (yangilangach kod buzilishi mumkinligini oldindan bilasiz). (2) Migration guide (ko'chish qo'llanmasi — masalan "Next.js 14 15 migration") — katta versiyaga o'tishda qadam-baqadam yo'riqnoma: nima o'zgargan, eski koddan yangisiga qanday o'tish. Katta yangilanishda avval migration guide o'qing, keyin o'zgartiring. (3) Versiyaga diqqat — hujjat o'qiyotganda qaysi versiya haqida ekanini doim tekshiring (ko'p sayt versiya tanlagichga ega —v3vav4hujjati boshqacha). Blog yoki SO javobi qaysi versiyaga tegishli — sana va versiyaga qarang 2.3-bob. (4) Spec / RFC (rasmiy standart — masalan HTTP RFC, ECMAScript spec, WHATWG HTML standarti) — eng chuqur, birlamchi manba (til/protokol qanday rasman ta'riflangan). Kundalik ishda kamdan-kam kerak, lekin nozik, chalkash holatda (masalan "bu belgi URL'da qanday kodlanadi?") — spec yakuniy haqiqat. Spec quruq va texnik, lekin aynan shu — mutlaq ishonchli manba (hech qanday talqinsiz). Xulosa: hujjatni faqat "qanday yozaman" uchun emas, o'zgarishlar va versiya nuqtai nazaridan ham o'qing — bu productiondagi kutilmagan buzilishlarning oldini oladi.
2.3. Qidirish va AI vositalari
QIDIRISH (Google/SO) va AI — to'g'ri ishlatish:
QIDIRISH (Google Stack Overflow):
Aniq qidiruv (xato xabarini ko'chir — ko'pincha boshqa topgan)
Kalit so'zlar (texnologiya + muammo — "next.js image optimization")
Yil/versiya tekshir (eski javob — eskirgan bo'lishi mumkin)
Bir necha javob (faqat 1-emas — kontekst, izohlar)
STACK OVERFLOW:
tayyor savol-javob (ko'pincha sizning muammongiz boshqada bo'lgan)
yuqori ovozli javob + izohlar (kontekst)
AI (ChatGPT/Claude — to'g'ri ishlatish):
Tez tushuntirish, namuna, debug yordami
TEKSHIRMASDAN ishonma (AI ba'zan noto'g'ri/eski — "hallucination")
Tushunish uchun (kod ko'chirma — nega ishlashini so'ra)
Hujjat bilan tasdiqla (AI javob rasmiy hujjatda tekshir)
Qidirish — aniq (xato xabari/kalit so'z), versiya tekshir; SO — tayyor javob
AI — tez yordam, lekin TEKSHIR (noto'g'ri bo'lishi mumkin); hujjat bilan tasdiqlaQidirish va AI vositalari — qidirish va AI'ni to'g'ri ishlatish. Qidirish (Google Stack Overflow): (1) aniq qidiruv — xato xabarini to'g'ridan ko'chir (Google'ga — ko'pincha boshqa kishi o'sha xatoni ko'rgan va yechim bor — eng tez); (2) kalit so'zlar (texnologiya + muammo — "next.js image optimization" — aniq, qisqa); (3) yil/versiya tekshir (eski javob — 2019 — eskirgan bo'lishi mumkin — yangi versiyaga mos kelmasligi — 2.2); (4) bir necha javob (faqat birinchi emas — boshqa javoblar, izohlar — kontekst, muqobil). Stack Overflow (SO): tayyor savol-javob (ko'pincha sizning muammongiz allaqachon boshqa kishida bo'lgan va javob bor — qidirib top), yuqori ovozli javob + izohlar (kontekst — nega, qachon). AI (ChatGPT, Claude — to'g'ri ishlatish): (1) tez yordam (tushuntirish, namuna kod, debug yordami — savol berasiz, darrov javob); (2) tekshirmasdan ishonma (AI ba'zan noto'g'ri yoki eski javob beradi — "hallucination" — ishonchli ko'rinadi, lekin xato — masalan mavjud bo'lmagan funksiya); (3) tushunish uchun (kod ko'chirma — "nega ishlaydi?" so'ra — o'rgan — ko'r-ko'rona emas); (4) hujjat bilan tasdiqla (AI javob rasmiy hujjatda tekshir — to'g'rimi). Ikki nuqta: (1) qidirish — aniq (xato xabari/kalit so'z), versiya tekshir; SO — tayyor javob (boshqa kishi ko'rgan); (2) AI — tez yordam, lekin tekshir (noto'g'ri bo'lishi mumkin — hallucination); hujjat bilan tasdiqla. AI — kuchli vosita (tez tushuntirish, debug, namuna), lekin tekshirish kerak (AI bilmasligini tan olmaydi — ishonchli noto'g'ri javob — xavfli — ayniqsa yangi/aniq narsada). To'g'ri AI ishlatish: tushunish uchun (nega), tasdiqlash bilan (hujjat), tanqidiy (ko'r-ko'rona emas). Eng keng xato — AI/SO'dan kod ko'chirib, tushunmasdan ishlatish (ishlaydi, lekin nega — bilmaysiz — debug qila olmaysiz, moslashtira olmaysiz). To'g'ri — qidirish/AI yordam, lekin tushunish (nega ishlaydi — o'rgan). Manba ierarxiyasi: rasmiy hujjat (ishonchli, to'liq — 2.2) SO (aniq muammo) AI (tez yordam — tekshir bilan). Hammasi vosita (mustaqil o'rganish — 2.1 — usuli).
2.4. Texnik yozish (README, hujjat)
TEXNIK YOZISH — o'z hujjatingiz (boshqalar/keyingi siz o'qiydi):
NEGA TEXNIK YOZISH:
README (loyiha — qanday ishga tushirish, nima)
Hujjat (API, komponent — qanday ishlatish)
Kommentariya (kod — nega — 15.1: 2.4)
PR tavsifi 15.2-bob, commit 4.5-bob
kod yetarli emas — kontekst kerak (boshqalar tushunsin)
YAXSHI README (loyiha):
## Loyiha nomi + qisqa tavsif (nima qiladi)
## Ishga tushirish (npm install, npm run dev — qadamlar)
## Texnologiyalar (stack)
## Struktura (asosiy papkalar)
## Hissa qo'shish (qanday — agar open source)
YAXSHI TEXNIK YOZISH:
Aniq, qisqa (ortiqcha so'z yo'q)
Tuzilgan (sarlavhalar, ro'yxat — qidiriladigan)
Misol (kod namunasi — eng tushunarli)
Auditoriya (kim o'qiydi — junior? — mos til)
Texnik yozish — README/hujjat/kommentariya (kontekst — boshqalar/keyingi siz tushunsin)
Yaxshi — aniq, qisqa, tuzilgan, misolli (kod yetarli emas — kontekst kerak)Texnik yozish (README, hujjat) — o'z hujjatingizni yozish. Nega texnik yozish (kod yetarli emas — kontekst kerak): (1) README (loyiha — qanday ishga tushirish, nima qiladi — boshqa dasturchi (yoki 6 oydan keyingi siz) loyihani ishga tushirish uchun); (2) hujjat (API, komponent — qanday ishlatish — boshqalar ishlatadi); (3) kommentariya (kod — nega — 15.1: 2.4); (4) PR tavsifi 15.2-bob, commit 4.5-bob. Kod o'zi "nima" qiladi, lekin "nega", "qanday ishlatish", "qanday ishga tushirish" — yozma kontekst (boshqalar tushunsin). Yaxshi README (loyiha — eng keng texnik yozish):
## Loyiha nomi + tavsif(nima qiladi — qisqa),## Ishga tushirish(npm install,npm run dev— qadamlar — boshqa dasturchi darrov ishga tushira oladi),## Texnologiyalar(stack — Next.js, Prisma...),## Struktura(asosiy papkalar),## Hissa qo'shish(qanday — agar open source — 15.8). Yaxshi texnik yozish: (1) aniq, qisqa (ortiqcha so'z yo'q — to'g'ridan — o'qigan tez tushunadi); (2) tuzilgan (sarlavhalar, ro'yxat — qidiriladigan — kerakli qismga sakra); (3) misol (kod namunasi — eng tushunarli — "qanday ishlatish" — kod ko'rsatadi); (4) auditoriya (kim o'qiydi — junior? senior? — mos til — junior uchun chuqurroq tushuntirish). Ikki nuqta: (1) texnik yozish — README/hujjat/kommentariya (kontekst — boshqalar yoki keyingi siz tushunsin — kod yolg'iz yetmaydi); (2) yaxshi — aniq, qisqa, tuzilgan, misolli. Texnik yozish — kam baholangan, lekin muhim ko'nikma (yaxshi kod + yomon hujjat = ishlatib bo'lmaydi — boshqalar tushunmaydi). README — loyihaning "yuzi" (open source'da — birinchi narsa odamlar ko'radi — yaxshi README = ishonch, ishlatish oson). Texnik yozish — jamoada va open source'da kunlik (har PR tavsifi, README, hujjat). Aniqlik muhim (chalkash hujjat — foydasiz — kod o'qishdan yomonroq). Bu — kommunikatsiya ko'nikmasi (g'oyani yozma yetkazish — kod + til). Yaxshi texnik yozuvchi — kodni va kontekstni (nega, qanday) aniq yetkazadi.
2.5. Savol berish (yaxshi savol)
SAVOL BERISH — yaxshi savol = tez, sifatli javob (jamoa/SO/AI):
YOMON SAVOL (javob qiyin):
"Ishlamayapti, yordam bering" (nima? qaerda? qanday?)
"Xato chiqyapti" (qanday xato? qachon?)
kontekstsiz, aniq emas "ko'proq ma'lumot kerak" vaqt ketadi
YAXSHI SAVOL (tez javob):
KONTEKST (nima qilmoqchi edingiz — maqsad)
NIMA QILDINGIZ (qanday urinib ko'rdingiz)
KUTILGAN vs HAQIQIY (nima kutgandingiz, nima chiqdi)
XATO (to'liq xabar — stack trace)
MINIMAL REPRODUCE (kichik, ishlaydigan misol — 15.5: 2.4)
NIMANI SINAB KO'RDINGIZ (o'zing urinish ko'rsatilgan)
"XY PROBLEM" (keng xato):
X (asl muammo) o'rniga Y (sizning yechimingiz) haqida so'rash
"qanday Y qilaman?" o'rniga "X'ni hal qilmoqchiman, Y ni sinadim..."
Yaxshi savol — kontekst + nima qildingiz + kutilgan/haqiqiy + xato + minimal reproduce
Avval o'zing urin (qidirish/hujjat — 2.2); XY problem'dan saqlan (asl muammoni ayt)Savol berish (yaxshi savol) — yaxshi savol = tez, sifatli javob. Savol berish — mahorat (yaxshi savol — tez javob; yomon savol — "ko'proq ma'lumot kerak" — vaqt ketadi). Yomon savol (javob qiyin): "Ishlamayapti, yordam bering" (nima ishlamaydi? qaerda? qanday?), "Xato chiqyapti" (qanday xato? qachon?) — kontekstsiz, aniq emas — javob beruvchi taxmin qilishi yoki so'rab olishi kerak (vaqt ketadi). Yaxshi savol (tez javob): (1) kontekst (nima qilmoqchi edingiz — maqsad — "foydalanuvchi login'ini tekshirmoqchiman"); (2) nima qildingiz (qanday urinib ko'rdingiz — kod); (3) kutilgan vs haqiqiy (nima kutgandingiz, nima chiqdi — farq); (4) xato (to'liq xabar — stack trace — 15.5: 2.4); (5) minimal reproduce (kichik, ishlaydigan misol — boshqalar darrov ko'radi — 15.5: 2.4); (6) nimani sinab ko'rdingiz (o'zingiz urinish ko'rsatilgan — "shularni sinadim, ishlamadi" — qaytarilmasin). "XY problem" (eng keng savol xatosi): X (asl muammo) o'rniga Y (sizning taxmin qilgan yechimingiz) haqida so'rash — masalan asl muammo "fayldan oxirgi 3 belgini olish" (X), lekin siz "faylni qanday teskari aylantiraman?" (Y — sizning yechim usuli) deb so'raysiz — javob beruvchi Y'ga yordam beradi (teskari aylantirish), lekin asl muammoga (X) yaxshiroq yechim bor (
slice(-3)) — XY problem (yechimingiz haqida emas, asl muammo haqida so'ra). Ikki nuqta: (1) yaxshi savol — kontekst + nima qildingiz + kutilgan/haqiqiy + xato + minimal reproduce (javob beruvchi darrov tushunadi); (2) avval o'zingiz urin (qidirish/hujjat — 2.2 — savoldan oldin — ko'pincha o'zingiz topasiz), XY problem'dan saqlan (asl muammoni ayt — yechimingiz emas). Yaxshi savol — hurmat (javob beruvchi vaqtini tejash) va samaradorlik (tez, aniq javob). Bu Stack Overflow (savol-javob sayti), jamoa (hamkasb), va AI'ga ham (yaxshi savol — yaxshi AI javob). Avval o'zingiz urinish (15.5: 2.7 — uzoq qiynalsa so'ra — lekin avval qidirish/hujjat) — savol oxirgi chora (o'zingiz topish — mustaqillik — 2.1). Yaxshi savol berish — kommunikatsiya va mustaqillik balansi (o'zingiz urin, keyin aniq so'ra). "Yaxshi savol berishni o'rganish — yarim javob" (savol aniqlashda ko'pincha o'zingiz topasiz — rubber duck — 15.5: 2.4).
2.6. O'rganish strategiyasi va best practices
O'RGANISH STRATEGIYASI va BEST PRACTICES:
O'RGANISH STRATEGIYASI:
AMALIYOT bilan (faqat o'qish emas — kod yoz, sinab ko'r — eng yaxshi)
Loyiha qur (real muammo — eng tez o'rganish)
Chuqurlik > kenglik (bir narsani yaxshi — 100 narsani yuzaki emas)
Asoslarni mustahkam (fundament — yangi narsa osonroq)
Doimiy (texnologiya o'zgaradi — uzluksiz o'rganish)
BEST PRACTICES:
Rasmiy hujjat birinchi (ishonchli — 2.2)
Qidirish aniq (xato xabari — 2.3)
AI tekshir bilan (hallucination — 2.3)
Yozib o'rgan (eslatma, README — o'zing uchun)
O'rgatib o'rgan (boshqaga tushuntir — chuqur tushunish)
Yaxshi savol (kontekst — 2.5)
O'rganish — amaliyot (o'qish + kod), chuqurlik, asoslar, doimiy
Best — hujjat birinchi, aniq qidirish, AI tekshir, o'rgatib o'rganO'rganish strategiyasi va best practices — samarali o'rganish. O'rganish strategiyasi: (1) amaliyot bilan (faqat o'qish emas — kod yoz, sinab ko'r — eng yaxshi o'rganish — o'qish passiv, amaliyot faol — "qo'l bilan" o'rganish — esda qoladi); (2) loyiha qur (real muammo — eng tez o'rganish — bu kitobning har bobida amaliy loyiha — 9-bo'lim — shuning uchun); (3) chuqurlik > kenglik (bir narsani yaxshi o'rgan — 100 narsani yuzaki emas — chuqur bilim ishlatiladi, yuzaki — yo'qoladi); (4) asoslarni mustahkam (fundament — JavaScript, HTTP, algoritm — 0-3 QISM — yangi narsa (framework) osonroq — asos bilan); (5) doimiy (texnologiya o'zgaradi — uzluksiz o'rganish — bir marta o'rganib to'xtamaslik — doimiy yangilanish). Best practices (butun bobni umumlashtiradi): (1) rasmiy hujjat birinchi (ishonchli — 2.2); (2) qidirish aniq (xato xabari — 2.3); (3) AI tekshir bilan (hallucination — 2.3); (4) yozib o'rgan (eslatma, README — o'zingiz uchun — yozish — tushunishni mustahkamlaydi); (5) o'rgatib o'rgan (boshqaga tushuntir — chuqur tushunish — "Feynman texnikasi" — tushuntira olmasangiz, tushunmagansiz); (6) yaxshi savol (kontekst — 2.5). Ikki nuqta: (1) o'rganish — amaliyot (o'qish + kod — faol), chuqurlik (bir narsa yaxshi), asoslar (fundament), doimiy (uzluksiz); (2) best — hujjat birinchi, aniq qidirish, AI tekshir, o'rgatib o'rgan (eng chuqur). O'rganish — faol jarayon (passiv o'qish — kam; amaliyot, loyiha, o'rgatish — chuqur). O'rgatib o'rganish (Feynman) — eng kuchli (boshqaga (yoki o'zingizga — rubber duck) tushuntirish — bo'shliqlarni ko'rsatadi — "bu yerda tushunmadim"). Amaliyot — eng yaxshi (kod yozish — o'qishdan ko'p — "qo'l xotirasi", real muammo). Asoslar — fundament (0-3 QISM — JavaScript, algoritm, HTTP — yangi framework osonroq — asos bilan; asossiz — har framework qaytadan qiyin). Bu strategiya — bu kitobning yondashuvi (chuqur — har mavzu batafsil; amaliy — har bobda loyiha; asoslar — 0-QISM'dan; doimiy — 17 QISM). Mustaqil o'rganish 2.1-bob + hujjat o'qish 2.2-bob + qidirish/AI 2.3-bob + texnik yozish 2.4-bob + savol 2.5-bob + strategiya 2.6-bob — birga o'rganish ko'nikmasi (texnik bilimdan ham muhim uzoq muddatda — bilim eskiradi, o'rganish qoladi). Bu — dasturchi karyerasining eng muhim ko'nikmasi (doimiy o'rganish — texnologiya doimo yangilanadi — o'rganish ko'nikmasi — doimiy qiymat).
2.7. Texnik muloqot — asinxron va sinxron
TEXNIK MULOQOT — jamoada g'oyani aniq yetkazish (yozma + og'zaki):
ASINXRON (yozma — Slack, issue, PR, email — darrov javob kutilmaydi):
ANIQ yoz (o'quvchi qayta so'ramasin — kontekst to'liq)
Bir joyda tugallangan (tarqoq xabar emas — bir to'liq xabar)
Issue/PR — havola, kod, ekran surati (matn yetmasa)
Hujjatlanadi (yozma qoladi — keyin qidiriladi)
"Salom" deb yozib, javob kutish — darrov muammoni ayt
SINXRON (og'zaki — meeting, qo'ng'iroq, juftlik — jonli):
Tez, murakkab masala (oldinga-orqaga — jonli tushuntirish)
Kelishuv, qaror (bir vaqtda — tez)
Har mayda narsaga meeting emas (asinxron yetadi — vaqt tejaydi)
QAYSI BIRI:
oddiy savol/yangilik asinxron (Slack/issue)
murakkab, tez kelishuv sinxron (meeting)
qaror asinxron yoz (keyin qidiriladi — hujjatlanadi)
Asinxron — aniq yoz (qayta so'rashsiz), hujjatlanadi; sinxron — murakkab/tez
To'g'ri kanal tanla (mayda narsaga meeting emas; muhim qaror — yozma qoldir)Texnik muloqot — jamoada g'oyani, muammoni, qarorni aniq yetkazish. Ish ikki turli muloqotdan iborat. Asinxron (yozma — Slack xabari, GitHub issue, PR tavsifi, email — javob darrov kutilmaydi, odam bo'sh bo'lganda o'qiydi): (1) aniq yozing — o'quvchi qayta so'ramaydigan qilib (kontekst to'liq: nima, qaerda, nima urindingiz — savol berish qoidalari, 2.5); (2) bir to'liq xabar (o'nta tarqoq qatorga bo'lib emas — bir joyda tugallangan fikr); (3) matn yetmasa — havola, kod bloki, ekran surati qo'shing; (4) asinxron muloqot hujjatlanadi (yozma qoladi — jamoaning yangi a'zosi keyin qidirib topadi). Faqat "Salom" deb yozib, javob kutib turmang — darrov muammoni bayon qiling (aks holda ikki marta kutish). Sinxron (og'zaki — meeting, qo'ng'iroq, juftlikda dasturlash — jonli, real vaqtda): (1) murakkab yoki tez masala uchun yaxshi (oldinga-orqaga jonli tushuntirish — yozishmadan tez); (2) kelishuv/qaror uchun (bir vaqtda hammaga — tez yakun). Har mayda narsaga meeting chaqirmang (asinxron yozib yuborsangiz — vaqt tejaladi, boshqalar bo'lganda o'qiydi). Qaysi birini tanlash: oddiy savol/yangilik asinxron (Slack/issue); murakkab masala yoki tez kelishuv kerak sinxron (meeting); muhim qaror sinxronda gaplashsangiz ham, keyin yozib qoldiring (issue/hujjatga — chunki og'zaki qaror unutiladi, yozma qidiriladi). Ikki nuqta: (1) asinxron — aniq yozing (qayta so'rashsiz tushunilsin), hujjatlanadi; sinxron — murakkab yoki tez masalaga; (2) to'g'ri kanalni tanlang (mayda narsaga meeting emas; muhim qarorni har doim yozma qoldiring). Prezentatsiya va demo — muloqotning maxsus turi: o'z ishingizni (yangi imkoniyat, loyiha natijasi) jamoaga yoki mijozga ko'rsatish. Yaxshi demo — auditoriyaga moslashtirilgan (texnik jamoaga — qanday ishlaydi; biznesga — nima foyda beradi), hikoya bilan (muammo yechim natija), jonli ishlaydigan (slayd emas, real ilova — foydalanuvchi ko'rgan holat). Muloqot — texnik bilim qadar muhim (eng yaxshi kod ham, agar tushuntira olmasangiz, jamoada qadrsiz — g'oyani yetkazish ko'nikmasi kodni ko'radigan qiladi).
2.8. Hamjamiyat, inglizcha til va hujjatni yangilash
HAMJAMIYAT + INGLIZCHA + HUJJATNI YANGILASH:
HAMJAMIYAT (community — birga o'rganish):
Open source (issue o'qish, hissa qo'shish — 15.8; kod o'qib o'rganish)
Forum/Discord/Reddit (savol-javob — jonli hamjamiyat)
Berish (o'zingiz javob bergan — o'rgatib o'rganish — 2.6)
INGLIZCHA TEXNIK TIL (muhim):
hujjat, SO, GitHub, xato xabari — deyarli hammasi INGLIZCHA
texnik inglizcha o'rganish (kalit atamalar — deploy, cache, race...)
tarjimaga kutmang (asl manba — inglizcha — birinchi, to'liq, yangi)
HUJJATNI YANGILASH (kod bilan birga):
Kod o'zgarsa — hujjat ham (eskirgan hujjat — noto'g'ridan yomon)
README, kommentariya, API doc — o'zgarish bilan yangila
"Keyin yozaman" — unutiladi (kod bilan bir PR'da)
Hamjamiyat — o'rgan va ber (open source, forum); inglizcha — asosiy manba tili
Hujjatni kod bilan birga yangila (eskirgan hujjat — chalg'itadi)Hamjamiyat, inglizcha til va hujjatni yangilash — mustaqil o'rganishni jamoaviy va uzoq muddatli qiladigan uch omil. Hamjamiyat (community): dasturlash yolg'iz emas — millionlab dasturchi bir-biridan o'rganadi. (1) Open source (ochiq kod — 15.8) — issue va PR o'qish, real loyiha kodini o'qib o'rganish, va tayyor bo'lganingizda hissa qo'shish (eng kuchli o'rganish — haqiqiy kod ustida). (2) Forum / Discord / Reddit / jamoa chatlari — jonli savol-javob, tajriba almashish (masalan bir framework rasmiy Discord'i — tez, samimiy yordam). (3) Berish — o'zingiz boshqalarning savoliga javob bering; bu o'rgatib o'rganish (2.6 — Feynman) va hamjamiyatga hissa (bergan — oladi). Inglizcha texnik til — bevosita aytiladigan haqiqat: rasmiy hujjat, Stack Overflow, GitHub, xato xabarlari, konferensiya — deyarli hammasi inglizcha. Shuning uchun texnik inglizchani o'rganish (mukammal grammatika emas — kalit atamalarni o'qib tushunish:
deploy,cache,race condition,deprecated,breaking changeva h.k.) — mustaqil o'rganishning ajralmas qismi. Tarjima yoki o'zbekcha manba chiqishini kutmang (u kechikadi, qisman, va eskirgan bo'ladi) — asl inglizcha manba birinchi, to'liq va yangi. O'qish darajasidagi inglizcha ham (hujjatni tushunish) katta imkoniyat ochadi. Hujjatni yangilash (kod bilan birga) — professional intizom: kod o'zgarganda uni tushuntiruvchi hujjat ham o'zgarishi shart. Eskirgan hujjat — noto'g'ri hujjatdan ham yomon (o'quvchi ishonadi, lekin kod boshqacha — chalg'itadi, xatoga olib keladi). Amaliyot: README, kod izohlari 15.1-bob, API hujjati o'zgarishni o'sha PR'da yangilang (alohida "keyin yozaman" — unutiladi). Ikki nuqta: (1) hamjamiyat — o'rgan va ber (open source, forum); inglizcha — asosiy texnik manba tili; (2) hujjatni doimo kod bilan birga yangilang (eskirgan hujjat chalg'itadi). Bu uch omil mustaqil o'rganishni kengaytiradi: hamjamiyat (birga), inglizcha (manbaga to'g'ridan kirish), hujjatni yangilash (bilimni saqlash) — birga uzoq muddatli, professional o'rganish madaniyati.
3. Sintaksis — o'rganish ma'lumotnoma
MANBA IERARXIYA 2.2-bob: rasmiy hujjat Stack Overflow AI (tekshir bilan)
HUJJAT O'QISH 2.2-bob: Getting Started API Reference (Ctrl+F) misol
QIDIRISH 2.3-bob: xato xabarini ko'chir; kalit so'z; versiya tekshir
AI 2.3-bob: tez yordam, lekin TEKSHIR (hujjat bilan tasdiqla)
README 2.4-bob: tavsif + ishga tushirish + stack + struktura
SAVOL 2.5-bob: kontekst + nima qildingiz + kutilgan/haqiqiy + xato + reproduce
STRATEGIYA 2.6-bob: amaliyot, chuqurlik, asoslar, o'rgatib o'rgan, doimiy
CHANGELOG 2.2-bob: yangilashdan oldin o'qi; breaking change; migration guide
MULOQOT 2.7-bob: asinxron (aniq yoz, hujjatlanadi) / sinxron (murakkab, tez)
ADR 2.4-bob: kontekst + variantlar + qaror + oqibat (nega — Misol 6)
YANGILASH 2.8-bob: hujjatni kod bilan bir PR'da yangila (eskirmasin)4. Batafsil misollar
Har misol: Maqsad + namuna + "Bu nima ko'rsatadi".
Misol 1 — Hujjatdan yangi narsa o'rganish (2.2)
Maqsad: Yangi kutubxonani (masalan TanStack Query) rasmiy hujjatdan o'rganish jarayoni. Bu mustaqil o'rganishning amaliy ko'rinishi.
VAZIFA: TanStack Query'ni loyihaga qo'shish (bilmayman)
YOMON (to'g'ridan AI/SO):
"TanStack Query qanday ishlatiladi" AI'dan kod ko'chir ishladi (lekin nega?)
yuzaki, kontekstsiz, moslashtira olmayman, eski bo'lishi mumkin
YAXSHI (rasmiy hujjat — 2.2):
1. GETTING STARTED (tanstack.com/query) — umumiy:
nima (server state), nega (kesh/sync), asosiy tushuncha (query/mutation)
2. OVERVIEW/CONCEPTS — chuqur:
queryKey, queryFn, kesh qanday ishlaydi 12.4-bob
3. QUICK START — birinchi misol:
useQuery({ queryKey, queryFn }) — kod namunasi
4. EKSPERIMENT — kichik sinab ko'r (bitta query)
5. API REFERENCE — keraklisini (Ctrl+F: "staleTime") — aniq opsiya
6. QO'LLA — loyihaga (tushunib — moslashtirib)
NATIJA: TUSHUNDIM (nega, qanday) — moslashtira/debug qila olamanBu nima ko'rsatadi: Bu — hujjatdan yangi narsa o'rganish (mustaqil o'rganish amalda — 2.2). Vazifa: TanStack Query 12.4-bobni bilmayman — qanday o'rganaman? Yomon yo'l (to'g'ridan AI/SO): "TanStack Query qanday?" AI'dan kod ko'chir ishladi — lekin yuzaki (nega ishlaydi — bilmayman — kontekstsiz, moslashtira olmayman, AI javob eski/noto'g'ri bo'lishi mumkin). Yaxshi yo'l (rasmiy hujjat — 2.2): (1) Getting Started (tanstack.com/query) — umumiy (nima — server state, nega — kesh/sync, asosiy tushuncha — query/mutation — katta rasm); (2) Concepts — chuqur (queryKey, queryFn, kesh qanday — 12.4); (3) Quick Start — birinchi misol (useQuery({ queryKey, queryFn }) — kod namunasi — ko'rib tushunish); (4) eksperiment — kichik sinab ko'r (bitta query — amaliyot — 2.6); (5) API Reference — keraklisini (Ctrl+F: "staleTime" — aniq opsiya — 2.2); (6) qo'lla — loyihaga (tushunib, moslashtirib). Natija: tushundim (nega — server state kesh; qanday — queryKey/queryFn) — endi moslashtira olaman (o'z holatimga), debug qila olaman (xato bo'lsa — nega — bilaman). Nega bu yaxshi: rasmiy hujjat — to'liq (barcha imkoniyat), yangi (so'nggi versiya), ishonchli, kontekstli (nega, qanday — 2.2) — natijada tushunib o'rganasiz (ko'r-ko'rona ko'chirma emas). AI/SO yo'li — tez, lekin yuzaki (kod ishlaydi, nega — bilmaysiz — moslashtira/debug qila olmaysiz). Jarayon (Getting Started Concepts misol eksperiment reference qo'lla) — har yangi texnologiya uchun (mustaqil o'rganish usuli). Bu kitob ham shu yondashuv (har mavzu — nima/nega/qanday — chuqur, misol bilan, amaliy loyiha). Hujjat o'qishni o'rganish — eng muhim mustaqil o'rganish ko'nikmasi (har yangi narsani o'zingiz o'rgana olasiz — hujjat bilan). Bu — "baliq tutish" (1.1 — har yangi muammoni o'zingiz hal). Eng yaxshi dasturchilar hujjatni sevadi (ishonchli, to'liq — birinchi manba).
Misol 2 — Yaxshi va yomon savol (2.5)
Maqsad: Bir muammoni yomon va yaxshi savol shaklida ko'rsatib, farqni anglash. Bu tez javob olishning kaliti.
MUAMMO: Next.js Server Action ishlamayapti
YOMON SAVOL:
"Server action ishlamayapti, nima qilay?"
nima ishlamayapti? xato bormi? kod qani? — javob qiyin
YAXSHI SAVOL:
## Muammo
Next.js Server Action forma yuborilganda ishlamayapti (hech narsa bo'lmaydi).
## Nima qilmoqchiman
Forma yuborilganda mahsulot DB'ga saqlanishi kerak.
## Kod
```tsx
// actions.ts
export async function createProduct(formData: FormData) { // "use server" yo'q!
await db.product.create({ data: { name: formData.get("name") } });
}Kutilgan vs Haqiqiy
Kutilgan: mahsulot saqlanadi. Haqiqiy: hech narsa bo'lmaydi, console'da xato yo'q.
Sinab ko'rdim
- formData to'g'ri (console.log ko'rsatdi)
- DB ulanishi ishlaydi (boshqa joyda)
JAVOB DARROV: "use server" direktivasi yo'q (faylda yoki funksiyada — 13.5)
**Bu nima ko'rsatadi:** Bu — yaxshi va yomon savol farqi (tez javob — 2.5). **Muammo**: Next.js Server Action ishlamayapti. **Yomon savol**: "Server action ishlamayapti, nima qilay?" — javob beruvchi **hech narsa bilmaydi** (nima ishlamayapti? — xato? hech narsa? noto'g'ri natija? — kod qani? — qanday urindingiz?) — javob berish uchun **so'rab olishi** kerak ("xato bormi?", "kod ko'rsata olasizmi?") — vaqt ketadi (oldinga-orqaga), yoki taxmin (noto'g'ri javob). **Yaxshi savol** (strukturali — 2.5): (1) **muammo** (Server Action forma yuborilganda ishlamayapti — hech narsa bo'lmaydi — aniq); (2) **nima qilmoqchiman** (mahsulot DB'ga saqlanishi — maqsad — kontekst); (3) **kod** (`actions.ts` — `createProduct` — `"use server"` yo'q! — minimal reproduce — javob beruvchi **darrov** ko'radi); (4) **kutilgan vs haqiqiy** (kutilgan — saqlanadi; haqiqiy — hech narsa, console'da xato yo'q — farq); (5) **sinab ko'rdim** (formData to'g'ri, DB ishlaydi — o'zingiz urinish — qaytarilmasin). **Natija**: javob beruvchi kodni ko'radi `"use server"` yo'q (13.5: Misol 2 — Server Action direktivasi) **darrov** javob ("use server qo'sh"). **Farq**: yomon savol — javob beruvchi taxmin/so'rab olishi kerak (vaqt, noto'g'ri); yaxshi savol — javob beruvchi **darrov** muammoni ko'radi (kod, kontekst, kutilgan/haqiqiy — hammasi bor) tez, aniq javob. **Nega bu muhim**: yaxshi savol — **hurmat** (javob beruvchi vaqtini tejash — oldinga-orqaga so'ramaydi) va **samaradorlik** (tez javob — siz ham, javob beruvchi ham). Bu Stack Overflow, jamoa, va AI'ga (yaxshi savol — yaxshi AI javob — kontekst bilan). **Minimal reproduce** (kod — 15.5: 2.4) — eng muhim (javob beruvchi kodni ko'rsa — darrov topadi). **Sinab ko'rdim** (o'zin urinish) — qaytarilishni oldini oladi ("formData to'g'rimi?" — "ha, sinadim"). Va o'zingiz savolni tayyorlaganda (kontekst, kod, kutilgan/haqiqiy — yozaganda) **ko'pincha o'zingiz topasiz** (rubber duck — 15.5: 2.4 — savolni aniqlashda). Yaxshi savol — kommunikatsiya ko'nikmasi (aniq, to'liq — tez javob).
### Misol 3 — README yozish (2.4)
** Maqsad:** Loyiha uchun aniq, foydali README yozish. Bu loyihaning "yuzi" (boshqalar birinchi ko'radi).
```markdown
# MyShop — Onlayn Do'kon
Next.js bilan qurilgan to'liq full-stack e-commerce ilova: mahsulot katalogi,
savat, buyurtma, to'lov (Stripe), admin panel.
## Texnologiyalar
- **Frontend:** Next.js 15 (App Router), TypeScript, Tailwind
- **Backend:** Server Actions, Prisma, PostgreSQL
- **Auth:** Auth.js (Google + email)
- **To'lov:** Stripe
## Ishga tushirish
```bash
# 1. Klonlash va paketlar
git clone https://github.com/user/myshop.git
cd myshop && npm install
# 2. Environment (.env.local — .env.example'dan)
cp .env.example .env.local # va qiymatlarni to'ldir (DB, Stripe, Auth)
# 3. DB sozlash
npx prisma migrate dev
npx prisma db seed
# 4. Ishga tushirish
npm run dev # http://localhost:3000Struktura
app/— sahifalar (App Router)components/— UI komponentlarlib/— db, auth, utilsprisma/— DB sxema
Skriptlar
npm run dev— developmentnpm run build— production buildnpm test— testlar
**Bu nima ko'rsatadi:** Bu — aniq, foydali README (loyihaning "yuzi" — 2.4). README strukturasi boshqa dasturchi (yoki kelajakdagi siz, yoki open source'da — 15.8 — har kim) loyihani **tez** tushunadi va ishga tushiradi: (1) **nomi + tavsif** ("MyShop — Onlayn Do'kon" + qisqa — nima qiladi: e-commerce, mahsulot, savat, to'lov — bir paragraf — o'qigan darrov tushunadi); (2) **texnologiyalar** (stack — Next.js, Prisma, Auth.js, Stripe — kim qiziqsa, texnologiyaga qarab biladi); (3) **ishga tushirish** (eng muhim — qadamlar: klon install env DB dev — boshqa dasturchi **darrov** ishga tushira oladi — `npm install`, `migrate`, `dev` — aniq buyruqlar); (4) **struktura** (asosiy papkalar — `app/`, `components/`, `lib/` — kod qaerda — yo'naltirish); (5) **skriptlar** (`dev`, `build`, `test` — qaysi buyruq nima). **Nega bu muhim**: README — loyihaning **birinchi taassuroti** (open source'da — odamlar README'ni ko'rib, ishlatadimi/hissa qo'shadimi qaror qiladi — 15.8; jamoada — yangi a'zo README bilan boshlanadi; kelajakdagi siz — 6 oydan keyin "qanday ishga tushirardim?" — README). **Yaxshi README** = loyiha ishlatish/davom ettirish **oson** (aniq qadamlar — darrov ishga tushadi); **yomon/yo'q README** = loyiha **foydasiz** (qanday ishga tushirish noaniq — boshqalar tashlab ketadi — hatto kod zo'r bo'lsa ham). **Ishga tushirish** qismi eng muhim (aniq buyruqlar — boshqa dasturchi kopiyalab ishga tushiradi — `git clone`, `npm install`, `npm run dev`). **Aniqlik** (2.4) — har qadam aniq (taxmin yo'q — `cp .env.example .env.local` — aniq). Bu texnik yozishning eng keng turi (har loyiha README bilan). README yozish — kod yozish kabi muhim (kod — nima; README — qanday ishlatish, ishga tushirish — kontekst). Professional loyiha (va portfel — 15.8) — yaxshi README bilan (loyihani **ishlatib bo'ladigan** qiladi).
### Misol 4 — AI'ni to'g'ri ishlatish (2.3)
** Maqsad:** AI yordamchisini tanqidiy, tekshirish bilan ishlatish. Bu AI'ning kuchidan foydalanish, lekin xatosidan saqlanish.
```markdown
VAZIFA: regex yozish (email validatsiya)
YOMON (ko'r-ko'rona):
AI'dan regex so'ra ko'chir ishlatib yubor (tushunmasdan)
AI regex noto'g'ri/to'liq emas bo'lishi mumkin (edge case) — bilmaysiz
YAXSHI (tanqidiy, tekshirish):
1. SO'RA + TUSHUNTIRISHNI: "email regex yoz va HAR QISMINI tushuntir"
AI: /^[^@]+@[^@]+\.[^@]+$/ + qism-qism izoh
2. TUSHUN: har qism nima (^, [^@]+, @, \.)
3. TEKSHIR (eng muhim): test holatlar bilan sinab ko'r
"a@b.com" , "noto'g'ri" , "a@b" (edge case)
4. HUJJAT bilan tasdiqla: MDN regex (rasmiy — 2.2)
5. ALTERNATIVA: "Zod email validatsiyasi yaxshiroqmi?" (so'ra — kontekst)
ko'pincha tayyor kutubxona (Zod .email()) regex'dan yaxshi (11.10)
XULOSA: AI — TEZ yordam, lekin TUSHUN + TEKSHIR + tasdiqla (ko'r-ko'rona emas)Bu nima ko'rsatadi: Bu — AI'ni to'g'ri (tanqidiy, tekshirish bilan) ishlatish 2.3-bob. Vazifa: email validatsiya regex (murakkab — AI yaxshi yordam beradi). Yomon yo'l (ko'r-ko'rona): AI'dan regex so'ra ko'chir ishlat (tushunmasdan) — AI regex noto'g'ri yoki to'liq emas bo'lishi mumkin (regex murakkab — edge case'larni qamramaydi — masalan a@b (domen'siz) o'tib ketishi mumkin) — siz bilmaysiz (tushunmagansiz — tekshirmagansiz). Yaxshi yo'l (tanqidiy — 2.3): (1) so'ra + tushuntirishni ("email regex yoz va har qismini tushuntir" — AI kod + qism-qism izoh — o'rganish uchun); (2) tushun (har qism nima — ^, [^@]+, @, \. — endi regex'ni tushunasiz); (3) tekshir (eng muhim — test holatlar bilan — "a@b.com" , "noto'g'ri" , "a@b" — edge case'lar — AI regex to'g'rimi); (4) hujjat bilan tasdiqla (MDN regex — rasmiy — 2.2 — AI javobni tasdiqla); (5) alternativa ("Zod email validatsiyasi yaxshiroqmi?" — so'ra — kontekst — ko'pincha tayyor kutubxona (Zod .email() — 11.10) qo'lda regex'dan yaxshi — sinagan, edge case'lar qamrangan). Xulosa: AI — tez yordam (regex, tushuntirish, namuna), lekin tushun + tekshir + tasdiqla (ko'r-ko'rona emas). Nega tanqidiy: AI kuchli (tez tushuntirish, namuna, debug), lekin xato qilishi mumkin (hallucination — 2.3 — ishonchli noto'g'ri javob — ayniqsa regex, aniq API, yangi narsada). Ko'r-ko'rona ishonish — xavfli (noto'g'ri kod — bilmasdan). To'g'ri: AI yordam (tez), lekin tushunish (nega — o'rgan), tekshirish (test — to'g'rimi), tasdiqlash (hujjat — rasmiy), alternativani so'rash (yaxshiroq usul bormi — masalan Zod regex'dan yaxshi). AI — vosita (mustaqil o'rganish — 2.1 — usuli — javob beruvchi emas, yordamchi). Eng keng xato — AI kodni ko'r-ko'rona ko'chirib ishlatish (ishlaydi yoki yo'q — bilmaysiz — debug/moslashtira olmaysiz, noto'g'ri bo'lishi mumkin). To'g'ri — AI bilan o'rgan (tushunib), tekshirib (test/hujjat). Bu — zamonaviy ko'nikma (AI keng — to'g'ri ishlatish — tez yordam + tanqidiy tekshirish). AI dasturchini almashtirmaydi (tushunish, tekshirish, qaror — odam) — kuchaytiradi (tez yordam — lekin nazorat odamda).
Misol 5 — Mustaqil muammo hal qilish (2.1, 2.6)
Maqsad: Yangi muammoni mustaqil (so'ramasdan) hal qilish jarayonini ko'rsatish. Bu senior dasturchining ish usuli.
MUAMMO: "Prisma migration xatosi: column already exists"
MUSTAQIL HAL QILISH (so'ramasdan oldin — 2.1):
1. XATO XABARINI O'QI (15.5: 2.4):
"column already exists" — ustun allaqachon bor (migration ikki marta?)
2. QIDIRISH (aniq — 2.3):
Google: "prisma migration column already exists" (xato xabarini ko'chir)
Stack Overflow + Prisma GitHub issues (boshqalar ko'rgan)
3. RASMIY HUJJAT 2.2-bob:
prisma.io/docs "Migration troubleshooting"
migration holati buzilgan (drift) — yechim: reset yoki resolve
4. TUSHUN (sabab):
migration tarixi DB bilan mos emas (qo'lda o'zgarish? yoki ikki migration)
5. EKSPERIMENT (xavfsiz — dev DB):
prisma migrate resolve / reset (dev'da — production EMAS)
6. HAL QILINDI + ESLATMA:
yozib qo'y (keyingi safar — yoki jamoa bilsin)
AGAR 30 daqiqa qiynalsa SO'RA (yaxshi savol — 2.5; o'zing urinishni ko'rsat)
Mustaqil — xato o'qi qidir hujjat tushun eksperiment hal
Avval o'zing (so'ramasdan), uzoq qiynalsa yaxshi savol (15.5: 2.7)Bu nima ko'rsatadi: Bu — mustaqil muammo hal qilish (senior dasturchi ish usuli — 2.1, 2.6). Muammo: Prisma migration xatosi ("column already exists"). Mustaqil hal (so'ramasdan oldin — 2.1): (1) xato xabarini o'qi (15.5: 2.4 — "column already exists" — ustun allaqachon bor — migration ikki marta yoki holat buzilgan — xabar sababni ko'rsatadi); (2) qidirish (aniq — 2.3 — Google'ga xato xabarini ko'chir — "prisma migration column already exists" — ko'pincha boshqa kishi ko'rgan — Stack Overflow, Prisma GitHub issues); (3) rasmiy hujjat (2.2 — prisma.io/docs "Migration troubleshooting" — ishonchli, to'liq yechim — migration drift); (4) tushun (sabab — migration tarixi DB bilan mos emas — qo'lda o'zgarish yoki ikki migration); (5) eksperiment (xavfsiz — dev DB'da — prisma migrate resolve/reset — production emas — ehtiyot — 14.9); (6) hal qilindi + eslatma (yozib qo'y — keyingi safar yoki jamoa bilsin — texnik yozish — 2.4). Agar 30 daqiqa qiynalsa so'ra (yaxshi savol — 2.5; o'zingiz urinishni ko'rsat — "shularni sinadim" — qaytarilmasin). Nega bu senior usuli: senior avval o'zingiz hal qiladi (xato o'qi qidir hujjat tushun eksperiment — mustaqil — 2.1), faqat uzoq qiynalsa so'raydi (yaxshi savol bilan — 2.5; 15.5: 2.7 — balans). Junior — har muammoga darrov so'raydi (boshqalarga bog'liq — mustaqillik kam). Mustaqil hal — (1) o'rganish (har muammoni o'zingiz hal — o'rgan — keyingi safar biladi); (2) mustaqillik (boshqalarga bog'liq emas — o'zingiz topasiz); (3) hurmat (har kichik narsaga so'ramaslik — boshqalar vaqti). Jarayon (xato o'qi qidir hujjat tushun eksperiment hal) — har muammoga (tizimli mustaqil hal — 15.5 debug + 15.6 o'rganish). Balans (2.1, 15.5: 2.7) — o'zingiz urin (mustaqillik), lekin uzoq qiynalsa so'ra (vaqt isrof qilmaslik — yaxshi savol bilan). Eslatma yozish (6-qadam) — kelajak uchun (o'zingiz yoki jamoa — bir marta hal — qayta o'rganmaslik). Bu — mustaqil o'rganish ko'nikmasi amalda (o'zingiz topish — hujjat, qidirish, eksperiment — senior belgisi). Texnologiya o'zgaradi (Prisma xatosi — boshqa muammo ertaga), lekin usul (xato o'qi qidir hujjat tushun) qoladi (1.1 — baliq tutish).
Misol 6 — ADR (arxitektura qarorini hujjatlash) (2.4, 2.7)
Maqsad: Jamoada muhim texnik qarorni yozma qoldirish (ADR — Architecture Decision Record). Bu "nega bunday qildik?" degan savolga kelajakda javob beradi.
# ADR-007: Ma'lumotlar bazasi uchun PostgreSQL tanlandi
- **Sana:** 2026-03-14
- **Holat:** Qabul qilindi (Accepted)
## Kontekst (muammo)
E-commerce ilovaga ma'lumotlar bazasi kerak. Ma'lumot bog'langan
(buyurtma mahsulot foydalanuvchi), tranzaksiya muhim (to'lov),
va murakkab so'rovlar bo'ladi (hisobotlar, filtrlash).
## Ko'rib chiqilgan variantlar
- **PostgreSQL** (relatsion) — kuchli tranzaksiya, murakkab so'rov, JSON qo'llab-quvvatlash.
- **MongoDB** (hujjat) — moslashuvchan sxema, lekin tranzaksiya cheklangan.
- **MySQL** (relatsion) — mashhur, lekin ilg'or imkoniyatlar kamroq.
## Qaror
**PostgreSQL** tanlandi. Ma'lumot bog'langan va tranzaksiya muhim
bo'lgani uchun relatsion baza mos; Postgres eng boy imkoniyatli (JSONB,
ilg'or indeks, kuchli tranzaksiya).
## Oqibatlar
- (+) Ishonchli tranzaksiya, murakkab so'rov oson.
- (+) Prisma bilan yaxshi integratsiya (9-QISM).
- (−) NoSQL-cha "sxemasiz" moslashuvchanlik yo'q (migration kerak).Bu nima ko'rsatadi: Bu — ADR (Architecture Decision Record — arxitektura qarorini hujjatlash), texnik yozishning muhim turi 2.4-bob va jamoaviy muloqot vositasi 2.7-bob. Muammo: loyihada "nega Postgres, MongoDB emas?" degan katta qaror qabul qilinadi — lekin oradan olti oy o'tgach, hech kim nega shunday qilinganini eslamaydi (yoki yangi a'zo tushunmaydi — "MongoDB'ga o'tsakmi?" degan takroriy bahs). Yechim — qarorni qabul qilingan payt qisqa hujjatga yozib qo'yish. ADR strukturasi qat'iy va sodda: (1) sarlavha + sana + holat (raqamli — ADR-007; holat — Taklif/Qabul qilindi/Bekor qilindi); (2) kontekst (qanday muammo yoki ehtiyoj bu qarorni talab qildi — bog'langan ma'lumot, tranzaksiya); (3) ko'rib chiqilgan variantlar (Postgres, MongoDB, MySQL — har birining afzallik/kamchiligi — muqobillar ko'rilganini ko'rsatadi); (4) qaror (nima tanlandi va nega — asosiy sabab); (5) oqibatlar (ijobiy va salbiy natijalar — halol: har qarorda o'zaro murosa bor). Nega bu muhim: kod "nima qilinganini" ko'rsatadi, lekin "nega shu qaror qabul qilinganini" ko'rsatmaydi — ADR aynan shuni saqlaydi. Bu (1) kelajakdagi o'zingizga va jamoaga kontekst beradi ("nega Postgres? — mana, ADR-007"); (2) takroriy bahslarni to'xtatadi (qaror va sababi yozilgan); (3) yangi a'zoni tez tanishtiradi (loyiha qarorlari tarixi). ADR — odatda loyihada docs/adr/ papkasida saqlanadi (kod bilan bir repozitoriyda — kod bilan birga o'zgaradi — 2.8). Bu texnik yozishning strategik turi: kunlik README (Misol 3) loyihani ishlatishga, ADR esa loyihaning fikrlash tarixini saqlashga xizmat qiladi.
5. To'g'ri va noto'g'ri holatlar
1) Manba
to'g'ridan AI/SO (yuzaki, eski — 2.2)
rasmiy hujjat birinchi (ishonchli — Misol 1)2) AI
ko'r-ko'rona ishonish (hallucination — 2.3)
tushun + tekshir + tasdiqla (Misol 4)3) Savol
"ishlamayapti, yordam" (kontekstsiz — 2.5)
kontekst + kod + kutilgan/haqiqiy (Misol 2)4) Mustaqillik
har muammoga so'rash (junior — bog'liq)
o'zing urin, uzoq qiynalsa so'ra (Misol 5)5) Hujjat
boshdan oxirgacha (vaqt)
keraklisini qidir (API ref, Ctrl+F — 2.2)6) Texnik yozish
README yo'q (loyiha ishlatib bo'lmaydi)
aniq README (ishga tushirish — Misol 3)6. Keng tarqalgan xatolar va yechimlari
Xato 1 — Hujjat o'qimaslik
Sababi: to'g'ridan AI/SO 2.2-bob. Yechimi: rasmiy hujjat birinchi (Misol 1).
Xato 2 — AI'ga ko'r-ko'rona ishonish
Sababi: tekshirmaslik (hallucination — 2.3). Yechimi: tushun + tekshir (Misol 4).
Xato 3 — Yomon savol
Sababi: kontekstsiz 2.5-bob. Yechimi: kontekst + kod + reproduce (Misol 2).
Xato 4 — Har narsaga so'rash
Sababi: mustaqillik kam 2.1-bob. Yechimi: avval o'zingiz urin (Misol 5).
Xato 5 — README yo'q
Sababi: texnik yozish e'tiborsiz 2.4-bob. Yechimi: aniq README (Misol 3).
Xato 6 — Yuzaki o'rganish
Sababi: kenglik > chuqurlik 2.6-bob. Yechimi: chuqur + amaliyot (loyiha).
Xato 7 — Eskirgan hujjat (kod o'zgardi, hujjat qoldi)
Sababi: hujjatni kod bilan yangilamaslik (2.8 — "keyin yozaman"). Yechimi: hujjatni o'sha PR'da yangila (kod bilan birga).
Xato 8 — Versiyaga e'tibor bermaslik
Sababi: blog/SO javobi qaysi versiya ekanini tekshirmaslik (2.2, 2.3). Yechimi: hujjatda versiyani, javobda sana/versiyani tekshir; yangilashdan oldin changelog.
Xato 9 — Noto'g'ri kanal (mayda narsaga meeting yoki muhim qarorni yozmaslik)
Sababi: asinxron/sinxron balansini bilmaslik 2.7-bob. Yechimi: oddiy — asinxron yoz; murakkab — meeting; muhim qaror — yozma qoldir (ADR — Misol 6).
7. Integratsiya — bu mavzu stack'ning qayerida uchraydi
- Barcha QISM: mustaqil o'rganish (har yangi mavzu — hujjat o'qish).
- Debugging 15.5-bob: xato o'qish, qidirish (muammo hal).
- Code review 15.2-bob: PR tavsifi (texnik yozish).
- Toza kod 15.1-bob: kommentariya (nega — texnik yozish).
- Open source 15.8-bob: README, hujjat, hamjamiyat (loyiha taqdimoti, hissa — 2.8).
- Jamoa: savol berish, hujjat, asinxron/sinxron muloqot (kommunikatsiya — 2.7).
- Arxitektura: muhim qarorni ADR bilan hujjatlash (nega — 2.4, Misol 6).
- Karyera: doimiy o'rganish, inglizcha texnik til (texnologiya o'zgaradi — 2.8).
8. Eng yaxshi amaliyotlar (best practices)
- Rasmiy hujjat birinchi (ishonchli — Misol 1).
- Hujjat: umumiy reference misol 2.2-bob.
- Qidirish aniq (xato xabarini ko'chir — 2.3).
- AI tekshir bilan (hallucination — Misol 4).
- Yaxshi savol (kontekst + kod + reproduce — Misol 2).
- Avval o'zingiz urin (mustaqillik — Misol 5).
- Aniq README (ishga tushirish — Misol 3).
- Amaliyot bilan o'rgan (kod + loyiha — 2.6).
- O'rgatib o'rgan (chuqur — Feynman — 2.6).
- Doimiy o'rganish (texnologiya o'zgaradi — 2.6).
- Yangilashdan oldin changelog o'qi (breaking change — 2.2).
- Hujjatni kod bilan birga yangila (eskirmasin — 2.8).
- To'g'ri kanal tanla (asinxron/sinxron; muhim qaror — ADR — 2.7).
- Texnik inglizchani o'rgan (asosiy manba tili — 2.8).
9. Amaliy loyiha: "Mustaqil O'rganish Mashqi"
Mustaqil o'rganish va texnik kommunikatsiyani mustahkamlash.
Maqsad
Yangi texnologiya/kutubxonani mustaqil o'rgan (hujjat bilan), va loyihaga README yoz.
Talablar (requirements)
- Yangi narsa: bilmagan kutubxona tanla (masalan Zustand yoki Drizzle).
- Hujjat: rasmiy doc o'qi (Getting Started reference — Misol 1).
- Eksperiment: kichik sinab ko'r (amaliyot).
- Qo'lla: loyihaga (tushunib).
- README: loyihaga aniq README (Misol 3).
- Qidirish: muammo bo'lsa — aniq qidir 2.3-bob.
- AI: ishlatsangiz — tekshir bilan (Misol 4).
- Eslatma: o'rganganingni yoz (o'zingiz uchun).
- Savol: kerak bo'lsa — yaxshi savol (Misol 2).
- O'rgatib: o'rganganingni tushuntir (Feynman — 2.6).
Maslahatlar (hint)
- Hujjat birinchi (Xato 1).
- AI tekshir (Xato 2).
- Yaxshi savol (Xato 3).
- O'zingiz urinib ko'ring (Xato 4).
- Amaliyot (chuqur — 2.6).
"Tayyor" mezonlari (acceptance criteria)
- Yangi narsani hujjatdan o'rgandim (mustaqil).
- Eksperiment + qo'lladim.
- Aniq README.
- AI/qidirish to'g'ri (tekshir bilan).
- O'rgatib bera olaman (chuqur).
Yechim kodi ataylab berilmagan — bu loyihani o'zingiz yozib ko'ring.
10. Xulosa va keyingi bobga ko'prik
Bu bobda mustaqil o'rganish va texnik kommunikatsiyani chuqur o'rgandik:
- Mustaqil o'rganish 2.1-bob; hujjat o'qish (rasmiy doc, changelog, versiya, spec/RFC — 2.2); qidirish/AI 2.3-bob; texnik yozish (README, ADR — 2.4); savol berish 2.5-bob; o'rganish strategiyasi 2.6-bob; texnik muloqot (asinxron/sinxron, demo — 2.7); hamjamiyat, inglizcha, hujjatni yangilash 2.8-bob.
Endi siz mustaqil o'rgana olasiz: rasmiy hujjat (birinchi manba), aniq qidirish, AI (tekshir bilan), va texnik kommunikatsiya (README, yaxshi savol). Bu — "baliq tutishni bilish" (har yangi narsani o'zingiz o'rganasiz — texnologiya o'zgaradi, usul qoladi).
Keyingi bob — 15.7-bob: System Design intervyu. Mustaqil o'rganishni bildik; endi muhim intervyu va arxitektura ko'nikmasini ko'ramiz: system design (katta tizimni loyihalash — masalan "Twitter/URL qisqartiruvchi qanday quriladi?"), yondashuv (talablar komponentlar miqyos), asosiy tushunchalar (load balancer, kesh, DB, queue — 9-QISM bilan), va intervyu strategiyasi. Bu — senior daraja va intervyu uchun muhim.
Foydalanilgan rasmiy/ishonchli manbalar
- Rasmiy hujjat namunalari — MDN Web Docs, React, Next.js, Prisma, TanStack Query rasmiy hujjatlari (yaxshi Getting Started / Guides / API Reference tuzilishi namunasi).
- Stack Overflow — "How to ask a good question" (yaxshi savol bo'yicha rasmiy qo'llanma); savol berish va baholash amaliyoti.
- Savol berish tamoyillari — "XY Problem" tushunchasi va "avval o'zingiz urinib ko'ring, keyin so'rang" madaniyati.
- README va texnik yozish — README strukturasi bo'yicha jamoa standartlari (tavsif, o'rnatish, foydalanish, struktura, hissa qo'shish).
- ADR (Architecture Decision Record) — arxitektura qarorlarini hujjatlash bo'yicha Michael Nygard tavsiya etgan format.
- Changelog / versiyalash — "Keep a Changelog" va Semantic Versioning (SemVer) tamoyillari; kutubxona migration guide'lari.
- Feynman texnikasi — o'rgatib o'rganish orqali chuqur tushunishga erishish usuli.
- Standartlar (spec/RFC) — MDN orqali ECMAScript, HTTP (RFC) va WHATWG standartlariga havolalar (birlamchi, rasmiy manba).
Izohlar (0)
Izoh yozish uchun kiring.
- Hozircha izoh yo'q. Birinchi bo'ling!