Skip to content
Barcha maqolalar
Dasturlash8 daq

Veb-dasturlash 10 yil oldin va hozir: junior o‘zimga maslahatlar

Birinchi production deployim shunday bo‘lgan: FileZilla, public_html papkasi va duo. Hozir kod serverga testlar va Docker image yig‘ilishidan o‘tgandan keyingina tushadi. Shu vaqt ichida nima o‘zgardi-yu, nima aynan o‘shandayligicha qoldi, shu haqida.

Azamat AbduyaminovAsoschi, yetakchi muhandis

Taxminan 2015-yilda men saytni to‘g‘ridan-to‘g‘ri serverda tahrirlardim. FileZilla’da faylni ochib, PHP’dagi bitta qatorni o‘zgartirardim, saqlab, brauzerda sahifani yangilardim. Oq ekran chiqsa, demak nuqtali vergulni unutganman. Zaxira nusxa yo‘q edi. Git bor edi, lekin “jiddiy loyihalar uchun”.

Hozir Toshkentda kichik studiyani boshqaraman. Oxirgi katta loyihamiz, Enlawyer yuridik firmasi sayti, productionga faqat GitLab CI image’ni yig‘ib, tekshiruvlardan o‘tkazgandan keyin chiqadi. Bu ikki nuqta orasida o‘n yil bor va ulardan nimasi haqiqatan muhimligini ajratib ko‘rgim keldi.

O‘shanda qanday edi

2010-yillar o‘rtasidagi odatiy loyiham: PHP, MySQL, jQuery, Bootstrap 3 va qandaydir arxiv saytidan yuklab olingan bir dasta plagin. Butun vyorstka 4000 qatorlik bitta stil faylida. Qayta aloqa formasi mail() orqali ishlardi va xatlarning yarmi spamga tushardi.

Eng g‘alatisi, bularning hammasi ishlardi. Mijozlar sayt olardi, saytlar ochilardi. Faqat har bir o‘zgarish kichik lotereya edi.

  1. 2015
    jQuery, freymvorksiz PHP, FTP orqali deploy, baza phpMyAdmin’da tahrirlanadi
  2. 2017
    Composer, ilk freymvorklar paydo bo‘ladi, Git endi faqat “jiddiy loyihalar uchun” emas
  3. 2019
    Vue va React jQuery’ni siqib chiqaradi, hamma joyda SPA, ular bilan birga SEO muammolari
  4. 2021
    Yii2’da Tezda Sotaman, lokal ishlash uchun Docker
  5. 2023
    Nuxt 3 va Django, har bir loyihada CI/CD, SSR odatiy holga aylanadi
  6. 2025
    Next.js va React 19, hamma joyda TypeScript, muharrirda AI-assistentlar

Tezda Sotaman: 2021-yilda Yii2

Tezda Sotaman — e’lonlar maydonchasi: uy-joy sotish va ijaraga berish, qurilish, mehmonxonalar. Biz uni 2021–2022-yillarda PHP Yii2 (advanced shablon: alohida frontend, backend va api), MySQL va yonida Python’dagi Telegram-bot bilan qilganmiz.

Tezda Sotaman marketpleysining bosh sahifasi
Tezda Sotaman: Yii2, MySQL va Python-bot, 2021–2022

Hozir boshqa stekni tanlagan bo‘lardim, lekin Yii2 yomonligi uchun emas. U bashorat qilsa bo‘ladigan freymvork, kod generatori zo‘r, marketpleys unda ishlab turibdi. Muammo boshqa joyda: 2021-yildayoq Toshkentda Yii2’da yozishni xohlaydigan yosh dasturchini topish qiyin edi. Hamma React va Python o‘rganardi. Stek faqat vazifaga qarab emas, uch yildan keyin uni qo‘llab-quvvatlaydigan odamlar bozoriga qarab ham tanlanadi.

Junior o‘zimga yetkazadigan birinchi saboq shu: bugun tanlagan texnologiyang keyinchalik kimningdir ishiga aylanadi.

Haqiqatan nima o‘zgardi

Modani olib tashlasak, men to‘rtta katta o‘zgarishni sanadim.

O‘shanda (≈2015) Hozir (2025)
Deploy FTP, qo‘lda, juma kuni kechqurun Docker image, GitLab CI, bitta buyruq bilan orqaga qaytarish
Frontend jQuery va serverdan kelgan HTML bo‘laklari SSR’li Next.js / Nuxt, komponentlar
Tiplar “Runtime’da ko‘ramiz” Frontendda TypeScript, Python’da type hints
Muhit “Menda ishlayapti” docker compose, hamma uchun bir xil
SEO Meta-teglar qo‘lda Sitemap, structured data, hreflang koddan

Docker va CI deploy qo‘rquvini yo‘qotdi

Eng asosiysi shu. Avval reliz voqea edi. Hozir Enlawyer’da deploy taxminan shunday ko‘rinadi:

deploy:
  stage: deploy
  script:
    - docker compose pull
    - docker compose up -d --remove-orphans
  only:
    - main

Hech qanday murakkab narsa yo‘q. Lekin shu besh qator jamoaning istalgan a’zosi o‘zgarishni chiqara olishini va server qo‘lda qilingan tuzatishlar muzeyiga aylanmasligini anglatadi.

SSR bizni yana serverga qaytardi, faqat aqlliroq

Qiziq aylana. 2015-yilda HTML’ni serverda PHP render qilardi. Keyin hamma SPA’ga o‘tdi va qidiruv tizimi <div id="app"> bilan bo‘sh sahifani ko‘radigan bo‘ldi. Keyin Nuxt va Next.js keldi va yana serverda render qila boshladi, endi komponentlar va gidratsiya bilan. Mijozlarimiz uchun bu muhim: yuridik firma, telekanal yoki klinika mijozlarni Google’dan oladi va robot uchun bo‘sh sahifa ularga to‘g‘ri kelmaydi.

Xosting va SSL

2015-yilda sayt cPanel’li virtual xostingda, yuzlab begona saytlar yonida yashardi. Agar qo‘shni sayt virus ilsa, hamma azob chekardi. SSL-sertifikat pullik edi, shuning uchun Uznetdagi saytlarning yarmi ochiq HTTP’da ishlardi, brauzerlar esa o‘shanda hali ogohlantirmasdi.

Hozir deyarli har bir loyihamiz o‘z VPS’ida yashaydi: nginx, Docker, PostgreSQL, Redis. Let's Encrypt sertifikatlari bepul va o‘zi yangilanadi. Sayt javob bermay qolsa, monitoring Telegram’ga xabar yuboradi va men bundan mijozdan oldin xabar topaman. Mayda narsadek eshitiladi, lekin o‘n yil oldin sayt yiqilganini odatda mijozning o‘zidan bilardim va bu juda yoqimsiz qo‘ng‘iroq edi.

TypeScript

Uzoq qarshilik qildim. Ortiqcha byurokratiyadek tuyulardi. Bir loyihada price maydoni backenddan goh son, goh string bo‘lib kelib, xatoni ikki kun qidirganimizdan keyin fikrimni o‘zgartirdim. Tiplar bilan bu muharrirning o‘zida ushlanadi.

Muharrirdagi AI: hozircha hayajonsiz

Buni 2025-yil avgustida yozyapman. AI-assistentlar jamoada hammada bor. Ular shablon kodni, migratsiyalarni, testlarni va interfeysni o‘zbek, rus va ingliz tillariga tarjimani yaxshi yozadi. Shu hisobiga soatlab vaqt tejaymiz, rostini aytsam.

Lekin arxitekturani ular o‘ylab topmaydi. Va to‘g‘ri ko‘rinadigan, lekin chekka holatda sinadigan kodni ishonch bilan yozadi. Bu juniorga seniorga qaraganda xavfliroq: senior assistent qayerda yolg‘on gapirganini ko‘radi, junior ko‘rmaydi. Yosh o‘zimga avval assistentsiz yozishni o‘rganib, keyin uni tezlatgich sifatida olishni maslahat bergan bo‘lardim. Studiyada AI’dan qanday foydalanishimiz haqida keyinroq alohida yozaman.

Umuman o‘zgarmagan narsalar

Eng qizig‘i shu yerda. O‘n yil o‘tdi, barcha vositalar almashdi, loyihaning qiyin joylari esa o‘sha-o‘sha qoldi.

Mijoz bilan suhbat. Mijoz hamon “ularnikiga o‘xshagan sayt kerak” degan gap va Instagram’dan skrinshot bilan keladi. Dasturchining vazifasi biznesga aslida nima kerakligini aniqlash. Ba’zan bu sayt emas, Telegram-bot bo‘lib chiqadi. Bu suhbatni hech qaysi freymvork almashtirmaydi.

Muddatlar. Ular hamon ishning oxirgi 10 foizida buziladi: tarjimalar, kontent, “keling, yana mana buni ham qo‘shaylik”. 2015-yilda buni tajribasizlikdan deb o‘ylardim. Endi bu loyihalarning xususiyati ekanini tushunaman va bufer qo‘yaman.

Kontent. Matn va fotosiz saytni ishga tushirib bo‘lmaydi va matnlar deyarli har doim eng oxirida keladi. Enlawyer’da uchta til bor, EN/RU/UZ, va har bir sahifa uch versiyada mavjud. Bu butun frontenddan ko‘proq ish.

Enlawyer yuridik firmasining sayti
Enlawyer: Next.js, React 19 va Django, uchta til

Mas’uliyat. Mijozning sayti tunda yiqilsa, sizga qo‘ng‘iroq qilishadi. Docker va CI buni kamaytirdi, lekin bekor qilmadi.

Junior o‘zimga nima degan bo‘lardim

Ortiqcha falsafasiz, oddiy ro‘yxat. 2015-yilda uni chop etib, stol tepasiga osib qo‘ygan bo‘lardim.

  • Birinchi kundan Git, hatto sayt-vizitka uchun ham
  • Hech qachon productiondagi kodni qo‘lda tahrirlamaslik
  • Baza bekaplarini avtomatik qilish va ular tiklanishini tekshirish
  • Faqat yilning freymvorkini emas, asoslarni o‘rganish (HTTP, SQL, brauzer qanday ishlashi)
  • Boshqalarning kodini, ayniqsa yaxshi kodni o‘qish
  • Mijoz bilan kelishuvlarni yozma qayd etish, hech bo‘lmasa Telegram’da
  • Ishingiz qancha turishini so‘rashdan uyalmaslik

Oxirgi band texnikaga oid emas, lekin qoldiraman. Dastlabki bir-ikki yil saytlar uchun shunchalik kam pul olardimki, o‘z vaqtimni ham qoplamasdi. Hozir narx qanday shakllanishi qiziq bo‘lsa, bizda tushunarli narx oraliqlari bilan saytlar yaratish sahifasi bor.

Yana bitta gap. 2015-yilda o‘rgangan freymvorklarimning deyarli hammasi endi kerak emas. Begona vazifani tushunib olish va loyihani ishga tushirishgacha yetkazish mahorati esa o‘shandagidek kerak. Dastlabki yillarda vaqtni aynan shunga sarflash kerak.

Vazifa bormi? Yozing — muhokama qilamiz.

Telegram’da to‘g‘ridan-to‘g‘ri studiya asoschisiga yozing. Nima kerakligini ikki og‘iz so‘z bilan ayting — savollar va taxminiy baho bilan javob beramiz.