Dev thinking loud
1.68K subscribers
119 photos
8 videos
3 files
321 links
Dasturlash boyicha video darslar, subyektiv fikrlar, kundalik misollar, bahsli mavzular.

Youtube kanal: https://www.youtube.com/@ravshansbox

Muallif: @ravshansbox
Download Telegram
Qo'shimcha ishlash(overtime)

So'nggi paytlarda maslakdoshlarimdan shu masalada ko'p etirozlar eshityapman. Bazan ish beruvchilar hodimlarni qo'shimcha ishlashga(overtime) majburlash holatlari kuzatilayotgan ekan. Ustiga ustak bu vaqtlar uchun maosh ham to'lanmas ekan.

Bu holat bir paytlari o'zimning ham boshimdan bir necha marotaba o'tgani va har gal bu menga juda qattiq salbiy tasir qilgani uchun shu mavzu haqida yozishga qaror qildim.

Bu mavzuda bir qancha tomonlar bor, keling birgalikda bir-bir o'tib chiqaylik.

Masalaning birinchi tomoni, bu holat sabab hodimning foydali ish koeffisiyenti tushib ketadi(burnout). Bu masalaning eng dolzard tomoni, chunki bunda har ikki tomon zarar ko'radi. Ishdan keyin qo'shimcha soatlarda yoki shanba/yakshanba kunlari majburiy ishlatilgan hodimning keyingi kun/haftadagi ish unumdorligi keskin tushib ketadi (bazan hodim juda yosh bo'lsa bu sezilmasligi mumkin, ammo bu holat bir muddat davom etgandan keyin albatta seziladi), natijada bundan biznes ham zarar ko'radi.

Masalaning ikkinchi tomoni, bunaqa tajriba hodimga psihologik jihatdan salbiy tasir ko'rsatadi va hodim sekin-asta boshqa kompaniya qidirishga tushadi, alal oqibat qayerdandir hatto pastroq oylikka bo'lsa ham ish chiqadi va hodim kompaniyani tark qiladi. Natijada kompaniya hodimdan ayriladi. Yangi hodimni qidirib topish, uning unumli ishga tushib ketishi esa biznes uchun ham vaqtdan ham moliyaviy jihatdan zarar yetkazadi.

Masalaning uchinchi tomoni, bunaqa holat bilan ishdan ketgan hodim kompaniya haqida hech qachon ijobiy gapirmaydi, natijada kompaniyaning sohadagi obro'si tushib ketadi va tajribali hodim hech qachon bunaqa kompaniyaga ishga kelmaydi. Yana kompaniya zararda.

Masalaning to'rtinchi tomoni, bir insonni o'z roziligisiz yoki muhtojlik holatidan foydalanib qo'shimcha ishlashga majburlash na insoniy va na shar'iy tomondan to'gri bo'lmaydi. Bu ish hodimga nisbatan shar'an zulm hisoblanadi. Bunaqa biznesdan baraka ko'tariladi.

Endi masalaning sabablariga kelsak. O'zi nega bu tajriba qo'llaniladi?
Odatda har qanaqa biznes/reja "vaqt tahmin"(estimation)lariga asoslanadi. Mana shu "vaqt tahmin"larni togri hisob-kitob qilish odatda boshqaruv(management)ning zimmasida bo'ladi. Agar shu bosqich noaniq bajarilsa (yoki umuman bajarilmasa), boshqaruv ozi qilgan xatolarni qoplash uchun mazkur tajribaga murojaat qiladi. Yani qo'pol qilib aytganda boshqaruvning xatolarini hodimlar qoplashi kerak bo'lib qoladi.

Endi masalaning yechimiga kelsak. Bunaqa holatlarning oldini olish uchun boshqaruv bilan shug'ullanadigan qatlamga maslahatim o'zingizning sohangiz bo'yicha biron joyda bilim oling yoki malaka oshiring. "Biznesni boshqaruv" yoki "Proyektni boshqaruv" degan fanlar bor, bular bo'yicha universitetlarda yo'nalishlar va markazlarda kurslar bor. O'zingizning malakasizligingiz uchun boshqalarni qiynashdan voz keching.

@dev_thinking_loud
👍40🔥6🙏1🤣1
Semantic HTML

Web dasturlarning strukturasini yasayotganda muhim qadamlardan biri to’gri elementlarni tanlash hisoblanadi.
Bazi saytlarga kirib devtoolsni ochib qaralsa asosan div va span elementlardan tashkil topgan bo’ladi. Balki muallifi HTML semantikasini yaxshi bilmas, balki unga bunday talab ham qoyilmagandir(o’zi bunaqa talab qoyilishiga ehtiyoj bormikin?), lekin bu tashlab o’tib ketiladigan mavzu emas, menimcha.

Semantic HTML deb “content parcha”si bilan birga faqat funksionalning ozi emas balki unga tegishli mano/mohiyat (bu yerda osha “content parcha”sining mazkur documentga nisbatan munosabati nazar tutilgan) ham birga kelishiga aytiladi. Aytaylik documentga “Hello World” degan matn bor, agar uni h1 elementga o’rasak u content bu document uchun birlamchi heading vazifasini bajaradi (Headinglarga tegishli qoidalar bor). Agar bu contentni div elementga o’rasak, bu shunchaki manosiz content bo’ladi.

Shu o’rinda aytib o’tishimiz kerak, tag elementlar hech qachon browser ularga bergan default “style”lar bilan tanlanmaydi, chunki “style”lar istalgan vaqtda istalgan shaklda “override” qilinishi mumkin.

Semantic elementlar ishlatishning quyidagi afzalliklari bor:
- Functionality. Togri element bilan togri funksional keladi. Masalan div yoki spandan to’laqonli button yoki a yasashning imkoni yoq.
- Accessibility. Bazi elementlarda imkoniyatlari cheklangan foydalanuvchilar uchun qulayliklar bor. O’rniga div va span ishlatish ularning sayt bilan muloqotini qiyinlashtiradi.
- SEO. Search enginelar togri semantika bilan tuzilgan saytlarni yuqoriroq baholaydi(divlar o’rniga main, section, aside, nav, header, footer…)
- Easy testing. Semantic elementlarni ishlatish elementlarni testlarda togri topib olishni osonlashtiradi va test id (darvoqe, test idlarni ishlatish antipatternligini bilarmidingiz?) larga ehtiyojlarni keskin kamaytiradi.

Savol: ohirgi marta ul (unordered list) o'rniga qachon ol (ordered list) elementini ishlatgansiz va ularning qanday farqi bor?

@dev_thinking_loud
👍342
Utilise it as much as it does not hurt you!

Bugun bitta postga ko’zim tushib qoldi. TypeScriptni qanchalik chuqur va murakkab ishlatish haqida. Muallif hammaga ma’lum Evan You. Yuqoridagi maslahatni bergan.

Men odatda bu maslahatni testing uchun berardim. Chunki “qancha test yozish kerak?” (qanchasi sizni qoniqtirsa), “code coverage threshold qancha bo’lishi kerak?” (o’zi kim o’ylab topgan bunaqa talab bo’lishi kerakligini?) yoki “qaysi tur testlarni ko’proq yozish foydali?” (uzun mavzu, umumiy qilib aytganda hammasini yozib koring, qaysi kamroq resurs olsa oshani ko’proq) kabi ko’p tabiiy savollar uchrab turadi. Men odatda bitta implementation uchun eng kamida bitta case (happy path) ko’rilishi kerak deb aytardim.
Masalan React component implement qilinsa oshani hech bolmasa render test yozish kerak. Bu narsani odat qilgandan keyin bir muddat o’tib sal murakkabroq holatni test qilish ishtiyoqi paydo bo’ladi. Nega deysiz mi? Chunki bu muddat ichida basic component render testlar qanaqadir natija berishga ulgurgan bo’ladi, bazi regressionlarni oldini olganiga dasturchi guvoh bo’lgan bo’ladi. Keyin qiziqish paydo bo’ladi, sal murakkabroqroq va hosroq holatlarni ham test qila olaman mi degan savol paydo bo’ladi. Orqasidan izlanish, o’rganish, eksperiment, tatbiq qilish, odatga aylantirish, tdd va hk… Undan keyin esa test yozmasdan commit qila olmaslik “kasalligi” paydo bo’ladi, peerlar review request qilishganda ozgargan filelar ichidan birinchi test filelarni qidirish odati chiqadi.

Hammasi esa eng birinchi qadamdan boshlangan edi: utilise it as much as it does not hurt you

@dev_thinking_loud
👍24🤩1
Forwarded from MJ
Media is too big
VIEW IN TELEGRAM
Frontend dasturlash ish o'rni uchun mock intervyu
🔥16👍5
Forwarded from MJ
Media is too big
VIEW IN TELEGRAM
Mock intervyu va umumiy frontendga oid savollar muhokamasi suhbati
🔥27👍5
ES6(ES2015) va undan keyin qoshilgan ES "proposal"larni yillik "specification"lar tasnifida qayta ko'rib chiqamiz (balki esimizdan ko'tarilganlari bordir)

https://github.com/sudheerj/ECMAScript-features
👍16
Haqiqatdan, shu mavzular ko'pincha jiddiyga olinmaydi
👍38🤝1
Mana nima sababdan JavaScriptda hamma o'zgaruvchilar heapda saqlanadi: chunki stackdagi joy function tugashi bilan tozalanadi (function ozi stackdan "pop" bo'ladi), closuredagi functionga esa u joy keyin ham kerak.

Manba:
https://exploringjs.com/deep-js/ch_environments.html#recursion-via-environments
👍22🔥3💯21👏1
Forwarded from Jakhongir Rakhmonov - IT
Ingliz tilini bilmasangiz siz yaxshi dasturchi emassiz.

@jakhonrakhmonov
👍45👀4👎2🤔2
CSS Box Model visual korinishda

Box-sizing: content-box (default) holatda, total size = margin + border + padding + size(width/height)

Box-sizing: border-box holatda, total size = margin + size(width/height)
👍44
Bazan object propertylarining kalit yoki qiymatlari ustida amal bajarishimizga to'gri keladi.

Object.entries/Object.fromEntries APIlari bunaqa holatda qo'l keladi
🔥30👍8👀1
Sizningcha qanday natija olamiz va nega?
👍11