Junior'dan middle darajasiga o'tish ko'pchilik o'ylagandan ko'ra murakkabroq — bu faqat vaqt masalasi emas. Ba'zi dasturchilar 1 yilda o'tadi, ba'zilari 4 yilda ham o'tolmaydi. Farq nima? Va siz qanday tezroq o'tishingiz mumkin?
Junior va middle o'rtasidagi haqiqiy farq
Ko'pchilik o'ylaydi: "Ko'proq texnologiya bilsam, middle bo'laman." Bu to'g'ri emas.
JUNIOR:
— "Bu topshiriq qanday qilinadi?"
— Berilgan vazifani bajaradi
— Bitta yo'l bilan hal qiladi
— Xato bo'lsa, boshqadan so'raydi
MIDDLE:
— "Bu muammo nima uchun paydo bo'ldi?"
— Vazifani o'zi aniqlashtiradi
— Bir nechta yechim ko'radi, birini tanlaydi
— Xatoni o'zi topadi va tuzatadi
1. Kod yozish emas, muammo hal qilishni o'rganish
Junior ko'pincha "qanday qilaman" deb o'ylaydi. Middle "nima qilaman" deb o'ylaydi.
# Junior yondashishi: berilgan vazifani bajarish
def foydalanuvchilar_ro_yxati(db):
return db.query("SELECT * FROM users")
# Middle yondashishi: muammoni to'liq o'ylash
def foydalanuvchilar_ro_yxati(db, sahifa=1, hajm=20, faqat_faollar=True):
"""
Foydalanuvchilar ro'yxati.
Katta ro'yxatlarda sahifalash kerak.
Faol bo'lmaganlarni ko'rsatish kerakmi?
"""
offset = (sahifa - 1) * hajm
shart = "WHERE faol = 1" if faqat_faollar else ""
return db.query(f"SELECT * FROM users {shart} LIMIT {hajm} OFFSET {offset}")
2. Kodni o'qilishi uchun yozing
Ishlaydigan kod — minimal talab. O'qilishi oson kod — professional daraja.
# YOMON — ishlaydi, lekin tushunish qiyin
def p(u, d):
return [x for x in d if x['u'] == u and x['s'] > 0]
# YAXSHI — o'qilishi oson
def faol_foydalanuvchi_buyurtmalari(foydalanuvchi_id, buyurtmalar):
"""Berilgan foydalanuvchining faol buyurtmalarini qaytaradi."""
return [
buyurtma for buyurtma in buyurtmalar
if buyurtma['foydalanuvchi_id'] == foydalanuvchi_id
and buyurtma['status'] > 0
]
3. Test yozishni boshlang
Ko'p junior dasturchilar test yozmaydi. Middle esa test yozmasdan kod yozishni tasavvur qilmaydi.
# Oddiy test misoli
def test_faol_buyurtmalar():
buyurtmalar = [
{'foydalanuvchi_id': 1, 'status': 1},
{'foydalanuvchi_id': 1, 'status': 0},
{'foydalanuvchi_id': 2, 'status': 1},
]
natija = faol_foydalanuvchi_buyurtmalari(1, buyurtmalar)
assert len(natija) == 1
assert natija[0]['status'] == 1
print("Test o'tdi!")
test_faol_buyurtmalar()
4. Code review'dan to'g'ri foydalaning
NOTO'G'RI:
Izoh keldi → tuzatdim → push → tamom.
TO'G'RI:
Izoh keldi → nima uchun shunday yozilgan ekan?
→ To'g'ri yondashuv nima?
→ Kelajakda bu xatoni qilmaslik uchun nima o'rganishim kerak?
Ko'p e'tibordan chetda qoladigan narsalar
- Git tartibi — commit xabarlari tushunarli, branch'lar aniq bo'lishi
- Baholash (estimation) — "bu 2 soat" deyish va 2 soatda bajarish
- Hujjatlashtirish — README, kod izohlari, API tavsifi
Maslahat: O'zingizga shunday savol bering: "Agar men bu loyihadan chiqib ketsam, boshqa dasturchi mening kodimni tushunib ishlata oladimi?" Agar javob "yo'q" bo'lsa — middle darajasiga yetmaganсиз.
+2
+0
+0
+0
+0
+0
+1