Tarkibga o'tish

20 β€” Ish muhiti va vositalar ustaligi

⬅️ Oldingi: 19 β€” Fikr-mulohaza, mentorlik va mojaro Β· 🏠 README Β· Keyingi: 21 β€” Vaqt, diqqat va chuqur ish ➑️


Bu bobda: vositalar β€” usta qo'lidagi asbob. Yaxshi dasturchi asbobini ayblamaydi, lekin o'tkir asbob uning kuchini ko'paytiradi. Bu bobda muharrir/IDE'ni qurolga aylantirishni, klaviaturani sichqonchadan ustun qo'yishni, terminal/shell ustaligini, takrorlanuvchi ishni avtomatlashtirishni (skript, Makefile, task runner), dotfiles bilan muhitni ko'chiriladigan qilishni va AI yordamchilarni ongli ishlatishni o'rganasiz. Maqsad β€” tezlik emas, balki diqqatni saqlash: asbob o'rtangizdan chiqib ketsin.

Halollik / Eslatma: bu bobdagi maslahatlar qonun emas, amaliy yo'l-yo'riq. Vosita tanlovida "yagona to'g'ri" yo'q β€” Vim'chi ham, VS Code'chi ham, JetBrains'chi ham ajoyib muhandis bo'ladi. Muhimi qaysi asbob emas, balki siz uni qanchalik chuqur egallaganingiz. Va asosiy tuzoq β€” vositaga berilib ketish (yak-shaving): cheksiz sozlashga sarflagan vaqtingiz hech qachon qaytmasligi mumkin. Bu yerdagi prinsiplar til/IDE-mustaqil: konkret nomlar misol uchun, g'oya esa har qanday muhitda amal qiladi.


Nega vosita β€” sarmoya, na o'yinchoq, na bahona

Dasturchi kuniga ish soatining katta qismini bir nechta asbob bilan o'tkazadi: muharrir, terminal, brauzer, Git. Bu asboblardan har biri bilan siz minglab marta muomala qilasiz β€” fayl ochasiz, qidirasiz, almashasiz, ishga tushirasiz. Agar har bir amal bir soniya tez bo'lsa, kuniga yuzlab takror β€” bu yiliga soatlab tejalgan vaqt. Lekin haqiqiy yutuq vaqt emas: diqqat. Asbob bilan kurashganingizda fikringiz masaladan uziladi; asbob o'rtangizdan g'oyib bo'lganda fikr to'xtamaydi.

Shu bilan birga, ikki xato bir xil darajada xavfli:

  • "Yomon usta asbobni ayblaydi." "Mening IDE'm sekin", "bu terminal noqulay" β€” ko'pincha bahona. Asboblarni o'rganmagan dasturchi har doim asbobni ayblaydi. Mahorat avval keladi.
  • Yak-shaving (yak qirqish) β€” aslida bajarilishi kerak bo'lgan ishni qoldirib, asbobni cheksiz sozlash. "Avval muharrir mavzusini mukammal qilay, keyin masalani yechaman" β€” bu ish emas, kechiktirish.

To'g'ri munosabat oraliqda: vosita o'rganishni sarmoya deb biling. Bir martalik o'rganish keyin har kuni qaytadi. Lekin sarmoya bir martalik bo'lsin β€” cheksiz emas. Bir bor o'tkirlang, keyin ishlang.

Eslatma: bu bob 21-bob (Vaqt, diqqat va chuqur ish) bilan zich bog'liq. U yerda diqqatni qanday himoya qilish haqida; bu yerda esa asbobning o'zi diqqatni qanday saqlashi (yoki o'g'irlashi) haqida.


Dasturchi asbob qutisi

Vositalarni bezak deb emas, maqsad bo'yicha ko'ring. Har asbob bir savolga javob beradi. Asbob qutingizdagi olti tayanch:

Dasturchi asbob qutisi: muharrir, terminal, debugger, VCS, qidiruv, avtomatlashtirish kartalari

Vosita turi Maqsad (qaysi savolga javob) Tayanch ko'nikma Boshqa kitob
Muharrir / IDE Kodni yozish va u bo'ylab harakat navigatsiya, refactor, multi-cursor β€”
Terminal / shell Mashinani boshqarish, vositalarni ulash pipe, tarix, alias, skript DevOps
Debugger "Nega bunday bo'lyapti?" ni tushunish breakpoint, step, watch 04-bob
VCS (Git) Tarix, jamoa, "qachon buzildi?" branch, diff, bisect, blame Git & GitHub
Qidiruv (grep) Katta kod bazasida topish regex sezgisi, ripgrep 03-bob
Avtomatlashtirish Takrorni yo'q qilish skript, Makefile, task runner β€”

Bu jadval β€” yo'l xarita: keyingi olti oyda har bir ustunda bir pog'ona ko'tarilsangiz, unumdorligingiz sezilarli o'sadi. Hammasini birdan emas β€” bittadan.


1. Muharrir/IDE'ni qurol qilish

Ko'p dasturchi muharrirni "matn yozadigan oyna" sifatida ishlatadi va uning 90% quvvatidan bexabar qoladi. Muharringizni o'rganish β€” eng yuqori qaytimli sarmoyalardan biri, chunki siz unda har kuni yashaysiz.

Egallash kerak bo'lgan asosiy qobiliyatlar:

  • Navigatsiya. "Go to definition" (ta'rifga sakrash), "find references" (qayerda ishlatilgan), "symbol search" (loyiha bo'ylab nom qidirish), fayllar orasida tez almashish. Bu β€” begona kodni o'qishning asosi (03-bob).
  • Refactor amallari. "Rename symbol" (hamma joyda qayta nomlash), "extract function/variable", "inline". Buni qo'lda qilish β€” xato manbasi; muharrir buni xavfsiz qiladi (09-bob).
  • Multi-cursor va tanlash. Bir vaqtda ko'p joyni tahrirlash, bir xil so'zni belgilab almashtirish.
  • Integratsiyalangan debugger. print bilan kurashish o'rniga breakpoint qo'yib, o'zgaruvchini ko'rish.
  • Snippet va shablonlar. Tez-tez yoziladigan naqshlarni qisqa kalit bilan chaqirish.

❌ Anti-misol β€” sichqonchaga qaramlik:

Funksiya nomini o'zgartirish kerak. Dasturchi har bir faylni qo'lda ochadi, har joyda eski nomni topib, sichqoncha bilan belgilaydi, yangisini yozadi. 14 fayl, 20 daqiqa, va ikki joyni o'tkazib yuboradi β€” prod buziladi.

βœ… Misol β€” muharrirni qurol qilish:

Kursorni nom ustiga qo'yib "Rename symbol" (mas. F2) bosadi, yangi nomni yozadi, Enter. Muharrir 14 faylda 31 joyni bir lahzada, xatosiz almashtiradi. 5 soniya.

Bu farq tasodif emas: muharrir kodni matn emas, tuzilma (sintaksis daraxti) sifatida tushunadi. Shuning uchun u sizdan ko'ra to'g'riroq almashtiradi.

Eslatma: muharringiz qaysi bo'lishi muhim emas β€” VS Code, Neovim, JetBrains, Emacs. Muhimi: bittasini tanlang va chuqur o'rganing. Har oy yangi muharrirga ko'chish β€” o'sish emas, yak-shaving. "Eng yaxshi muharrir" β€” siz pog'onama-pog'ona ustasi bo'lgani.

Lekin "IDE qulligi"dan qoching

Kuchli IDE shu qadar qulay qiladiki, ba'zi dasturchi tugmasiz hech narsa qila olmay qoladi: testni faqat yashil tugma bilan ishga tushiradi, kodni faqat IDE'dan deploy qiladi, terminalda nima bo'layotganini bilmaydi. Bu β€” asbob qulligi. Server'da IDE yo'q; CI/CD'da yashil tugma yo'q. Asoslarni terminalda ham bilish β€” sizni mustaqil qiladi: IDE tugmasi ortida aslida qaysi buyruq ishlayotganini tushuning.


2. Klaviatura > sichqoncha

Tez-tez bajariladigan amal uchun klaviatura yorlig'i sichqonchadan deyarli har doim tezroq. Sabab faqat tezlik emas: sichqonchaga uzatilganda qo'l klaviaturadan uziladi, ko'z ekranda kursor qidiradi, diqqat oqimi sinadi. Klaviatura yorlig'i esa qo'lni joyida qoldiradi va vaqt o'tib muscle memory (mushak xotirasi) ga aylanadi β€” o'ylamay bajariladi.

Sichqoncha oqimi sekin vs klaviatura yorliq oqimi tez taqqoslash

Amaliy yondashuv: bir vaqtning o'zida hamma yorliqni yodlamang. Eng tez-tez qilgan 5 amalingizni kuzating (fayl ochish, qidirish, qatorni ko'chirish, terminalga o'tish, faylni saqlash) va faqat shularning yorlig'ini o'rganing. Ular muscle memory'ga o'tgach, keyingi beshtasini oling. Bir oyda 20 yorliq β€” sezilarli o'zgarish.

Trade-off: klaviatura ustunligi tez-tez amallar uchun. Yiliga bir marta ochiladigan menyu uchun yorliq yodlash β€” yak-shaving. Va sichqoncha hech qachon yomon emas: diagramma chizish, vizual interfeysni ko'zdan kechirish, notanish menyuni o'rganishda sichqoncha tabiiyroq. Qoida oddiy: takror = yorliq, kamdan-kam = sichqoncha.


3. Terminal / shell ustaligi

Terminal β€” eng noto'g'ri qo'rqiladigan asbob. Yangi dasturchiga u "qora ekran, xatarli" tuyuladi; aslida u β€” eng kuchli va eng ko'chiriladigan vositangiz. Sababi: terminalda mayda asboblarni bir-biriga ulab, hech bir GUI bera olmaydigan yangi imkoniyat yasaysiz.

Egallash kerak bo'lgan sezgilar:

  • Asosiy buyruqlar. Fayllarni ko'rish/ko'chirish/o'chirish, papka bo'ylab harakat, jarayonlarni ko'rish. Bularsiz hech qaerga bormaysiz.
  • Pipe (|) va qayta yo'naltirish (>, >>). Bir buyruq chiqishini ikkinchisining kirishiga ulash β€” terminalning butun sehri shu. "Loglardagi ERROR qatorlarni sanab, eng ko'p uchraganini top" β€” bir qatorda.
  • Tarix. Oldingi buyruqni qayta chaqirish (yuqori strelka, Ctrl+R bilan qidirish) β€” bir xil uzun buyruqni qayta yozmaslik.
  • Alias. Uzun, tez-tez teriladigan buyruqqa qisqa nom berish.

❌ Anti-misol β€” har safar qayta yozish:

git add . && git commit -m "..." && git push origin feature/x

Buni kuniga 15 marta qo'lda terish β€” vaqt va xato manbasi.

βœ… Misol β€” alias bilan:

# .bashrc / .zshrc ichida bir marta:
alias gacp='git add . && git commit -m'

# endi kuniga:
gacp "feature: foydalanuvchi profilini qo'shdim"

Pipe sezgisiga oddiy misol β€” logda xatolarni guruhlash:

# "loglardagi xato turlarini eng ko'pdan kamga qarab sana"
cat app.log | grep ERROR | sort | uniq -c | sort -rn | head

Bu zanjirning har bo'lagi mayda; birga ulanganda esa kuchli tahlil chiqadi. Aynan shu β€” terminal falsafasi.

Eslatma: terminal/shell chuqur mavzu (Bash, skript, muhit o'zgaruvchilari) β€” to'liq qo'llanma DevOps & Deployment kitobida. Bu bobda gap odat haqida: terminalni qo'rqmasdan, kundalik asbob sifatida ishlating.


4. Avtomatlashtirish β€” "uch marta qo'lda qilsang, skript yoz"

Toza koddagi DRY prinsipi ("o'zingni takrorlama") faqat kodga emas, butun ish jarayoniga tegishli. Agar bir ishni qo'lda qayta-qayta qilayotgan bo'lsangiz β€” bu kelajakdagi siz uchun xato va zerikish manbasi. Amaliy qoida:

  • 1-marta: qo'lda qiling. Hali naqshni bilmaysiz.
  • 2-marta: e'tibor bering β€” "buni yana qildim".
  • 3-marta: skript yozing. Endi bu takror, va u o'sib boradi.

Uch marta qo'lda bo'lsa skript yoz: qo'lda doimiy vs avtomatlashtirilgan vaqt sarmoyasi grafigi

Grafikda mantiq: qo'lda ish har takrorda bir xil narx oladi β€” chiziq doimiy yuqoriga. Skript boshda qimmat (yozish vaqti), keyin deyarli bepul β€” chiziq tekislanadi. Ikki chiziq qaytim nuqtasida kesishadi; undan keyin avtomatlashtirish toza yutuq.

❌ Anti-misol β€” abadiy qo'lda:

Loyihada test ishga tushirish uchun: virtual muhitni faollashtir, muhit o'zgaruvchilarini eksport qil, bazani migratsiya qil, keyin testni chaqir β€” to'rt buyruq, har kuni o'nlab marta. Yangi a'zo kelganda buni og'zaki tushuntirishadi, u yarmini unutadi, "menda ishlamayapti" deydi.

βœ… Misol β€” Makefile / task runner:

# Makefile
test:
    . venv/bin/activate && \
    export $$(cat .env | xargs) && \
    python manage.py migrate && \
    pytest

# endi hamma uchun bitta buyruq:
make test

Bir buyruq β€” make test β€” to'rt qadamni bekamu-ko'st bajaradi. Foyda nafaqat sizga: yangi a'zo birinchi kuniyoq make test deb ishga tushadi, og'zaki ko'rsatma kerak emas. Avtomatlashtirish β€” ham vaqt tejash, ham yashirin hujjat.

Nimalarni avtomatlashtirish arziydi: muhitni sozlash, test/lint ishga tushirish, deploy qadamlari, takroriy ma'lumot tayyorlash, fayl nomlarini ommaviy o'zgartirish. Vositalar: shell skript, Makefile, npm/composer skriptlari, just, yoki tilingizdagi task runner.

Trade-off: har narsani avtomatlashtirish β€” ham yak-shaving. Yiliga bir marta bajariladigan ishni avtomatlashtirishga bir kun ketkazsangiz, hech qachon qaytmaydi. Avtomatlashtirishning o'zi ham qarz bo'lishi mumkin: murakkab, hech kim tushunmaydigan skript β€” yangi nosozlik manbai. Qoida: takror chastotasi Γ— bir martalik narx > avtomatlashtirish narxi bo'lsagina yozing. Va skriptni oddiy, o'qiladigan qiling β€” u ham kod.


5. Dotfiles β€” muhitni ko'chiriladigan qilish

Oylar davomida muharrir sozlamalari, shell alias'lari, Git konfiguratsiyasi to'planadi β€” bu sizning shaxsiy ish muhitingiz. Endi mashina almashdi, yoki yangi ishga kirdingiz, yoki noutbuk buzildi. Hammasini noldan qayta sozlash β€” kunlar. Yechim β€” dotfiles: sozlama fayllaringizni (.bashrc, .gitconfig, muharrir konfiguratsiyasi) bitta Git repozitoriyasida saqlash.

Foydasi:

  • Tez tiklash. Yangi mashinada repozitoriyani klonlab, bitta skript bilan butun muhitni qaytarasiz β€” soatlar emas, daqiqalar.
  • Tarix va orqaga qaytarish. Sozlamani buzsangiz, Git tarixidan qaytarasiz.
  • Bir nechta mashinada izchillik. Uy va ish kompyuteri bir xil.
  • Hujjat. Repozitoriyaning o'zi β€” "men muhitimni qanday sozlaganman" ning hujjati.

Trade-off: dotfiles ham yak-shaving tuzog'i. Internetda "mukammal dotfiles" larini ko'rib, kunlab sozlash mumkin β€” buning hech qaysisi ish bitirmaydi. Boshlang'ich: faqat haqiqatan ishlatadigan sozlamalarni saqlang. Muhit ko'chiriladigan bo'lsa β€” yetarli; u "san'at asari" bo'lishi shart emas.

Diqqat β€” maxfiy ma'lumot. Dotfiles'ni ommaviy repozitoriyaga qo'yganda, ichiga parol, API kalit, token tushib qolmasin. Bu eng keng tarqalgan xato. .env, kalitlar, mahalliy maxfiy fayllarni .gitignore'ga qo'shing β€” bu 12-bob (Xavfsiz kod) prinsiplarining kundalik amali.


6. Boshqa o'tkir asboblar (sezgi darajasida)

To'liq o'rganish shart emas, lekin mavjudligini bilib, kerak bo'lganda chaqirish unumdorlikni oshiradi:

  • Kuchli qidiruv (grep / ripgrep). Katta kod bazasida "bu funksiya qayerda ishlatilgan?" β€” bir soniyada. Regex sezgisi β€” superkuch (03-bob).
  • Clipboard menejeri. Oxirgi nusxalangan bir nechta narsani saqlaydi β€” "yana nusxalashga qaytish" yo'qoladi.
  • Snippet kengaytmalari. Tez-tez yoziladigan blok (litsenziya sarlavhasi, test shabloni) bir kalit bilan.
  • Terminal multiplekser (tmux va o'xshashlari). Bir terminal oynasida bir nechta panel/sessiya; masofaviy serverda uzilgan sessiyani qayta ulash. Server bilan ishlasangiz β€” bebaho.

Bularni bittadan, ehtiyoj tug'ilganda qo'shing. "Hammasini o'rnatib olay" β€” yak-shaving; "shu og'riq paydo bo'ldi, uni hal qiladigan asbobni o'rganay" β€” sarmoya.


7. AI yordamchi vositalar β€” kuchaytirgich, na o'rinbosar

Kod assistentlari (AI yordamchilari) so'nggi yillarda kundalik asbobga aylandi: avtotaklif, kod yozish, tushuntirish, test generatsiya. To'g'ri ishlatilganda ular unumdorlikni jiddiy oshiradi β€” qoliplΔ± kodni tez yozadi, notanish API'ni tushuntiradi, "qanday qilsam bo'ladi?" ga boshlang'ich beradi.

Lekin asosiy xavf bitta: tushunmasdan ishlatish. AI taklif qilgan kodni o'qimasdan, sinab ko'rmasdan loyihaga qo'shish β€” bu sizniki bo'lmagan, lekin javobgarligi sizda bo'lgan kod. U xato qilishi, eskirgan yoki xavfsiz bo'lmagan naqsh tavsiya qilishi, o'ylab topilgan API chaqirishi mumkin.

Yondashuv βœ… Sog'lom ❌ Xavfli
Kod taklifi o'qiyman, tushunaman, sinayman o'qimasdan qabul qilaman
Mas'uliyat kod meniki β€” men javobgar "AI yozdi, men emas"
O'rganish tushuntirishni o'rganaman mustaqil fikrlashni unutaman
Maxfiylik maxfiy kodni o'ylab yuboraman mijoz kodini bemalol joylash

βœ… Misol: AI sizga regex tavsiya qildi. Siz uni o'qiysiz, nima qilishini tushunasiz, chegaraviy holatda sinaysiz, keyin qo'shasiz β€” va endi uni o'zingiz tushuntira olasiz.

❌ Anti-misol: AI 60 qatorlik funksiya berdi, siz nusxalab qo'yasiz, ishlayotganga o'xshaydi. Bir oydan keyin u buziladi β€” siz o'z kodingizni tushunmaysiz, debug qila olmaysiz.

Eslatma: AI yordamida kod yozishning etik tomoni β€” mualliflik, mas'uliyat, mijoz maxfiyligi, litsenziya β€” alohida muhim mavzu. To'liqroq 27-bob (Etika va mas'uliyat)da. Qoidaning o'zagi: siz tushunmagan kodga javobgar bo'lolmaysiz β€” va sizning ismingiz commit'da turadi.

Bu yangi vositani o'rganish ham 22-bob (O'rganishni o'rganish) ning bir qismi: yangi asbobni qanday qabul qilish, qachon ishonish, qachon shubhalanishni bilish β€” kasbiy ko'nikma.


8. Halollik: vosita β€” maqsad emas

Bobni ochgan g'oyaga qaytamiz. O'tkir asbob β€” kuchaytirgich, lekin ishni asbob emas, siz bajarasiz. Eng chiroyli sozlangan muhit ham yomon mantiqni yaxshi qilmaydi; eng oddiy muhitda ham ajoyib muhandis ajoyib ish chiqaradi.

Shuning uchun balansni saqlang:

  • Ishlaydigan oddiy sozlama > cheksiz moslash. "Yetarlicha yaxshi" muhit bilan bugun ish bitiring; mukammallikni keyin, ehtiyoj bo'lganda quvib boring.
  • Asbobni masala ortidan o'rganing, masala asbob ortidan emas. Yangi yorliq/skript/asbob β€” biror og'riqqa javob bo'lsin, "men buni o'rganishim kerak" hissi emas.
  • Sarmoya bir martalik, foyda doimiy. Yorliqni bir bor yodlang, alias'ni bir bor yozing β€” keyin u har kuni qaytadi.

Senior dasturchining asboblari ko'pincha kam, lekin chuqur: u uchta asbobni mukammal biladi, yuztasini yuzaki emas. Sizning maqsadingiz β€” asbobni shu darajada egallashki, u ko'rinmas bo'lib qolsin va siz faqat masalaga e'tibor bera olasiz.


Asosiy g'oyalar (bobni qisqacha)

  • Vosita β€” sarmoya. Bir martalik o'rganish keyin har kuni qaytadi; lekin sarmoya bir martalik bo'lsin, yak-shaving emas.
  • Muharrirni qurol qiling: navigatsiya, refactor, multi-cursor, debugger. Bittasini tanlang va chuqur egallang β€” lekin IDE qulligidan qoching, asoslar terminalda ham bo'lsin.
  • Klaviatura > sichqoncha tez-tez amallar uchun: tezlik emas, muscle memory va saqlangan diqqat. Eng ko'p 5 amalingizdan boshlang.
  • Terminal β€” eng ko'chiriladigan kuch: pipe, tarix, alias bilan mayda asboblarni ulang. Chuqur mavzu DevOpsda.
  • "Uch marta qo'lda qilsang β€” skript yoz." DRY hayotda ham amal qiladi; lekin kamdan-kam ishni avtomatlashtirish ham yak-shaving.
  • Dotfiles muhitni ko'chiriladigan qiladi β€” lekin maxfiy ma'lumotni hech qachon repozitoriyaga qo'ymang.
  • AI yordamchi β€” kuchaytirgich, o'rinbosar emas: tushunmasdan ishlatmang, kod sizniki β€” javobgarlik ham.
  • Asbob β€” maqsad emas: ishlaydigan oddiy sozlama cheksiz moslashdan ustun; senior asboblari kam, lekin chuqur.

Mashqlar

Oson

1-mashq. Keyingi ish kuningiz davomida o'zingizni kuzating: sichqoncha bilan bajargan, lekin klaviatura yorlig'i bo'lishi mumkin bo'lgan 5 ta tez-tez amalni ro'yxat qiling (mas. fayl ochish, qatorni o'chirish, terminalga o'tish). Har biri uchun yorliqni toping va yozib qo'ying.

2-mashq. O'zingizning so'nggi haftadagi ishingizni eslang: uch yoki undan ko'p marta qo'lda takrorlagan bitta ishni toping (mas. test ishga tushirish, fayllarni qayta nomlash, deploy). Buni qanday avtomatlashtirasiz β€” qaysi asbob bilan (alias, skript, Makefile)? Bir-ikki jumlada tasvirlang.

3-mashq. Quyidagi qo'lda terilgan buyruqqa qisqa alias o'ylab toping va u qaerga yoziladi (qaysi faylga): git checkout main && git pull && git checkout - && git rebase main

O'rta

4-mashq. Quyidagi qo'lda ish jarayonini bitta make maqsadi (yoki shell skripti) ga aylantiring. Loyihada test ishga tushirish uchun: (1) virtual muhitni faollashtir, (2) bog'liqliklarni o'rnat, (3) linter ishga tushir, (4) testlar. Skriptni yozing.

5-mashq. Bir hamkasbingiz: "Men yorliq yodlamayman, sichqoncha menga yetadi, vaqtni behuda sarflashni xohlamayman" deydi. Unga klaviatura yorliqlarining qiymatini bir misol bilan (vaqt Γ— takror hisobi) tushuntiruvchi qisqa javob yozing β€” lekin uni "majburlamasdan".

6-mashq. Sizdan dotfiles repozitoriyasi yaratish so'raldi. Unga qaysi 4 faylni qo'shasiz va qaysi 2 narsani hech qachon qo'ymaysiz (xavfsizlik)? Ro'yxat tuzing va nega ekanini qisqacha izohlang.

Qiyin

7-mashq. Bir dasturchi ikki kun davomida o'z muharririni "mukammal" qilish bilan band: mavzu, rang, plaginlar, animatsiya. Sprint vazifasi esa qotgan. Bu yak-shaving ekanini ko'rsating: unga (a) hozir to'xtash uchun, (b) kelajakda muhit sozlashga qancha vaqt ajratish "sog'lom" ekani haqida amaliy maslahat bering. Trade-off'ni ochiq ayting.

8-mashq. Quyidagi qo'lda log tahlilini bir qatorlik terminal zanjiri (pipe bilan) ga aylantiring: "app.log fayldan faqat ERROR qatorlarni ol, ularning sabab matnini guruhla, eng ko'p uchragan 5 tasini chiqar". Keyin: bu ishni har kuni qilsangiz, uni qanday avtomatlashtirasiz (alias yoki skript)?

Yechimlar

1-mashq yechimi

Namuna ro'yxat (yorliqlar muharringizga qarab o'zgaradi β€” VS Code misolida):

Amal Yorliq (misol)
Faylni nom bo'yicha ochish Ctrl+P
Loyihada matn qidirish Ctrl+Shift+F
Qatorni nusxalab pastga Shift+Alt+↓
Terminalni ochish/yashirish `Ctrl+``
Symbolga sakrash (go to def) F12

Asosiy fikr: yorliqlarni kuzatishdan boshlang, hammasini birdan yodlamang. Beshtasi muscle memory'ga o'tgach, keyingisini oling.

2-mashq yechimi

Namuna: "Har kuni feature branch'ni main'dan yangilab turaman β€” 3 buyruq, kuniga 5 marta." Avtomatlashtirish: bu ketma-ketlikni alias yoki kichik shell skriptga aylantiraman (gsync kabi). Agar qadamlar shartli/murakkab bo'lsa (xato tekshirish kerak) β€” skript; oddiy ketma-ketlik bo'lsa β€” alias. To'g'ri javob bitta emas; muhimi: takrorni aniqladingiz va asbobni mosladingiz.

3-mashq yechimi

# .bashrc yoki .zshrc ichiga:
alias gsync='git checkout main && git pull && git checkout - && git rebase main'

Endi gsync β€” joriy branch'ni yangilangan main'ga rebase qiladi. Eslatma: rebase'ning jamoa oqimiga ta'siri uchun Git & GitHub va 14-bobga qarang.

4-mashq yechimi

# Makefile
.PHONY: ci
ci:
    . venv/bin/activate && \
    pip install -r requirements.txt && \
    flake8 . && \
    pytest

# ishlatish:
make ci

Foyda: bitta buyruq butun tekshiruvni bajaradi; yangi a'zo birinchi kuni make ci deb ishga tushadi, og'zaki ko'rsatma kerak emas. Skript ayni paytda hujjat ham β€” "loyihani qanday tekshiriladi" yozib qo'yilgan.

5-mashq yechimi

Namuna javob (mehribon, majburlamaydigan):

"To'g'ri, har bir yorliq alohida arzimas. Lekin hisoblab ko'r: fayl ochishni kuniga ~50 marta qilamiz. Sichqoncha bilan ~5 soniya, Ctrl+P bilan ~1 soniya β€” kuniga 200 soniya, yiliga ~14 soat. Va asosiysi vaqt emas: sichqonchaga uzanganda fikr oqimi uziladi. Bittasini sinab ko'r β€” Ctrl+P β€” bir hafta, yoqmasa tashlab yuborasan. Hammasini birdan yodlash shart emas."

Mezon: vaqt Γ— takror hisobi bor; diqqat argumenti bor; bosim yo'q; bitta kichik qadam taklif qilingan.

6-mashq yechimi

Qo'shaman (namuna):

  1. .gitconfig β€” Git sozlamalari (ism, alias, default branch).
  2. .bashrc / .zshrc β€” shell alias va sozlamalar.
  3. Muharrir sozlamasi (settings.json kabi) β€” tahrirlash muhiti.
  4. .tmux.conf yoki terminal sozlamasi (agar ishlatsangiz).

Hech qachon qo'ymayman:

  • Maxfiy fayllar β€” .env, API kalitlari, token, SSH maxfiy kalitlari. Bular ommaviy repozitoriyada β€” jiddiy xavfsizlik buzilishi (12-bob).
  • Mashina-bog'liq, ko'chmaydigan narsalar β€” mutlaq yo'llar, faqat bitta kompyuterga xos sozlamalar (bular muhitni ko'chiriladigan emas, sindiradigan qiladi).

7-mashq yechimi

Bu yak-shaving, chunki: asosiy ish (sprint vazifasi) qoldirilib, bilvosita, qaytimi noaniq ishga (muhit bezagi) ikki kun ketdi. Mavzu va animatsiya kodni yaxshilamaydi.

(a) Hozir to'xtash: "Muhit bezagi ish bitirmaydi. Hozir vazifaga qayt; muhit 'yetarlicha yaxshi' β€” u bilan bugun ishlay olasan."

(b) Kelajak uchun sog'lom chegara: muhit sozlashni alohida, cheklangan vaqtga ajrat β€” masalan haftada 30 daqiqa yoki faqat real og'riq paydo bo'lganda ("bu amal har kuni meni sekinlashtiryapti β€” buni tuzatay"). Sozlash masala ortidan kelsin, masala sozlash ortidan emas.

Trade-off (ochiq): muhitni umuman sozlamaslik ham xato β€” yomon sozlangan muhit har kuni vaqt va diqqat o'g'irlaydi. Balans: bir martalik, ehtiyojga asoslangan sozlash = sarmoya; cheksiz, ehtiyojsiz sozlash = yak-shaving.

8-mashq yechimi

Bir qatorlik zanjir:

grep ERROR app.log | sort | uniq -c | sort -rn | head -5

Bo'laklar: grep ERROR β€” faqat xato qatorlar; sort β€” bir xillarni yonma-yon qo'yadi; uniq -c β€” guruhlab sanaydi; sort -rn β€” sondan kamayuvchi tartib; head -5 β€” eng yuqori 5 tasi.

Har kuni qilsangiz β€” alias yoki skript:

# .bashrc ichida:
alias toperrors='grep ERROR app.log | sort | uniq -c | sort -rn | head -5'

Yoki fayl nomini argument qiladigan kichik skript yozib, har qanday log uchun ishlatasiz. Bu β€” "uch marta qo'lda qilsang, skript yoz" qoidasining to'g'ridan-to'g'ri amali.


⬅️ Oldingi: 19 β€” Fikr-mulohaza, mentorlik va mojaro Β· 🏠 README Β· Keyingi: 21 β€” Vaqt, diqqat va chuqur ish ➑️