ru
Feedback
Programming ∀

Programming ∀

Открыть в Telegram

Ushbu kanalda IT va Dasturlashga aloqador mavzularda subyektiv fikrlarimni bayon qilaman.

Больше
1 217
Подписчики
Нет данных24 часа
-87 дней
-3530 дней
Архив постов
Birinchisi.
Birinchisi.

Man havas qilgan ko'p dasturchilar FAANGda ishlashmagan. Ammo FAANG ular qilgan narsalarni ishlatadi 🙂

⭐ Комплимент дня всем вам Чувак создал то, что Google и Amazon используют по сей день, и получил отказ на работу в эти же ком
⭐ Комплимент дня всем вам Чувак создал то, что Google и Amazon используют по сей день, и получил отказ на работу в эти же компании через 48 часов. Так что, знайте, если вас не приглашают даже на интервью, значит вы ах*енны! 🔥

1 oyda minimum 15 TB R/W bo'lar ekan manda 😁 Har hafta restart qilaman laptopni :)
1 oyda minimum 15 TB R/W bo'lar ekan manda 😁 Har hafta restart qilaman laptopni :)

Fix Degan commit ham hard refacoting oldida ancha yaxshi ishonavering

Shu ish qilinmasa edi... Kasha tiplar sabab yarim kun umrim o'tdi. Prikol shundaki aynan o'sha ishni qilgan odam huddi ustimdan kulgandak
Hard refactoring
degan commit qoldirgan ekan. Kattagina ... qilib qo'yib hard refactoring deyilgan... Ha inson xojatxonaga katta energiya sarflaydi... Lekin uni tozalashga 10x ko'proq energiya ketadi....

LOL
LOL

Bazi o'nlab man tanigan odamlardan boshqa hammangizga 2 baho. Tassavur qiling interviewda shunaqa savol berilsa nima qilasiz ? Endi bu gaplarimdan kegin biroz bo'lsa ham sohasiga qiziquvchilar GPT bilan bo'lsa ham qilib ko'radi. Qolganlar esa ikkichiligicha qoladi ! ~300 view bo'libti. Shularni yarmini olib tashlasak. Masalan uje bilimi yaxshilar va umuman tushunmaganlar. 150ta ikkichi bor ekan kanalimda 🙂

IQ darajasini programmer darajasi deb bilsangiz bo'ladi va real hayotdagi kabi 3 levelga bo'lib olishingiz mumkin. Hohlasangiz 2ta level qiling ))

Endi programmer va manager uchun tasklarni assign qiladigan funksiya yozib ko'ring. Manager uchun shunchaki asssign qilsin va javob qaytarsin. Programmer uchun esa IQ darajasiga qarab assign qilsin. Demak birinchi navbatda sizga Task degan tip ham kerak bo'lar ekan.

Bu joyda Algebric so'zidan qo'rqishingiz shart emas. Qarang qanchalik sodda va oson. Muhim nuqta sizda aniq input va outputlar mavjud. Mazza emasmi ? Sizni customerlarga task beruvchi dasturingizda ham aniq tiplar bo'ladi va qaysi tipdagi customer ekaniga qarab aniq biror funksiyalar ishlaydi. DDD misoliga ham mos keladi. Shu o'rinda har bir tipga smart constructorlar qilasiz. Tushunishga ham oson.

Algebric effectlar mayli. Eng qizig'i shundaki Algebric data types uje bizni hayotimizga kirib kelib bo'lgan. Masalan typescriptdati Union tiplarni olaylik.


type Programmer = {
   status: 'worker';
   iq: number;
};

type Manger = {
   status: 'worker';
};

type Customer = Programmer | Manager;

Shu ham ADT. Buning foydasi nima bilasizmi ? Agar shunday qilmasangiz o'ylab ko'ring nima qilar edingiz. Albatta optional field qilasiz.


type Customer = {
   status: 'worker';
   iq?: number;
}
Endi bizga aynan qaysi customer kelganini doyim teshirib IQ darajasiga qarab task berishimiz kerak. Bunaqa holatda invariantlar juda ko'p bo'lsa bosh og'riqlar ham ko'p bo'ladi. ADT bilan biz ivariantlarni ham boshqara olamiz. Masalan bizni customer aniq Programmer yoki Manager. Agar yangi tip masalan DevOps qo'shilsa. Yangi tip yasaymiz tamam.

Agar asosan amaliy o'rganish kerak bo'lgan narsalar bo'lsa. Ko'proq code yozishga xarakat qilaveraman. Biror narsa yozib ko'raman, huddi o'sha muammoning yechimini esa boshqa alternativlar bilan qilib ko'raman. Hullas expirementlar ustiga expirementlar bo'lib ketaveradi. Shunchaki qo'l kelishishi uchun code yozish emas balki turli vaziyatlarda aynan o'sha yechim qanday qo'l kelishini ko'rish, o'rganish. Qandaydir mavzuni deep o'qishdan ko'ra biror codebaseni tog'irlash muammo ustida ishlash ko'proq foyda beradi bazida. Shu sababdan amaliyotdan qo'rqmayman va muammoga turli yechim izlab turlicha sharoyitda tadbiq qilib ko'raveraman. Code samplelar real hayotga qo'llanmasligi mumkin shu sababdan foo, bar, baz larni real domainlarga o'giraman. Hullas qayerdadir aynan o'sha yechim kerak bo'lsa birdaniga shuni taklif qilay. Aynan shu narsa tabiy bo'lishi uchun juda ko'p simulation qilaman. Qisqasi biror yangi narsa man uchun intuitiv darajada osonlashmagunicha qilaveraman. Bu biror general mavzualarda juda qo'l keladi. Shu bahona huddi o'sha narsa boshqa muhitlarda ham ishlayverishini taminlay olaman. Kimdir buni algorithm deydi kimdir yana nimadir. Qisqasi biror narsadan maqsadni tushunish uchun o'sha narsani tarixdan boshlab kelaman, ha velosapetni qayta ixtro qilaman 🙂 Har qanday mavzuda boshqalar yechimini ko'rib chiqaman. Imkon boricha ko'proq yechim ko'rish kerak. Biror mavzuni kimgadir tushuntirishga, share qilishga uyalmayman, qizg'onmayman. Sababi aynan o'sha mavzudan man bermagan savollarni boshqasi berishi mumkin. Buni kayf tomoni biror mavzuga man 3 ta savol bergan bo'lsam va boshqalarga tushuntirganimda yana 2 ta unical savol bo'lsa umumiy shu mavzudan 5 ta savol bo'ladi. Hullas intensiv o'rgangan narsamni intentsiv, turli sharoit va muhitlarda tadbiq qilishim kerak. Bazi narsalarni tadbiq qilish uchun oylab-yillab vaqt ketishi mumkin. Ammo imkon qadar barchasini yodda tutib o'sha payt kelishini sabir bilan kutman va payti kelganda qilib ko'rib kayf qilaman.

Endi asosiy jarayonga o'tamiz. Eng muhimi bu davomiylik. Masalan har N vaqtda takrorlanishi shart. Demak yolg'iz qolishingiz mumkin bo'lgan vaqtni tanlashingiz kerak. Bazilar tartibsiz yoki shoshilib o'rganishadi. Ularning fikriga ko'ra bu tabiy bo'lishi kerak. Bu fikrlar va uslubni o'zimda sinab ko'rganman va manda ishlamagan. Balki rostdan ham natija berishi mumkindir. Ammo manda bu uslub yemagan )) Aynan qanday vaqtda o'qish kerak degan narsa esa insonga bog'liq. Muhimi yolg'izlikda bo'lgani afzal. Man uchun ertalab qulay asosiy sababi miyya zoriqmagan bo'ladi. Kegin ko'pincha kechga uchrashuvlar va boshqa shaxsiy masalalar chiqib qolaveradi. Shu sabab eng yaxshi vaqt man uchun ertalab. Biz yog'izlikda N vaqt ajratib o'qish kerakligini o'rgandik. Endi aniqlashtirish kerak. Muhimi uzoq vaqt o'qish emas davomiy o'qish, o'rganish va amaliyot. Shu sababdan manda learning va work processlar juda ham katta farq qilmaydi. Sessiyalar - Odatda biror narsani o'rganishda sessiyalar qilib olaman. Masalan har kuni 4 soat learning uchun ajratdimmi demak 2 soatdan bo'lib olaman. Qachondir shu 2 soat esa 30 daqiqa bo'lgan chunki 2 soat full focusda o'tirolmas edim. Shu sababdan 30 daqiqali sessiyadan boshaganman. Kegin 5 daqiqa dam olaman. 2 soatlik sessiyadan kegin esa 15 daqiqa dam olaman. Kegin keyingi sessiya. Ha buni Lex Fridman routinedan chopganman 😁 Huddi shunday narsani ishda ham qilishga xarakat qilaman. Ammo ishxonada chalg'itadigan faktorlar ko'p. Asosan learningda bu juda zo'r foyda beradi. Demak ertalab kamida 2-4 soat yani bitta sessiya doyimiy learning qilishim kerak. Bu aynan yangi nimadir o'rganish uchun ajratilgan vaqt. Bu vaqt unumidor bo'lishi uchun hamma narsani chopaman. Man bo'lmasam ham zarar bo'lmaydigan hamma narsani rad qilaman, choyxona, ishxona, uchrashuvlar vaxakazolar. Odatda 4 soatlik learning uchun vaqtlar mos kelmasligi yoki bo'lmasa birdan 4 soat bo'lmasligi mumkin. Sababi ish kunlarida 10:00 da ishxonaga borsam. Learning uchun 4:30-5:00 da uyg'onish kerak. Shu sababdan ertalab 1ta sessiya qilishim mumkin yoki 1.5 sessiya. Ish kunlari odatda full focus learning uchun eng kamida 2 soat ajrataman va yuqorida aytganimday buni davomiy ushlashga xarakat qilaman. 2 soat bir mavzuni o'rgandim deylik. Endi uning amaliyot qismi bo'lishi kerak. Amaliyot odatda 4-8 soat bo'lib ketadi yoki undan ko'p. Shu sabab kun davomida o'rgangan narsamni qayerlardadir ishlataveraman va shu haqida o'ylayverman. Bekor qolsam, yo'lda yoki shunchaki bekorchilikda shu mavzuni mustaxkamlashni xarakatida bo'laman. Kattaroq mavzularni esa sessiyalar davomida o'rganib amaliyot qilaman. Masalan bazi mavzudagi mavzuchalar ham katta bo'ladi. Masalan oddiy curry mavzusi ham 2-3 ta lectureda o'rganilsa ham yaxshi tushunishga juda ko'p vaqt ketishi mumkin. Shu sabab vaqtga qarab takrorlab va practice qilib yuraveraman. O'rganish mavzusida asosiy urg'u sessiyalarga qaratildi. Endi navbat amaliyotga. Manda amaliyot juda ham tartibli emas. Odatda learning paytida ham amaliyot qilishga xarakat qilaman. Ammo sal kattaroq mavzu bo'lsa to'liq kirishmayman. Shu sababdan amaliyot uchun quyidagi vaqt oraliqlarini ajratib olganman. 1. Ertalab darsdan kegin yana vaqtim bo'lsa amaliyotlarga o'taman. Tushunganim darajasini tasdiqlaydigan hamma narsalarni qilaman. 2. Kun bo'yi o'rgangan mavzuyim, yoki o'rganayotgan mavzularim yuzasidan suxbat qilaman aynan kimdirlar bilan. Bazisa 3. Kechga ishdan kegin yengil amaliyotlar va tajribalar qilaman. Masalan turli code examplelar, expirementlar vaxakazolar.

Hullas learning masalasida quyidagi qoidalarim bor. 1. Eng qimmat resurs vaqt. Demak ajratilayotgan vaqt erishilishi kerak bo'lgan narsaga nisbatan mos kelishi shart ! 2. Puzzleni yechishga sabr va yurak kerak ! 3. Har qanday bilim hayotga tadbiq qilinishi kerak ! Eng kamida boshqa bilimlarni o'zlashtirishda vosita bo'lishi shart ! 4. Har qanday mavzuni o'rganishda ma'suliyat va distiplina bo'lishi kerak. Bular yetarlicha bo'lmasa demak erishib bo'lmaydi. 5. Chegaralar yo'q ! Yagona chegara bu inson intelektining chegarasi. 6. Mavzudan boshqasini unut ! Dars jarayonida dunyodagi hamma narsani unutish kerak. Boyningda million $ qarzing bo'lsa ham vaqtincha unut etibor darsda bo'lsin. Yillar davomida manda shu qoidalar shakillanib bordi va biror narsani o'rganish uchun tadbiq qilishni boshladim. Hullas hammasi kechqurundan boshlanadi. Kechasi erta uhlash shart ! Odatda uyqu yaxshi bo'lmagani uchun ham biror mavzuni o'rganish vaqtida uyqu keladi. Shu sababdan bu xato. Ertaroq uhlab yaxshilab dam olish kerak hammaning miyyasini dam olish vaqti bor. Manda 6-8 soat uyqu yetadi. Erta uyg'onish, bu qoyidani ko'p buzib o'taversam ham aynan masala biror narsani o'rganishga qaratilgan bo'lsa demak hammasini chopib erta uhlayman va ertabtan darslarni boshlayman. Ertalab miyya to'liq load bo'lishi kerak. Bazilar ertalab uyg'onib uyqisirab yuradi yani 1 soatlarda miyya yonadi ekan. Bunaqa holat manda deyarli bo'lmaydi lekin yechimi muzdakroq dush qabul qilish, ayniqsa xozir yoz bu juda zo'r ishlaydi. Qishda esa biroz toza havoga chiqsangiz sovuq qotsangiz qon aylanib uyqi o'chadi. Ovqatlanish, sog'lom turmush tarzi haqida millard marotaba gapirishadi. Ha buyam qisman foyda beradi. Shaxsan o'zimda ovqatlanish va uyqu normal holatga kelganida miyya quantum bo'lib ketmagan bo'lsa ham perfomance oshgan. Hullas organizmda nimalar bo'layabti va og'zingizga nima kirib chiqayabti buni nazorat qiling vassalom 🙂 Depressiya, ADHD, yana millionlab narsalar haqida gap ketadi. Bularning yechimini hamma turlicha qiladi. Mandagi yechim esa orada dam olishga vaqt qoldirish va maroqli hordiq. Shu o'rinda umuman sinab ko'rmagan narsalarimni sinab ko'rish. Masalan qishda sinab ko'rgan narsam bu tog' chang'isi bo'lgan edi. O'tgan yozda esa tepalikda parashudan ko'tarilish. Eng boshlang'ich adrinalin )). Hullas intensiv ishlayabsizmi demak intensiv dam olish kerak ! Turli ruhiy muammolarga katta etibor qilish shart emas.

Xozir esa biroz tanaffus. Ertalab 7:00 da boshlangan edi. 4 soatda 2ta sessiya learning bo'ldi. Miyyamadagi soat bo'yicha uje 17:00 bo'ldi soat. Lekin endigina 11 bo'libti 😁 Hullas endi biroz dam olamiz, katta tanaffus )) Agar siz ham yaxshi distiplina qilaman desangiz dars jadvalimni ulashaman.

Lecturelar deyarli tugadi. Endi tasklarni hammasini ishlab chiqish kerak. Kegin konspektlar yozaman. Shunda bitta courseni 3 marotaba ko'rgan bo'lar ekanman. Manga o'xshab matematikadan oqsaydiganlarga esa yana qo'shimcha resurslar ko'rish kerak. Masalan bitta taskda fibonacci algorithmni negative sonlarga ham qilishni bergan ekan. Communitydan yordam so'rab amalalb yoptim shu taskni 😁 Chunki negative sonlar uchun fibonacci algorithmni umrimda ko'rmagan edim )) Hullas birgina courseni yakunlash man uchun 100 soatga teng bo'lyabti 🙂

Shu narsa rivojlanganida. Nodejsda ham go kabi gorutine bo'lardi )) Fiberlar ajoyib narsa ! https://github.com/laverdet/node-fibers/tree/master