Mundarija (22)
- 1. Kirish va motivatsiya
- 2. Nazariya — chuqur tushuntirish
- 2.1. Nega ochiq kodga hissa
- 2.2. Mos loyiha va issue topish
- 2.3. Hissa turlari (faqat kod emas)
- 2.4. Birinchi PR jarayoni
- 2.5. Maintainer bilan ishlash
- 2.6. Hissa amaliyoti
- 2.7. Hissa tuzoqlari
- 2.8. Ochiq kod — o'rganish va portfolio ko'prigi
- 3. Tez ma'lumotnoma
- 4. Batafsil misollar
- Misol 1 — Hissa turlari (faqat kod emas)
- Misol 2 — Mos loyiha tanlash
- Misol 3 — Birinchi PR jarayoni
- Misol 4 — Maintainer bilan (sabr)
- 5. To'g'ri va noto'g'ri tushunishlar
- 6. Keng tarqalgan xatolar va yechimlari
- 7. Integratsiya — bu bilim qayerda kerak bo'ladi
- 8. Eng yaxshi amaliyotlar
- 9. Amaliy topshiriq
- Xulosa
31.7-dars: Ochiq kodga hissa qo'shish
31-QISM — KARYERA VA KATTA LOYIHALAR · 7-dars
1. Kirish va motivatsiya
Git jamoa 31.5-bob va review 31.6-bob ni ko'rdik. Endi ularni eng kuchli portfolio quroliga aylantiramiz: ochiq kodga hissa qo'shish (open source contribution). Siz kunda ishlatadigan kutubxonalar (requests, pandas, FastAPI) ochiq kod — har kim hissa qo'sha oladi. Bunga qatnashish ajoyib foyda beradi: real, katta kod bazasida ishlash tajribasi, tajribali dasturchilardan review olish (o'rganish), va portfolioda kuchli isbot ("men mashhur loyihaga PR qo'shdim"). Ko'pchilik "mening bilimim yetmaydi" deb qo'rqadi — lekin hissa faqat kod emas: hujjat tuzatish, xato xabar berish, test yozish ham qadrli. Bu dars ochiq kodga qanday qo'shilishni o'rgatadi: mos loyiha topish, birinchi PR, maintainer bilan ishlash.
Ochiq kodga hissa — open source loyihalarga qo'shilish amaliyoti: mos loyiha topish (ishlatadigan/qiziqarli, "good first issue"), hissa turlari (kod, hujjat, test, xato xabari — faqat kod emas), birinchi PR (kichik boshla — hujjat/kichik tuzatish), jamoa qoidalari (CONTRIBUTING.md, uslub), maintainer bilan (sabr, hurmat, review qabul — 31.6). Foydalanish: tajriba, portfolio, o'rganish. Bu 31.5 (Git jamoa), 31.6 (review) ni real dunyoga olib chiqadi. Bu 31.6 (review), 31.8 (portfolio) bilan bog'liq. Ochiq kod — real tajriba, portfolio. Kichik boshla.
Real vaziyat. Yosh dasturchi ochiq kodga qo'shilmoqchi edi, lekin qo'rqardi ("bilimim yetmaydi"). Kichik boshladi: ishlatadigan kutubxonasida hujjat xatosi (typo) topdi — tuzatdi (birinchi PR — oson, tasdiqlandi). Keyin "good first issue" (yangilar uchun belgilangan oson vazifa) oldi — kichik xato tuzatdi. Maintainer review berdi (31.6 — o'rgandi, tajribali dasturchidan). Asta murakkabroq (test, funksiya). Portfolioda: "requests loyihasiga hissa qo'shganman" — kuchli isbot. Ochiq kod — kichik boshlab, o'sadi. Real tajriba.
Bu darsda ochiq kodga hissa qo'shishni o'rganamiz.
Bu darsda:
- Nega ochiq kodga hissa
- Mos loyiha va issue topish
- Hissa turlari (faqat kod emas)
- Birinchi PR jarayoni
- Maintainer bilan ishlash
- Hissa amaliyoti
- Hissa tuzoqlari
- Amaliy: hissa modeli
ℹ Ochiq kod real loyiha/jarayon talab qiladi; misollar hissa mantiqini (deterministik) modellashtiradi.
2. Nazariya — chuqur tushuntirish
2.1. Nega ochiq kodga hissa
Uch katta foyda:
OCHIQ KODGA HISSA — foyda:
1. REAL TAJRIBA
katta, haqiqiy kod bazasi (o'quv loyiha emas)
real muammolar, real jamoa
2. O'RGANISH
tajribali dasturchilardan review (31.6)
yaxshi kod, amaliyot ko'rasiz
3. PORTFOLIO
ommaviy isbot ("men X loyihaga hissa qo'shdim")
ish beruvchi ko'radi (real ish)Nega ochiq kodga hissa — uch katta foyda: real tajriba (katta, haqiqiy kod bazasi — o'quv loyiha emas, real muammo/jamoa), o'rganish (tajribali dasturchilardan review — 31.6, yaxshi kod/amaliyot ko'rasiz), portfolio (ommaviy isbot — "X loyihaga hissa qo'shdim", ish beruvchi ko'radi — 31.8). Sabab: o'quv loyiha (yakka) cheklangan; ochiq kod real (katta kod, real jamoa, tajribali review); bu tajriba/o'rganish/portfolio (ish uchun kuchli). Ishlatadigan kutubxonalar (requests, pandas) ochiq — hissa qo'shish mumkin. Nega — real tajriba, o'rganish, portfolio. Real dunyo. Kuchli isbot.
2.2. Mos loyiha va issue topish
Qayerdan boshlash:
MOS LOYIHA:
ishlatadiganing (bilasan, qiziqasan)
faol (yaqinda commit — o'lik emas)
do'stona (CONTRIBUTING.md, javob beradi)
"GOOD FIRST ISSUE":
yangilar uchun belgilangan oson vazifa (teg)
GitHub'da qidir: label:"good first issue"
→ kichik, aniq, boshlanish uchun ideal Mos loyiha va issue topish — qayerdan boshlash: mos loyiha (ishlatadiganing — bilasan/qiziqasan, faol — yaqinda commit, o'lik emas, do'stona — CONTRIBUTING.md bor, javob beradi), "good first issue" (yangilar uchun belgilangan oson vazifa — GitHub teg, label:"good first issue" bilan qidir — kichik, aniq, boshlanish uchun ideal). Sabab: noto'g'ri loyiha (juda katta/murakkab, o'lik, do'stona emas) — qiyin/ruhsizlantiradi; mos loyiha (bilasan, faol, do'stona) — oson boshlanish; "good first issue" maxsus yangilar uchun (murakkab emas). Ishlatadiganing — bilim bor (tushunasan). Mos loyiha — ishlatadigan, faol, do'stona. Good first issue. Kichik boshla.
2.3. Hissa turlari (faqat kod emas)
Ko'p yo'l bor:
HISSA TURLARI (faqat kod emas!):
hujjat — typo, tushuntirish, misol qo'shish (oson boshlanish)
xato xabar — bug report (aniq, takrorlanadigan)
test — qamrov oshirish
kod — xato tuzatish, xususiyat
javob — savollarga (issue, forum)
tarjima — hujjat boshqa tilga
→ har hissa qadrli (kod eng qiyin — boshqadan boshla)Hissa turlari (faqat kod emas) — ko'p yo'l: hujjat (typo, tushuntirish, misol — eng oson boshlanish), xato xabari (bug report — aniq, takrorlanadigan qadamlar), test (qamrov oshirish — 20-qism), kod (xato tuzatish, xususiyat — eng qiyin), javob (savollarga — issue/forum), tarjima (hujjat boshqa tilga). Sabab: ko'pchilik "kod yetmaydi" deb qo'rqadi; lekin hissa kod emas ham (hujjat, test, xabar — qadrli, oson); maintainerlar har hissaga minnatdor (ular vaqt topmaydi). Kod eng qiyin — boshqadan boshla (hujjat — oson, o'rgatadi). Hissa — hujjat, xabar, test, kod. Faqat kod emas. Oson boshla.
2.4. Birinchi PR jarayoni
Birinchi hissa qadamlari:
1. Fork (loyihani o'z hisobingga nusxala)
2. Clone (mahalliy)
3. Branch (feature/tuzatish — 31.5)
4. O'zgartir (kichik, aniq)
5. Test (o'tsin — sindirmasin)
6. Push + PR (aniq tavsif — nima, nega)
7. Review (maintainer — sabr, tuzat — 31.6)
8. Merge (tasdiqlansa) Birinchi PR jarayoni — hissa qadamlari: fork (loyihani o'z GitHub hisobingga nusxala), clone (mahalliy — 31.5 Git), branch (feature/tuzatish — o'z tarmoq), o'zgartir (kichik, aniq — kichik PR 31.5), test (o'tsin — sindirmasin, 20-qism), push + PR (aniq tavsif — nima o'zgardi, nega, issue havola), review (maintainer ko'radi — sabr, izoh bo'yicha tuzat — 31.6), merge (tasdiqlangach). Sabab: ochiq kodda to'g'ridan push yo'q (fork — o'z nusxa, PR — so'rov); jarayon standart (fork → branch → PR → review — 31.5). Birinchi PR kichik (hujjat/kichik tuzatish — oson tasdiqlanadi, ishonch). Birinchi PR — fork, branch, o'zgartir, test, PR. Kichik. Standart.
2.5. Maintainer bilan ishlash
Sabr va hurmat:
MAINTAINER (loyiha boshqaruvchisi):
ko'ngilli (bepul, vaqt topmaydi — sabr)
review beradi (31.6 — qabul qil, o'rgan)
SEN:
sabr (javob kechikishi mumkin — bir hafta)
hurmat (ular vaqt sarflaydi)
qoidalarga amal (CONTRIBUTING.md, uslub)
izoh qabul (review — o'sish, 31.6) Maintainer bilan ishlash — sabr va hurmat: maintainer (loyiha boshqaruvchisi — ko'ngilli, ko'pincha bepul, vaqt topmaydi), sabr (javob kechikishi mumkin — kunlar/hafta, ular band), hurmat (ular vaqt sarflaydi — minnatdor bo'l), qoidalar (CONTRIBUTING.md, uslub — loyiha qoidalariga amal), review qabul (izoh — o'sish, 31.6, shaxsiy olma). Sabab: maintainer ko'ngilli (majburiyat yo'q — hurmat, sabr); qoidalar bor (loyiha standarti — o'qi, amal qil); review — o'rganish 31.6-bob. Yomon: sabrsiz (nega javob yo'q?), qoida buzish (uslub e'tiborsiz), izoh rad (ego). Maintainer — sabr, hurmat, qoida, izoh qabul. Ko'ngilli. Hurmat.
2.6. Hissa amaliyoti
Ochiq kod hissa amaliyotlari: kichik boshla (hujjat/typo — oson, ishonch); ishlatadiganing (bilim bor — tushunasan); "good first issue" (yangilar uchun); CONTRIBUTING.md o'qi (qoida, jarayon); issue muhokama (kod yozishdan oldin — maintainer bilan kelish, men buni olaman?); kichik PR (aniq, review oson — 31.5); test (o'tsin — sindirmasin); sabr (maintainer — kechikish); review qabul (o'rgan — 31.6). Tuzoqlar: juda katta birinchi PR (murakkab — rad), muhokamasiz katta ish (maintainer istamasligi mumkin — vaqt behuda), qoida o'qimaslik (rad), sabrsizlik (maintainer bosim), izoh rad (ego). Amaliyot — kichik, ishlatadigan, muhokama, sabr. Ochiq kod — kichik boshla, o'sadi.
2.7. Hissa tuzoqlari
Ochiq kod hissa tuzoqlari: juda katta birinchi PR (yangi xususiyat — murakkab, maintainer ehtiyot, rad ehtimoli; kichik boshla); muhokamasiz katta ish (issue'da kelishmasdan katta PR — maintainer istamasligi mumkin, vaqt behuda; avval men olaman?); qoida e'tiborsizlik (CONTRIBUTING.md o'qimaslik — uslub/jarayon buzish, rad); sabrsizlik (maintainer ko'ngilli, vaqt yo'q — bosim yomon); izoh rad (review — ego, o'sish yo'q — 31.6); o'lik loyiha (javob yo'q — vaqt behuda, faol loyiha tanla); "mukammal" kutish (birinchi PR qo'rquv — kichik boshla, hech kim mukammal emas). Sabab: ochiq kod ko'ngilli jamoa (hurmat, sabr, qoida); noto'g'ri — rad/behuda, to'g'ri — hissa/o'sish. Yechim: kichik, muhokama, qoida, sabr, izoh qabul. Tuzoqlar — katta PR, muhokamasiz, qoida buzish, sabrsiz.
2.8. Ochiq kod — o'rganish va portfolio ko'prigi
Ochiq kodga hissa asosiy g'oyasi — o'rganish va portfolio ko'prigi: ochiq kod yosh dasturchi uchun noyob imkoniyat — real kod bazasida (o'quv emas), tajribali dasturchilar bilan (review — o'rganish), ommaviy natija (portfolio — isbot). Bu 31.5 (Git jamoa) va 31.6 (review) ni real dunyoga olib chiqadi (haqiqiy loyihada amaliyot). Kichik boshlash (hujjat/typo → good first issue → kod) qo'rquvni yengadi ("bilimim yetmaydi" — kichik hissa ham qadrli). Hissa kod emas ham (hujjat, test, xabar — hamma qadrli). Portfolioda 31.8-bob kuchli ("mashhur loyihaga PR"), suhbatda (31.9-12) mavzu. Bu 31-qism (karyera) ning eng amaliy o'sish yo'li. Ochiq kod — o'rganish + portfolio. Real dunyo. Kichik boshla, o'sadi.
3. Tez ma'lumotnoma
NEGA OCHIQ KODGA HISSA:
1. Real tajriba (katta kod, real jamoa)
2. O'rganish (tajribali review — 31.6)
3. Portfolio (ommaviy isbot — 31.8)
MOS LOYIHA: ishlatadigan · faol · do'stona (CONTRIBUTING.md)
"GOOD FIRST ISSUE": yangilar uchun (GitHub teg)
HISSA TURLARI (faqat kod emas):
hujjat (oson) · xato xabar · test · kod · javob · tarjima
BIRINCHI PR:
fork → clone → branch → o'zgartir → test → PR → review → merge
MAINTAINER: sabr · hurmat · qoidalarga amal · izoh qabul
QOIDA: kichik boshla · ishlatadigan · muhokama · sabr · izoh qabulOchiq kod xulosasi
Ochiq kodga hissa — real tajriba + o'rganish + portfolio
Mos loyiha — ishlatadigan, faol, do'stona ("good first issue")
Hissa turlari — hujjat/test/xabar/kod (faqat kod emas!)
Birinchi PR — fork → branch → PR → review (kichik boshla)
Maintainer — ko'ngilli (sabr, hurmat, qoida, izoh qabul)4. Batafsil misollar
Ochiq kod real loyiha/jarayon talab qiladi; misollar hissa mantiqini (deterministik) modellashtiradi.
Misol 1 — Hissa turlari (faqat kod emas)
"""Hissa turlari: kod emas ham qadrli (model)."""
HISSA_TURLARI = {
"hujjat (typo)": {"qiyinlik": 1, "boshlanish": True},
"xato xabar": {"qiyinlik": 1, "boshlanish": True},
"test": {"qiyinlik": 2, "boshlanish": True},
"kod (tuzatish)": {"qiyinlik": 3, "boshlanish": False},
}
def main() -> None:
print("=== 1. Hissa turlari (qiyinlik 1-3) ===")
for tur, info in HISSA_TURLARI.items():
print(f" {tur:18} qiyinlik {info['qiyinlik']}")
print("\n=== 2. Boshlanish uchun ===")
oson = [t for t, i in HISSA_TURLARI.items() if i["boshlanish"]]
print(f" {oson}")
print("\n=== 3. Kod eng qiyin ===")
print(" hujjat/xabar/test — oson boshlanish")
print("\n=== 4. Hamma qadrli ===")
print(" maintainer har hissaga minnatdor")
print(" ⭐ Hissa turlari — faqat kod emas")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. Hissa turlari (qiyinlik 1-3) ===
hujjat (typo) qiyinlik 1
xato xabar qiyinlik 1
test qiyinlik 2
kod (tuzatish) qiyinlik 3
=== 2. Boshlanish uchun ===
['hujjat (typo)', 'xato xabar', 'test']
=== 3. Kod eng qiyin ===
hujjat/xabar/test — oson boshlanish
=== 4. Hamma qadrli ===
maintainer har hissaga minnatdor
⭐ Hissa turlari — faqat kod emasNima ko'rsatdi: 2.3-bo'lim.
Misol 2 — Mos loyiha tanlash
"""Mos loyiha: ishlatadigan, faol, do'stona (model)."""
def loyiha_baho(loyiha: dict) -> str:
ball = loyiha["ishlatadigan"] + loyiha["faol"] + loyiha["dostona"]
if ball >= 2:
return "mos (boshlash yaxshi)"
return "mos emas (boshqasini izla)"
def main() -> None:
yaxshi = {"ishlatadigan": 1, "faol": 1, "dostona": 1}
yomon = {"ishlatadigan": 0, "faol": 0, "dostona": 1}
print("=== 1. Mos loyiha ===")
print(f" ishlatadigan + faol + do'stona → {loyiha_baho(yaxshi)}")
print("\n=== 2. Mos emas ===")
print(f" o'lik, bilmaydigan → {loyiha_baho(yomon)}")
print("\n=== 3. Good first issue ===")
print(" label:'good first issue' (yangilar uchun)")
print("\n=== 4. Ishlatadiganing ===")
print(" bilim bor (tushunasan, tez boshlaysan)")
print(" ⭐ Mos loyiha — ishlatadigan, faol, do'stona")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. Mos loyiha ===
ishlatadigan + faol + do'stona → mos (boshlash yaxshi)
=== 2. Mos emas ===
o'lik, bilmaydigan → mos emas (boshqasini izla)
=== 3. Good first issue ===
label:'good first issue' (yangilar uchun)
=== 4. Ishlatadiganing ===
bilim bor (tushunasan, tez boshlaysan)
⭐ Mos loyiha — ishlatadigan, faol, do'stonaNima ko'rsatdi: 2.2-bo'lim.
Misol 3 — Birinchi PR jarayoni
"""Birinchi PR: fork → PR → merge (qadamlar model)."""
def pr_jarayon() -> list:
return [
"fork (o'z hisobingga nusxa)",
"clone (mahalliy)",
"branch (feature/tuzatish)",
"o'zgartir (kichik, aniq)",
"test (o'tsin — sindirmasin)",
"push + PR (aniq tavsif)",
"review (maintainer — sabr, tuzat)",
"merge (tasdiqlansa)",
]
def main() -> None:
print("=== 1. PR jarayoni ===")
for i, qadam in enumerate(pr_jarayon(), 1):
print(f" {i}. {qadam}")
print("\n=== 2. Fork (nusxa) ===")
print(" to'g'ridan push yo'q (o'z nusxa → PR)")
print("\n=== 3. Kichik boshla ===")
print(" birinchi PR kichik (oson tasdiq, ishonch)")
print("\n=== 4. Standart ===")
print(" fork → branch → PR → review 31.5-bob")
print(" ⭐ Birinchi PR — fork, branch, PR (kichik)")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. PR jarayoni ===
1. fork (o'z hisobingga nusxa)
2. clone (mahalliy)
3. branch (feature/tuzatish)
4. o'zgartir (kichik, aniq)
5. test (o'tsin — sindirmasin)
6. push + PR (aniq tavsif)
7. review (maintainer — sabr, tuzat)
8. merge (tasdiqlansa)
=== 2. Fork (nusxa) ===
to'g'ridan push yo'q (o'z nusxa → PR)
=== 3. Kichik boshla ===
birinchi PR kichik (oson tasdiq, ishonch)
=== 4. Standart ===
fork → branch → PR → review 31.5-bob
⭐ Birinchi PR — fork, branch, PR (kichik)Nima ko'rsatdi: 2.4-bo'lim.
Misol 4 — Maintainer bilan (sabr)
"""Maintainer bilan: sabr, hurmat, qoida (model)."""
def munosabat_baho(harakat: str) -> str:
yaxshi = ["sabr", "rahmat", "qoida", "tuzatdim"]
yomon = ["nega javob yo'q", "tez", "qarshi"]
if any(y in harakat for y in yaxshi):
return "yaxshi (hurmat, o'sish)"
if any(y in harakat for y in yomon):
return "yomon (sabrsiz, bosim)"
return "neytral"
def main() -> None:
harakatlar = [
"sabr (javob kutaman)",
"rahmat, tuzatdim",
"nega javob yo'q?",
]
print("=== 1. Munosabatlar ===")
for h in harakatlar:
print(f" '{h}' → {munosabat_baho(h)}")
print("\n=== 2. Maintainer ko'ngilli ===")
print(" bepul, vaqt topmaydi (sabr)")
print("\n=== 3. Qoidalar ===")
print(" CONTRIBUTING.md (o'qi, amal qil)")
print("\n=== 4. Izoh qabul ===")
print(" review — o'sish (31.6, shaxsiy olma)")
print(" ⭐ Maintainer — sabr, hurmat, qoida")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. Munosabatlar ===
'sabr (javob kutaman)' → yaxshi (hurmat, o'sish)
'rahmat, tuzatdim' → yaxshi (hurmat, o'sish)
'nega javob yo'q?' → yomon (sabrsiz, bosim)
=== 2. Maintainer ko'ngilli ===
bepul, vaqt topmaydi (sabr)
=== 3. Qoidalar ===
CONTRIBUTING.md (o'qi, amal qil)
=== 4. Izoh qabul ===
review — o'sish (31.6, shaxsiy olma)
⭐ Maintainer — sabr, hurmat, qoidaNima ko'rsatdi: 2.5-bo'lim.
5. To'g'ri va noto'g'ri tushunishlar
| Noto'g'ri fikr | To'g'risi |
|---|---|
| "Hissa = faqat kod" | Hujjat/test/xabar ham qadrli |
| "Bilimim yetmaydi" | Kichik boshla (hujjat, typo) |
| "Katta PR ta'sirli" | Kichik PR (oson tasdiq) |
| "To'g'ridan push" | Fork → PR (nusxa, so'rov) |
| "Muhokamasiz katta ish" | Avval issue (maintainer bilan) |
| "Qoidalar keraksiz" | CONTRIBUTING.md (o'qi, amal) |
| "Tez javob kutaman" | Sabr (maintainer ko'ngilli) |
| "Mukammal bo'lsin" | Kichik boshla (o'sadi) |
6. Keng tarqalgan xatolar va yechimlari
1. Juda katta birinchi PR
# birinchi PR — yangi katta xususiyat (rad xavfi) # ⚠️
# kichik boshla (hujjat/typo — oson tasdiq) # ✅2. Muhokamasiz katta ish
# issue'siz katta PR (maintainer istamasligi mumkin) # ⚠️
# avval issue ("men buni olaman?" — kelish) # ✅3. Qoidalarni o'qimaslik
# CONTRIBUTING.md o'qimasdan PR (uslub buzish — rad) # ⚠️
# CONTRIBUTING.md o'qi (qoida, jarayon) # ✅4. Sabrsizlik
# "nega javob yo'q?" (maintainer bosim) # ⚠️
# sabr (ko'ngilli — kunlar/hafta) # ✅5. Test sindirish
# o'zgartirdim, test tekshirmadim (sindirdi) # ⚠️
# test o'tsin (sindirmasin — 20-qism) # ✅6. Izohni rad qilish
# maintainer izohiga qarshi (ego) # ⚠️
# izoh qabul (o'sish — 31.6) # ✅7. O'lik loyiha
# javob yo'q loyihaga PR (behuda) # ⚠️
# faol loyiha (yaqinda commit — javob beradi) # ✅7. Integratsiya — bu bilim qayerda kerak bo'ladi
- 31.5-dars (o'tilgan): Git jamoa — fork, PR
- 31.6-dars (o'tilgan): Review — izoh qabul
- 31.8-dars: Portfolio — ochiq kod isboti
- 31.9-dars: Rezyume — hissa tajribasi
- 20-qism (o'tilgan): Test — PR sindirmasin
8. Eng yaxshi amaliyotlar
Kichik boshla (hujjat/typo — ishonch).
Ishlatadigan loyiha (bilim bor).
"Good first issue" (yangilar uchun).
CONTRIBUTING.md o'qi (qoida).
Avval issue muhokama (katta ishga).
Test o'tsin (sindirmasin).
Sabr (maintainer ko'ngilli).
Izoh qabul (review — o'sish).
9. Amaliy topshiriq
Vazifa 1: Bashorat qiling
1. # nega ochiq kodga hissa?
2. # real tajriba nima?
3. # portfolio foydasi?
4. # mos loyiha?
5. # good first issue?
6. # hissa turlari?
7. # kod eng?
8. # birinchi PR qadamlari?
9. # fork nima?
10. # maintainer kim?
11. # maintainer bilan?
12. # birinchi PR qanday?Javoblar
- Real tajriba, o'rganish, portfolio
- Katta haqiqiy kod (o'quv emas)
- Ommaviy isbot (ish beruvchi ko'radi)
- Ishlatadigan, faol, do'stona
- Yangilar uchun belgilangan oson vazifa
- Hujjat, test, xabar, kod (faqat kod emas)
- Kod eng qiyin (hujjatdan boshla)
- Fork, branch, o'zgartir, test, PR
- Loyihani o'z hisobingga nusxalash
- Loyiha boshqaruvchisi (ko'ngilli)
- Sabr, hurmat, qoida, izoh qabul
- Kichik (hujjat/typo — oson tasdiq)
Vazifa 2: Xatolarni tuzating
1. # birinchi PR — katta xususiyat
2. # issue'siz katta PR
3. # CONTRIBUTING.md o'qimasdan
4. # "nega javob yo'q?"
5. # test tekshirmadimJavoblar
1. kichik boshla (hujjat/typo)
2. avval issue ("men olaman?")
3. CONTRIBUTING.md o'qi
4. sabr (ko'ngilli)
5. test o'tsin (sindirmasin)Vazifa 3: Foyda
Modellang:
- Real tajriba
- O'rganish
- Portfolio
- Real dunyo
Vazifa 4: Mos loyiha
Modellang:
- Ishlatadigan
- Faol
- Do'stona
- Good first issue
Vazifa 5: Hissa turlari
Modellang:
- Hujjat
- Test
- Kod
- Faqat kod emas
Vazifa 6: Maintainer
Modellang:
- Ko'ngilli
- Sabr
- Qoida
- Izoh qabul
Vazifa 7: O'ylash
Ochiq kodga hissa qo'shishda ko'pchilik "mening bilimim yetmaydi" deb qo'rqadi, lekin kichik hissa (hujjat, typo) ham qadrli va o'sish yo'li. Nima uchun "kichik qadamdan boshlash" (start small) va "mukammallik kutmaslik" psixologik to'siqlarni yengishda muhim, va nega "birinchi qadam" ko'pincha eng qiyin, lekin eng muhim?
Javob
Qisqa javob: "Kichik qadamdan boshlash" psixologik to'siqni yengadi, chunki: katta maqsad (mashhur loyihaga jiddiy kod) qo'rqinchli (murakkab, xato qilish xavfi, "bilimim yetmaydi") — bu falaj qiladi (boshlamaydi); kichik qadam (hujjat typo) arzon, xavfsiz (oson, past xavf) — boshlash mumkin; boshlash esa impuls yaratadi (birinchi PR tasdiqlandi → ishonch → keyingi → o'sish). Kichik qadam maqsadni erishiladigan qiladi (falaj emas). "Mukammallik kutmaslik" muhim, chunki: mukammal bo'lguncha kutish — hech qachon boshlamaslik (mukammal hech qachon kelmaydi — "perfect is the enemy of good"); birinchi PR mukammal bo'lishi shart emas (review tuzatadi — 31.6, o'rganasan); harakat > mukammal reja. "Nega birinchi qadam eng qiyin lekin muhim": (1) eng qiyin — noma'lumlik qo'rquvi (birinchi marta — qanday?), o'zini past baholash ("men yetmayman"), inersiya (boshlamaslik oson); (2) eng muhim — birinchi qadam eshikni ochadi (birinchi PR → jarayonni bilasan, qo'rquv ketadi, keyingisi oson); boshlanmasa — hech narsa (bilim, tajriba, portfolio — nol); (3) o'rganish harakatdan — nazariya emas, qilib o'rganasan (birinchi PR — real tajriba); (4) ishonch quriladi — har kichik muvaffaqiyat ishonch beradi (o'sish spirali). Umumiy tamoyil: katta narsani kichik qadamlarga bo'l (erishiladigan, impuls); mukammallik kutma (harakat > mukammal — boshla, tuzat); birinchi qadam eng qiyin (qo'rquv, inersiya), lekin eshikni ochadi (keyingisi oson). Bu 31.4 ("oddiy boshla") va Cython 30.8 ("bosqichma-bosqich") bilan bir ruh (kichikdan, o'lchab, o'sib). Muhandislik/karyera saboqlari: kichik qadamdan boshla (falaj emas, impuls); mukammallik kutma (harakat > reja); birinchi qadam eng qiyin lekin muhim (eshikni ochadi); o'rganish harakatdan (qilib o'rgan); ishonch kichik muvaffaqiyatdan (spiral). Ochiq kod misolida: hujjat typo (kichik, xavfsiz) → birinchi PR → ishonch → good first issue → kod → o'sish; katta maqsadni kutsa — hech qachon boshlamaydi.
1. Nega kichik qadam muhim
- Katta maqsad qo'rqinchli (falaj)
- Kichik qadam arzon, xavfsiz (boshlash mumkin)
- Boshlash impuls yaratadi (ishonch spirali)
2. Nega mukammallik kutmaslik
- Mukammal hech qachon kelmaydi (kutsa — boshlamaydi)
- Birinchi PR mukammal shart emas (review tuzatadi)
- Harakat > mukammal reja
3. Nega birinchi qadam qiyin lekin muhim
| Jihat | Sabab |
|---|---|
| Eng qiyin | Qo'rquv, o'zini past baho, inersiya |
| Eng muhim | Eshikni ochadi (keyingisi oson) |
4. O'rganish harakatdan
Nazariya emas, qilib o'rganasan (birinchi PR — real). Ishonch har muvaffaqiyatdan.
5. Karyera saboqlari
- Kichik qadamdan boshla (impuls)
- Mukammallik kutma (harakat > reja)
- Birinchi qadam qiyin lekin muhim (eshik)
- O'rganish harakatdan (qilib o'rgan)
6. Xulosa
- Kichik qadam — falaj emas (boshlash mumkin)
- Mukammallik kutma (birinchi PR — review tuzatadi)
- Birinchi qadam eshikni ochadi
- Ochiq kod — hujjatdan boshla, o's
Nimani mustahkamlaydi: 2.3, 2.8-bo'limlar.
Xulosa
Bu darsda ochiq kodga hissa qo'shishni o'rgandik.
Eng muhim uch fikr:
Nega hissa va mos loyiha. Nega ochiq kodga hissa — uch foyda: real tajriba (katta, haqiqiy kod bazasi — o'quv emas, real jamoa), o'rganish (tajribali dasturchilardan review — 31.6), portfolio (ommaviy isbot — "X loyihaga hissa qo'shdim", ish beruvchi ko'radi). Mos loyiha va issue: ishlatadiganing (bilim bor), faol (yaqinda commit — o'lik emas), do'stona (
CONTRIBUTING.md); "good first issue" (yangilar uchun belgilangan oson vazifa — GitHub teg). Kichik boshla.Hissa turlari va birinchi PR. Hissa turlari (faqat kod emas): hujjat (typo, misol — eng oson), xato xabari (bug report), test (qamrov), kod (xato/xususiyat — eng qiyin), javob, tarjima; "kod yetmaydi" qo'rquvi — hissa kod emas ham (hamma qadrli). Birinchi PR jarayoni: fork (o'z nusxa), clone, branch (
feature/tuzatish), o'zgartir (kichik), test (o'tsin), push + PR (aniq tavsif — nima/nega/issue), review (maintainer — sabr, tuzat), merge; ochiq kodda to'g'ridan push yo'q (fork → PR). Kichik birinchi PR.Maintainer, tuzoqlar va o'sish ko'prigi. Maintainer bilan ishlash: ko'ngilli (bepul, vaqt topmaydi — sabr), javob kechikishi mumkin (kunlar/hafta — sabr), hurmat, qoida (
CONTRIBUTING.md), izoh qabul (o'sish — 31.6). Tuzoqlar: juda katta birinchi PR (rad), muhokamasiz katta ish (avval issue), qoida e'tiborsizlik, sabrsizlik, izoh rad, o'lik loyiha, "mukammal" kutish. Ochiq kod — o'rganish va portfolio ko'prigi (real kod, tajribali review, ommaviy natija); 31.5/31.6 ni real dunyoga; kichik boshlash qo'rquvni yengadi. "Kichik qadamdan boshlash" psixologik to'siqni yengadi (katta — falaj, kichik — impuls); "mukammallik kutmaslik" (harakat > mukammal — birinchi qadam eng qiyin lekin eshikni ochadi).
Keyingi darsda Portfolio va GitHub ni o'rganamiz: ish beruvchiga o'zingizni ko'rsatish — GitHub profil, loyihalar tanlovi, README yozish, pinned repolar va professional raqamli mavjudlik qurish.
Izohlar (0)
Izoh yozish uchun kiring.
- Hozircha izoh yo'q. Birinchi bo'ling!