Dasturlashda Cyclomatic Complexity degan tushuncha bor. Ya'ni, kodingizda
Hayot ham xuddi shunday. (Meni shaxsiy fikrim bo'yicha albatta😉)
Hayotingizda qanchalik ko'p if-else lar paydo bo'lsa - buni qilsam bu bo'ladi, uni qilsam u bo'ladi degan shartlar ko'paygani sari, hayot ham shunchalik murakkablashib boradi.
Hulosa shuki, hayotdagi eng muhim refactorlardan biri bu yangi narsa qo'shish emas, balki keraksiz
if branchlar qanchalik ko'p bo'lsa, kod shunchalik murakkablashib boradi. Natijada unga yangi qismlar qo'shish, test qilish va hatto tushunish ham qiyinlashadi.Hayot ham xuddi shunday. (Meni shaxsiy fikrim bo'yicha albatta😉)
Hayotingizda qanchalik ko'p if-else lar paydo bo'lsa - buni qilsam bu bo'ladi, uni qilsam u bo'ladi degan shartlar ko'paygani sari, hayot ham shunchalik murakkablashib boradi.
Hulosa shuki, hayotdagi eng muhim refactorlardan biri bu yangi narsa qo'shish emas, balki keraksiz
if larni olib tashlash va iloji boricha yangilarini qo'shmaslikdir.❤4
AI boom davrida kim yutadi va kimni AI replace qila olmaydi? Menimcha, AI cognitive thinking ni to'liq AI ga outsource qilganlarni replace qiladi. Va aksincha, thinkingni o'zi qilib, ko'proq implementation ni AI ga outsource qilsa, AI faqat foyda olib kelsa kerak.
❤1💯1
Universitetda o‘qib yurgan paytlarimda semestr davomida deyarli o‘qimasdim. Imtihonga 1-2 kun qolganda esa kechayu kunduz tayyorlanardim har hil energetiklar, ular kamlik qilsa ice americano ichib😅.O‘sha momentlarda hayotimdagi eng katta muammo - imtihondan o‘tish edi. Go‘yoki undan o‘tsam, hammasi joyiga tushadigandek tuyulardi.
Keyin universitet tugadi, ish boshlandi. Endi esa imtihon o‘rnini deadline'lar, tasklar va projectlar egalladi. Qandaydir murakkab topshiriqni bajarish o‘sha lahzada dunyodagi eng katta muammodek ko‘rinardi.
Bir narsani angladim.
Hayotimizning har bir bosqichida bizni qo‘rqitadigan, shu bilan birga oldinga yurishga majbur qiladigan qandaydir challenge bo‘ladi. Va har safar: "Mana shuni uddalasam, keyin hammasi yaxshi bo‘ladi", deb o‘ylaymiz.
Lekin oradan bir necha yil o‘tib, o‘sha muammoga qarab kulamiz.
"Nahotki shunga shunchalik siqilgan bo‘lsam?"
Endi bir zumga tasavvur qiling.
Bundan yuz yil o‘tadi. Bu dunyoda na siz, na men, na hozir yashayotgan insonlar bo‘lamiz. Biz haqimizda hech kim o‘ylamaydi. Biz bugun juda juda katta deb hisoblayotgan muammolar esa mutlaqo ahamiyatsiz bo‘lib qoladi.
Shunday bo‘lsa ham, inson tabiati qiziq. Muammo paydo bo‘ldimi, uni o‘ylaymiz, xavotir qilamiz, toki u hal bo‘lgunicha. Balki shunday yashash bizning tabiatimizdir.
Lekin bitta narsani vaqt menga o‘rgatdi.
Bugun sizni qo‘rqitayotgan, siz uchun juda katta bo‘lib tuyulayotgan muammo ham bir kun kelib ortda qoladi.
Bu "hammasi yaxshi bo‘lib ketadi" degani emas.Balki bundan ham yomoni kelar🤣.Ammo bugungi muammo, biz qo'rqayotgan, havotir olayotgan barcha barcha narsalar o'tkinchi.
Bir necha yildan keyin ehtimol siz ham ortga qarab:
"Shunga shunchalik xavotir olgan ekanman-a", deb kularsiz.
Yaxshidir, yomondir, bu kunlar ham o‘tadi.
Keyin universitet tugadi, ish boshlandi. Endi esa imtihon o‘rnini deadline'lar, tasklar va projectlar egalladi. Qandaydir murakkab topshiriqni bajarish o‘sha lahzada dunyodagi eng katta muammodek ko‘rinardi.
Bir narsani angladim.
Hayotimizning har bir bosqichida bizni qo‘rqitadigan, shu bilan birga oldinga yurishga majbur qiladigan qandaydir challenge bo‘ladi. Va har safar: "Mana shuni uddalasam, keyin hammasi yaxshi bo‘ladi", deb o‘ylaymiz.
Lekin oradan bir necha yil o‘tib, o‘sha muammoga qarab kulamiz.
"Nahotki shunga shunchalik siqilgan bo‘lsam?"
Endi bir zumga tasavvur qiling.
Bundan yuz yil o‘tadi. Bu dunyoda na siz, na men, na hozir yashayotgan insonlar bo‘lamiz. Biz haqimizda hech kim o‘ylamaydi. Biz bugun juda juda katta deb hisoblayotgan muammolar esa mutlaqo ahamiyatsiz bo‘lib qoladi.
Shunday bo‘lsa ham, inson tabiati qiziq. Muammo paydo bo‘ldimi, uni o‘ylaymiz, xavotir qilamiz, toki u hal bo‘lgunicha. Balki shunday yashash bizning tabiatimizdir.
Lekin bitta narsani vaqt menga o‘rgatdi.
Bugun sizni qo‘rqitayotgan, siz uchun juda katta bo‘lib tuyulayotgan muammo ham bir kun kelib ortda qoladi.
Bu "hammasi yaxshi bo‘lib ketadi" degani emas.Balki bundan ham yomoni kelar🤣.Ammo bugungi muammo, biz qo'rqayotgan, havotir olayotgan barcha barcha narsalar o'tkinchi.
Bir necha yildan keyin ehtimol siz ham ortga qarab:
"Shunga shunchalik xavotir olgan ekanman-a", deb kularsiz.
Yaxshidir, yomondir, bu kunlar ham o‘tadi.
❤1👍1
Hozirgi ishlayotgan joyim talabat da 2 yil oldin ishni boshlagan ilk paytlarimdan men deyarli hali umuman qilib ko'rmagan backend va SDUI (Server Driven UI) bo'yicha loyiha qilishni boshladik. Eng qizig'i jamoada birorta backend engineer yo'q edi, hammamiz mobile engineerlar edik, lekin bir balo qilib C# da backend yozib, loyihani deyarli tugattik, va loyihani launch qiladigan kun keldi, hamma stakeholderlar hatto CEO, CPO, CTO largacha loyiha tayyor deb ovoza qilingan. Launch qilishimizdan bir necha soat oldin, Senior Managerimiz hammani yig'ib qani observability dashboardni ochinglarchi deb qoldi. Hammamiz bir birimizga qaradik, sababi bizda observability dashboard tugul, observabilityni o'zi yo'q edi. Biz loyiha bitti degani faqat u ishlayapti, endi feature flag orqasida uni launch qilamiz va observabilityni keyinroq qo'shsak ham zarar qilmaydi deb o'ylagan edik. Xatto jamoadagi ba'zilar hali observability nimaligini ham bilmasdi😂. Shunda managerni jahli chiqib ketti, qanday qilib loyihani observabilitysiz launch qilish mumkin deb.Va 3-4 oy qilinmagan ishni o'sha kuniyoq 2 soatda qildik AI siz qo'lda code yozib, chunki u paytlarda AI agentlar unchalik rivojlanmagan edi. Men oldin hajmi kichik bo'lgan loyihalarda ishlab yurib, observabilityning ahamiyatini bilmasdim, lekin katta mln lab user lar ishlatadigan service larda observability bu eng muhim narsa ekanini va usiz umuman loyihani launch qilib bo'lmasligini o'sha dars orqali tushundim.
👍2❤1
Istalgan organizationda Senior Engineer bilan Middle Engineerni ajratib turuvchi quyidagi farqlar bo'ladi:
1. Leadership
2. Communication
3. Stress / Pressure management
va bu farqni hayotga ham tadbiq etsa bo'ladi.
1. Leadership
2. Communication
3. Stress / Pressure management
va bu farqni hayotga ham tadbiq etsa bo'ladi.
❤1
#story
Dasturchi bo'lib ishlashni boshlaganimning ilk yillari, 2021-yilda, bir koreys kompaniyasiga ishga kirdim. Bir nechta offerlar bo'lishiga va o'sha kompaniya men yashaydigan joy - Incheondan 50 km uzoq bo'lishiga qaramay, shu kompaniyani tanladim. Sababi project juda ham qiziq edi men uchun, ya'ni turli bino-inshootlarga borib gaz, termostat, elektr tizimlarini masofadan boshqaradigan va monitor qiladigan desktop app qilar edik.
Birinchi borgan kunim juda ham excited bo'ldim. Sababi, o'sha paytdagi holatim uchun yaxshi oylik, hali talaba bo'lishimga qaramay stabil ish va yaxshi jamoa (deb o'ylagan edim) bor edi. Ilk kuniyoq kompaniyaning CEO'si o'zining xonasiga chaqirib, u yerdagi yagona foreigner bo'lganim uchun rosa motivatsiya berib, "Bu yerda hali ko'p ishlaysan, o'g'lim", degan edi.
Ishning eng yomon tomoni esa men u yerga metroda borar edim va borishga 2 soat, qaytishga ham 2 soat ketib, 4-5 soat umrim yo'lda o'tib ketardi. Birinchi hafta unchalik bilinmadi, lekin 2-haftadan kech qola boshladim. Ish 9 da boshlansa, men 1-2 daqiqa kech qolar edim. To'g'risi, men uchun oldin erkin ishlab yurganim uchun bu hech narsa emas edi, lekin har safar kech qolganimda managerim o'zi eshikning tagida kutib olib, xonasiga olib kirib ketib, yarim soat ma'ruza o'qirdi.
Ishda communication qilish uchun KakaoTalk (korean messenger) ishlatardik va har kuni ish yakunlanishiga ozgina qolganda manager Excel sheet berardi-da, hamma o'sha kuni nima qilganini yozib, o'sha Excel jadvalini yana Kakao guruhiga qaytarib tashardik. Keyin yana, nechida kelganimizdan qat'iy nazar, managerdan oldin ketish odobsizlik sanalardi, lekin menga farqi yo'q deb ketib yuborardim o'qishim bo'lganligi va uyim uzoqligini bahona qilib😅.
Oxiri shunaqa narsalar bo'laverganligi uchun managerga to'g'ri borib tushuntiraman desam, urishib ketgan edi (balki o'sha kuni xotini bilan urushib qolgandir) va "Illegally ishlaganing uchun seni immigratsiyaga topshirib yuboraman", (rostan illegally ishlardim lekin😂) deb qo'rqitgandi o'zicha. Keyin puliga ham qaramasdan "bor-e" deb chiqib ketgandim ishdan.
Hozir o'sha ish muhitida ishlaganimni o'ylasam o'zimga achinib ketaman, lekin bir tomondan xursand ham bo'laman, dunyoda shunaqa odamlar ham borligini ko'rganim uchun 😂.
Dasturchi bo'lib ishlashni boshlaganimning ilk yillari, 2021-yilda, bir koreys kompaniyasiga ishga kirdim. Bir nechta offerlar bo'lishiga va o'sha kompaniya men yashaydigan joy - Incheondan 50 km uzoq bo'lishiga qaramay, shu kompaniyani tanladim. Sababi project juda ham qiziq edi men uchun, ya'ni turli bino-inshootlarga borib gaz, termostat, elektr tizimlarini masofadan boshqaradigan va monitor qiladigan desktop app qilar edik.
Birinchi borgan kunim juda ham excited bo'ldim. Sababi, o'sha paytdagi holatim uchun yaxshi oylik, hali talaba bo'lishimga qaramay stabil ish va yaxshi jamoa (deb o'ylagan edim) bor edi. Ilk kuniyoq kompaniyaning CEO'si o'zining xonasiga chaqirib, u yerdagi yagona foreigner bo'lganim uchun rosa motivatsiya berib, "Bu yerda hali ko'p ishlaysan, o'g'lim", degan edi.
Ishning eng yomon tomoni esa men u yerga metroda borar edim va borishga 2 soat, qaytishga ham 2 soat ketib, 4-5 soat umrim yo'lda o'tib ketardi. Birinchi hafta unchalik bilinmadi, lekin 2-haftadan kech qola boshladim. Ish 9 da boshlansa, men 1-2 daqiqa kech qolar edim. To'g'risi, men uchun oldin erkin ishlab yurganim uchun bu hech narsa emas edi, lekin har safar kech qolganimda managerim o'zi eshikning tagida kutib olib, xonasiga olib kirib ketib, yarim soat ma'ruza o'qirdi.
Ishda communication qilish uchun KakaoTalk (korean messenger) ishlatardik va har kuni ish yakunlanishiga ozgina qolganda manager Excel sheet berardi-da, hamma o'sha kuni nima qilganini yozib, o'sha Excel jadvalini yana Kakao guruhiga qaytarib tashardik. Keyin yana, nechida kelganimizdan qat'iy nazar, managerdan oldin ketish odobsizlik sanalardi, lekin menga farqi yo'q deb ketib yuborardim o'qishim bo'lganligi va uyim uzoqligini bahona qilib😅.
Oxiri shunaqa narsalar bo'laverganligi uchun managerga to'g'ri borib tushuntiraman desam, urishib ketgan edi (balki o'sha kuni xotini bilan urushib qolgandir) va "Illegally ishlaganing uchun seni immigratsiyaga topshirib yuboraman", (rostan illegally ishlardim lekin😂) deb qo'rqitgandi o'zicha. Keyin puliga ham qaramasdan "bor-e" deb chiqib ketgandim ishdan.
Hozir o'sha ish muhitida ishlaganimni o'ylasam o'zimga achinib ketaman, lekin bir tomondan xursand ham bo'laman, dunyoda shunaqa odamlar ham borligini ko'rganim uchun 😂.
❤1
Mohammed bin Rashid Library
❤4🔥1
#lesson #unit_testing #mutation_testing
O'tgan yili vaqtinchalik ishxonadagi bir boshqa projectda ishlashga to'g'ri keldi. Men qo'shilgan paytda, bizda buglar juda ham ko'p edi va biz buni bir nechta sabablarini ko'rdik, ya'ni project qisqa vaqtda qilinganligi, unga company tomonidan katta e'tibor berilmaganligi va shuning uchun code sifatsiz yozilganligi. O'sha paytda bizda unit test coverage 70% edi va biz o'yladik unit test coverageni oshirish ya'ni code ni ko'proq qismlarini testlash buglar sonini kamaytiradi deb.
Va shu o'yda men code coverage ni 95% ga olib chiqdim, hamma stakeholderlar xursand, sababi bu number chiroyli ko'rinardi. Lekin bu nima berdi bizga? Menga test coverage ni 25% ga oshirdi degan recognition va project ga HECH NARSA. Test coverage ni oshirish buglar sonini umuman kamaytirmadi, bu faqat menga va managerimga shuncha improvement qildi degan bluffy obro' olib keldi.
Bu degani unit test yozmaslik kerak deganimi? Yo'q albatta, faqat unit test bu mutlaqo deterministic emas, ya'ni hamma line test bilan cover qilindi degani test sifatini belgilab bermaydi.
Xo‘sh, unda muammo nimada edi?
Muammo shundaki, coverage faqatgina kodning qaysi qatorlari ishga tushganini ko‘rsatadi, xolos. Lekin o‘sha qatorlar to‘g‘ri tekshirilayotganini, ya’ni testning sifatini zarracha ham belgilab bermaydi. Biz shunchaki assertion’larsiz yoki yuzaki check’lar bilan coverage foizini sun’iy ravishda shishirgan edik.
Aynan shu nuqtada biz o‘zimizga bitta savolni berishimiz kerak: "Biz yozgan testlarning sifatini qanday baholaymiz? Bizni kim test qiladi?"
Mana shu muammoni hal qilish uchun dasturlashda Mutation Testing degan tushuncha bor.
Bu usul quruq coverage foiziga ishonmasdan, kodingizni vaqtinchalik xotirada ataylab buzib ko‘radi (masalan, if (a > b) ni if (a >= b) ga o‘zgartiradi yoki mantiqiy operatorlarni teskarisiga aylantiradi). Keyin esa siz yozgan testlarni shu buzilgan kodga qarshi ishga tushiradi.
Agar kodingiz buzilganda testlaringiz xatolik berib, buni payqasa - demak testingiz sifatli.
Agar kod o‘zgarib, buzilib ketsa-yu, lekin testlaringiz hech narsa bo‘lmagandek "yashil" bo‘lib o‘tib ketaversa - demak o‘sha joydagi coverage shunchaki quruq raqam xolos.
Loyihadagi tajribamdan chiqargan eng katta xulosam shu bo‘ldiki: chiroyli raqamlar ortidan quvish kerak emas. 95% lik sifatsiz va yuzaki coverage’dan ko‘ra, real xatolarni tuta oladigan 50% lik sifatli test suite loyihaga ming marta ko‘proq foyda keltirishi mumkin.
O'tgan yili vaqtinchalik ishxonadagi bir boshqa projectda ishlashga to'g'ri keldi. Men qo'shilgan paytda, bizda buglar juda ham ko'p edi va biz buni bir nechta sabablarini ko'rdik, ya'ni project qisqa vaqtda qilinganligi, unga company tomonidan katta e'tibor berilmaganligi va shuning uchun code sifatsiz yozilganligi. O'sha paytda bizda unit test coverage 70% edi va biz o'yladik unit test coverageni oshirish ya'ni code ni ko'proq qismlarini testlash buglar sonini kamaytiradi deb.
Va shu o'yda men code coverage ni 95% ga olib chiqdim, hamma stakeholderlar xursand, sababi bu number chiroyli ko'rinardi. Lekin bu nima berdi bizga? Menga test coverage ni 25% ga oshirdi degan recognition va project ga HECH NARSA. Test coverage ni oshirish buglar sonini umuman kamaytirmadi, bu faqat menga va managerimga shuncha improvement qildi degan bluffy obro' olib keldi.
Bu degani unit test yozmaslik kerak deganimi? Yo'q albatta, faqat unit test bu mutlaqo deterministic emas, ya'ni hamma line test bilan cover qilindi degani test sifatini belgilab bermaydi.
Xo‘sh, unda muammo nimada edi?
Muammo shundaki, coverage faqatgina kodning qaysi qatorlari ishga tushganini ko‘rsatadi, xolos. Lekin o‘sha qatorlar to‘g‘ri tekshirilayotganini, ya’ni testning sifatini zarracha ham belgilab bermaydi. Biz shunchaki assertion’larsiz yoki yuzaki check’lar bilan coverage foizini sun’iy ravishda shishirgan edik.
Aynan shu nuqtada biz o‘zimizga bitta savolni berishimiz kerak: "Biz yozgan testlarning sifatini qanday baholaymiz? Bizni kim test qiladi?"
Mana shu muammoni hal qilish uchun dasturlashda Mutation Testing degan tushuncha bor.
Bu usul quruq coverage foiziga ishonmasdan, kodingizni vaqtinchalik xotirada ataylab buzib ko‘radi (masalan, if (a > b) ni if (a >= b) ga o‘zgartiradi yoki mantiqiy operatorlarni teskarisiga aylantiradi). Keyin esa siz yozgan testlarni shu buzilgan kodga qarshi ishga tushiradi.
Agar kodingiz buzilganda testlaringiz xatolik berib, buni payqasa - demak testingiz sifatli.
Agar kod o‘zgarib, buzilib ketsa-yu, lekin testlaringiz hech narsa bo‘lmagandek "yashil" bo‘lib o‘tib ketaversa - demak o‘sha joydagi coverage shunchaki quruq raqam xolos.
Loyihadagi tajribamdan chiqargan eng katta xulosam shu bo‘ldiki: chiroyli raqamlar ortidan quvish kerak emas. 95% lik sifatsiz va yuzaki coverage’dan ko‘ra, real xatolarni tuta oladigan 50% lik sifatli test suite loyihaga ming marta ko‘proq foyda keltirishi mumkin.
🔥2❤1
I don't know if AI is going to take my job, but I know if AI is gone now, I will lose my job))
😁3👍1🔥1
Uber is acquiring Delivery Hero!
https://www.deliveryhero.com/newsroom/delivery-hero-and-uber-to-join-forces-to-deliver-more-for-customers-vendors-and-riders/
https://www.deliveryhero.com/newsroom/delivery-hero-and-uber-to-join-forces-to-deliver-more-for-customers-vendors-and-riders/
Deliveryhero
Delivery Hero and Uber to Join Forces to Deliver More for Customers, Vendors and Riders | Delivery Hero
Always delivering an amazing experience.
❤1
Forwarded from Uzbekonomics
Hayot qiziq. Hamma narsani joy-joyiga qo'yib qo'yadi.
Bir necha hafta oldin ispaniyaliklarni umidsiz, yomon odamlar deb ular bilan hech qanday aloqada bo'lishni istamasligini aytib Ispaniya bilan barcha savdo-sotiqni to'xtatishga, ular bilan gaplashmaslikka chaqirgandi.
Mana, bugun butun dunyoning oldida Ispaniyani Jahon chempionligi kubogi bilan taqdirlamoqda. Juda majoziy bo’ldi.
@uzbekonomics
Bir necha hafta oldin ispaniyaliklarni umidsiz, yomon odamlar deb ular bilan hech qanday aloqada bo'lishni istamasligini aytib Ispaniya bilan barcha savdo-sotiqni to'xtatishga, ular bilan gaplashmaslikka chaqirgandi.
Mana, bugun butun dunyoning oldida Ispaniyani Jahon chempionligi kubogi bilan taqdirlamoqda. Juda majoziy bo’ldi.
@uzbekonomics
❤1👏1🎉1