Jakhongir Rakhmonov - IT


Гео и язык канала: Узбекистан, Узбекский
Категория: Образование


Software Engineer at Amazon. Dasturchilar uchun foydali ma’lumotlar beraman.
Kurslar: https://skillup.uz/author/jakhongir-rakhmonov
Ikkinchi kanal: @JR_TwitGram
Contact: @jakhonfeedback_bot

Связанные каналы  |  Похожие каналы

Гео и язык канала
Узбекистан, Узбекский
Категория
Образование
Статистика
Фильтр публикаций


Oxirgi 2 yilda asosan Rust tili bilan ishlab keldim. Undan oldin esa 7-8 yilcha Pythonda ishlaganman. Bitta narsaga ishonchim komil.

Siz Python, PHP, JavaScript kabi “dynamically typed” tillarda ishlasangiz yoki o‘rgangan bo‘lsangiz, shularni o‘zi bilan kifoyalanib qolmang. 

Statically typed tillar sizga ancha-muncha narsa o‘rgatadi. Nafaqat kodingiz bilan ishlash osonlashadi, balki sizni dasturchi sifatida keyingi darajaga olib chiqadi. Chunki typelar bilan yana o‘ziga yarasha patternlar ham kelib chiqadi. Ularni o‘rganasiz. Katta-katta jamoalarda typelar qanday katta yordam berishini ko‘rasiz. Katta katta refactorlar qanchalik oson bo‘lishini va umuman qo‘rqmasdan kodingizni o‘zgartira olishingizni ko‘rasiz.

Bu degani tepada eslatib o‘tilgan tillar yomon degani emas. Men haligacha Pythonni sevaman desam yolg‘on gapirmagan bo‘laman. Lekin bundan buyog‘iga qandaydir jiddiy loyihalarni faqatgina Rust, Go va boshqa statically typed tillarda yozishga harakat qilaman. 

Sizga ham o‘zingiz uchun shunday bitta til o‘rganishni maqsad qilib olishingizni maslahat beraman.

@jakhonrakhmonov

6.5k 0 42 59 234

Siz orzu qilgan FAANG kompaniyalarning biriga kirdingiz deylik. Qachon qo’shilganingizga qarab u yerdan topadigan daromadingiz bir xil darajadagi ham kasblaringizga nisbatan ancha ko’proq yoki ancha kamroq bo’lishi mumkin.

Odatda ularda “total compensation” - yani barcha oladigan daromadingiz yig’indisi - 3ta qismdan tashkil topadi:

1. Base compensation
2. Sign-on bonus
3. Stocks

Base compensation bu yiliga oladigan “fixed” summa. Sign-on bonus bu shu kompaniyaga kirganingizda beriladigan bir martalik summa (katta bo’lsa bir necha oylarga bo’lib to’lanishi mumkin). Stocks - bu shu kompaniya aksiyalari.

Deylik sizga umuman olganda yiliga $100.000 berishmoqchi:
1. $60.000 - base
2. $10.000 - sign-on bonus
3. $30.000 - stocks

Siz qo’shilgan paytda bir dona stock $100 turadi deb faraz qilaylik. Demak sizga kompaniya 300 dona stock beribdi.

Oradan bir yil o’tdi.

Huddi shu ishga huddi shu darajada yana bir odam ishga qabul qilindi. U paytga kelib bir dona aksiya qiymati $200 bo’ldi. Natijada unga 300ta emas 150ta stock berishdi.

Oradan 4 yil o’tdi. Bir dona stock qiymati hali ham $200da turibdi. Ikkalangiz ham sotishga qaror qildingiz.

Sizning stocklardan olgan umumiy daromadingiz $60.000 bo’ldi. Hamkasbingizniki esa $30.000.

Tabriklayman.

@jakhonrakhmonov

9k 0 35 51 233

0 ta foydalanuvchidan 1 million foydalanuvchigacha bo’lgan yo’l
System Design - 3chi qism.

“Salom do’stlar. Men bir loyihani 0 ta foydalanuvchidan 1 million foydalnuvchigacha olib chiqayotgan dasturchiman. Bu postni o’qishdan oldin hikoyamning birinchi va ikkinchi qismlarini albatta o’qing.

O’tgan safar databaselar haqida gaplashgan edik. Bu safar biz sizlar bilan cache haqida suhbat olib boramiz.”

Maqolani to’liq o’qing va system design bilimlaringizni oshiring: https://sable-cheshire-34d.notion.site/0-ta-foydalanuvchidan-1-million-foydalanuvchigacha-bo-lgan-yo-l-11d56ce39dab808e938bc732bf9281e8

@jakhonrakhmonov

9.6k 0 66 20 100

0 ta foydalanuvchidan 1 million foydalanuvchigacha bo’lgan yo’l
System Design - 2chi qism.

“Salom do’stlar. Men bir loyihani 0 ta foydalanuvchidan 1 million foydalnuvchigacha olib chiqayotgan dasturchiman. Bu postni o’qishdan oldin hikoyamning birinchi qismini albatta o’qing.

O’tgan safar application serverlarimiz haqida gaplashgan edik. Bu safar biz sizlar bilan database taraf bilan shug’illanamiz.

Muammoni eslab olaylik. Bizda database bitta serverda joylashgan edi.”

Maqolani to’liq o’qing va system design bilimlaringizni oshiring: https://sable-cheshire-34d.notion.site/0-ta-foydalanuvchidan-1-million-foydalanuvchigacha-bo-lgan-yo-l-11856ce39dab8064b24cc584d74af87c

@jakhonrakhmonov

11.1k 1 78 15 123

Sun’iy Intellektning eng zo‘r foydasi men uchun kod yozishi emas. U bu narsani o‘rganishda yordam berishida.

Yaqqol misol - https://notebooklm.google.com/

Tasavvur qiling siz biror qiyin mavzudagi kitob o‘qiyapsiz. NotbookLMga joylasangiz shu kitobni podcast shaklidagi “audio overview”sini chiqarib berar ekan.

Undan tashqari kitobda yozilgan narsalar bo‘yicha xohlagan savolingizni bersangiz javob berar ekan. U bu narsani tushunmadingizmi, shu yerda so‘raysiz va javobini olasiz. 

Qiyin kitoblar, whitepaperlar o‘qishni ancha osonlashtirib qo‘yishibdi. Maza!

@jakhonrakhmonov

14.3k 5 310 25 273

0 ta foydalanuvchidan 1 million foydalanuvchigacha bo’lgan yo’l
System Design - 1chi qism.

“Salom. Men dasturchiman va o’zimning loyiham ustida ish olib boryapman. Loyiham hozircha juda ham oddiy va umuman foydalanuvchilarga ega emas lekin mening maqsadim bu loyihani millionlab foydalanuvchilar muammosiz ishlata oladigan darajaga olib chiqish. “

Maqolani to’liq o’qing va system design bilimlaringizni oshiring: https://sable-cheshire-34d.notion.site/0-ta-foydalanuvchidan-1-million-foydalanuvchigacha-bo-lgan-yo-l-10856ce39dab800c9235c5ea1d7b1ba9

@jakhonrakhmonov

13.5k 5 174 41 271

Репост из: Jakhongir Rakhmonov - IT
Microservices are evil 👿

Ha, to'g'ri o'qidingiz. Mikroservislar yomon. Ular dasturchilarning samaradorligini tushiradi, juda sekin ishlay boshlashlariga sabab bo'ladi, kodni qiyinlashtiradi va sekinlashtiradi. Undan tashqari yana bir qancha muammolar olib keladi. Mikroservislar hech qachon monolitlarga tenglasha olmaydi bu jihatdan.

Lekin nega unda Mikroservislar shuncha haypga sabab bo'ldi? Nega hamma ularni ishlatishga, o'rganishga harakat qiladi?

Sababi bitta: boshqa yaxshiroq iloji yo'q.

Siz qilgan produktning foydalanuvchilar soni ko'paygan sari, severlaringizga yuk oshgan sari, siz qurgan produktingizni bo'lishga majbur bo'lasiz. Monolitngizni mikroservislarga bo'lasiz. Bitta katta ma'lumotlar bazasini bir nechta kichikroq bazachalarga bo'lasiz. Ha, aytganimdek ular ishingizni juda ham qiyinlashtiradi. Lekin sizning yangi millionlab foydalanuvchilaringiz sizning produktingizdan foydalanishda davom etishadi.

Bitta muammoni ikkinchi muammo yordamida yechgan bo'lasiz. Bu holatda ikkinchi muammo (mikroservislar) birinchi muammodan (produktingiz yukni ko'tara olmay, ishlamay qolishidan) kichikroq. Hayot davom etadi.

Bu holatni huddi Saraton (Rak) kassaligi va uning davolash usuliga, yani Kimyoterapiyaga solishtirsa bo'ladi. Kimyoterapiya ham odam organizmi uchun juda juda juda katta zarar. Nega unda dunyo bo'ylab aynan shu usuldan foydalaniladi?

Sababi bitta: boshqa yaxshiroq iloji yo'q.

Bitta muammoni ikkinchi muammo yordamida yechgan bo'lasiz. Bu holatda ikkinchi muammo (Kimyoterapiya) birinchi muammodan (Saraton kasalligidan kelib chiqqan o'limdan) kichikroq. Hayot davom etadi.

Tushindingiza? Mikroservislarni faqatgina majbur bo'lganda ishlatish kerak.

Ba'zi bir dasturchilar va kompaniyalar haypga berilib, 10ta foydalanuvchisi yo'q bo'lgan produktlarini mikroservislar yordamida qurishni boshlashadi. Natijada dasturchilar juda sekin ishlashadi, kodda xatolar ko'p bo'ladi, o'zgartirish juda qiyin bo'ladi. Pul olib keladigan foydalanuvchilar yo'q, lekin millionlab foydalanuvchisi bor produktlarda bor bo'lgan muammolar bor. "Worst of the both worlds" deyiladi ingliz tilida. Borib borib korxonada pul qolmasligi mumkin, yoki tezroq ishlaydigan raqib kompaniya bozorni egallab qo'yishi mumkin. Chunki ular mikroservis ishlatmaganda boshidayoq.

Hype Driven Development yaxshilikka olib kelmaydi odatda.

O'zi asli kodni o'zi bu "evil". Iloji boricha kodsiz hal qilgan yaxshi ishlarni. Kodni faqat majbur bo'lganda yozish kerak.

@jakhonrakhmonov

13.6k 0 79 43 192

Agar dasturchilar texnologiyalari O‘zbekistonda ishlab chiqarilganda qanday bo‘lar edi.

Salom, men Qahva tili (☕️) dasturchisiman. Ora-orada Zanglagan tilda (🦀) ham yozib turaman. Yozgan dasturlarimni odatda Toshkent Bulut Xizmatlari orqali foydalanuvchilarga yetkazaman.

To‘g‘risini aytsam, yozgan dasturlarim ba’zan ishlamay qoladi. Ayniqsa qish vaqtida.

Dasturlarim kattalashib ketsa ularni, KichikXizmatchalarga bo‘lib chiqaman. KichikXizmatchalarning yaxshi tarafi shundaki - har bir KichikXizmatni boshqa dasturlash tilida yozsa bo‘ladi. Xohlasam Ilon tilida (🐍) , xohlasam Fil tilida (🐘), xohlasam Borish tilida (🏃), xohlasam hatto Yig‘ilish tilida yozishim mumkin.

Loyihalarni yaxshi boshqarish maqsadida biz Epchil metodologiyalaridan foydalanamiz. Har kuni ishga kelganimizda “O‘rningizdan Turing” yig‘ilishi bo‘lib o‘tadi va har birimiz qilgan ishlarimiz haqida aytib beramiz.

Biror bir ish qilishdan oldin biz JIRAga kirib Chipta yaratamiz va bu chiptada shu ishni bitirish uchun nima qilish kerakligini yozamiz. Masalan, OrqaTaraf dasturchilari OldiTaraf dasturchilari uchun IDI (Ilova Dasturlash Interfeysi) qilib berishi kerak bo‘lsa hammasini shu chiptada kelishib yozib qo‘yamiz.

Bizning jamoada OrqaTarafni odatda Qahva tili (asosan Bahor Etik frameworkida), Ilon tili (asosan TezIDI frameworkida) va Zanglagan tilda yoziladi. Fil tilini ko‘p ishlatmaymiz, chunki Fil tilida OrqaTarafni himoyalash qiyin vazifa. Bekorga Amazonda bu til taqiqlanmagan.

OldiTarafni esa QahvaSkript tilida yozamiz. Aytib o‘tish joizki QahvaSkript va Qahva boshqa boshqa tillar.

Bizning jamoamiz haqida biror savolingiz bo‘lsa izoh qoldiring va men qo‘ldan kelgancha javob berishga harakat qilaman.

@jakhonrakhmonov

16.6k 4 76 85 356

Men o’zimni kuchli dasturchi deb hisoblamayman.

Lekin shu darajaga erishishni juda qattiq hohlayman va keyingi bir necha yillarda bunga erishishga harakat qilaman.

Mening fikrimcha men o’zimni kuchli deb hisoblay olishim uchun quyidagilarni qilishim kerak:

1. Iloji boricha low-level narsalarni tushunish. Computer Hardware ishlashini o’rganish. Assembly va C tillarini o’rganish. O’zimning Operatsion Sistemamni yozib ko’rish. O’zimning interpreter va compilerimni yozib ko’rish.

2. Ishimni haqiqiy engineeringa asoslangan holda qilish. “E, ishlasa bo’ldida. Kichik xatolar chiqsa hech nima qilmaydi” degan mindsetni chetga qo’yib haqiqiy engineering va mathsga asoslangan uslublardan foydalangan holda ish qilish. Buning uchun o’rganishim mumkin bo’lgan bazi bir narsalar: formal methods, automated reasoning, functional programming (haskell, scala, etc.), maths.

3. Millionlab foydalanuvchisi bo’lgan loyihaga katta hissa qo’shish.

Ko’ramiz, o’xshaydimi yo’qmi. Lekin aniq harakat qilib ko’ramiz.

@jakhonrakhmonov

11k 0 76 61 345

Salom, mening ismim “Hashing”

Tasavvur qiling, sizda turli xil rangli bloklar bilan to‘la o‘yinchoq qutingiz bor. Aytaylik, siz qutingizdagi blokning har bir rangini ifodalovchi maxsus raqam (masalan, maxfiy kod) yaratmoqchisiz.

Masalan:

Qizil blok 🟥 = 1

Moviy blok 🟦 = 2

Yashil blok 🟩 = 3

Mana shu “hashing” ga misol bo‘la oladi. Ya’ni, biror narsani (masalan, ranglarni yoki so‘zlarni) raqamlarga yoki boshga kodga o‘zgartirish. O‘zgartirish jarayonida siz foydalangan algoritm (qizil bu 1, moviy bu 2 va hokazo) - hashing algoritmi deyiladi.

Ana endi tasavvur qiling, siz bir nechta shunday bloklardan foydalanib devor yasadingiz: 🟥🟦🟦🟥🟦🟩🟩🟩. Ushbu devorning bloklarini tepadagi hash algoritmidan o‘tkazsak bizda quyidagicha kod hosil bo‘ladi: 12212333. Bu kodni siz qurilgan devorning “checksum”i yoki “hashsum”i deyishingiz mumkin. Keyin, do‘stingizga qo‘ng‘iroq qilib xuddi shunday devor yasashni so‘radingiz. Siz va do‘stingiz bir xil natijaga erishdingizmi, yo‘qmi bilish uchun do‘stingizdan u qurgan devorning checksumini so‘rashingiz mumkin. Agar ular bir xil bo‘lsa, demak bir xil devor qurgan bo‘lasizlar. Agar har xil bo‘lsa, demak kimdir qayerdadir xatolikka yo‘l qo‘ygan.

Ho‘sh, bu nimaga kerak?

Deylik, siz bir juda katta faylni bir soat davomida yuklab oldingiz. Bu fayl to‘liqligicha yetib keldimi yoki biror bir baytlari tushib qoldimi, qayerdan bilasiz? Agar siz yuklab olgan website fayl bilan birgalikda checksumini ham bergan bo‘lsa, siz yuklab olgan faylingizni checksumini hisoblab solishtirishingiz mumkin. Agar ular bir-biriga to‘g‘ri kelgan bo‘lsa, demak bu fayl aynan siz kutgan fayl. To‘g‘ri kelmasa, demak nimadir noto‘g‘ri ketgan. Yo yuklab olish jarayonida muammo bo‘lgan yoki qandaydir yovuz niyatdagi odamlar faylning ichidagi ma’lumotlarni o‘zgartirib qo‘ygan.

Masalan, siz "Kahogi is the best” degan matnni yuklab olmoqchisiz. Uni MD5 hashlash algoritmidan o‘tkazsak, bizda “c12ad8211ced66b0bcbf1eb2ac981988” ko‘rinishdagi checksum hosil bo‘ladi. Endi kimdir bu matnni ataylab "Kahogi is not the best” deb o‘zgartirib qo‘ydi. Kichik bir o‘zgarish, faqatgina “not” so‘zi qo‘shilgan. Uni MD5 algoritmidan o‘tkazsak, “73cce9498e96c93288fa67eb84357cc1” ko‘rinishidagi checksum hosil bo‘ladi. Umuman boshqa checksum. Siz esa aqllisiz. Birinchi checksumni kelgan checksumga solishtirasiz va “Kahogi is not the best” noto‘g‘ri ekanligini anglab yetasiz.

Salom, mening ismim “Hashing” va bu mening jiyanim “Checksum”. Tanishganimdan xursandman.

@jakhonrakhmonov

13.4k 4 54 38 267

Abstraction bilan tanishdik. Demak, zamonaviy dasturchilarning ko’pchiligi juda katta darajadagi abstraction bilan ishlaydi (OS -> assembly -> C -> Python -> Django -> ORM -> etc.)

Endi men sizlarga bir fikrimni aytsam.

Sizning qanchalik kuchli dasturchi ekanligingizni shu abstraction zinasida qanchalik pastga tusha olishingiz aniqlab beradi.

Qancha low-level tusha olsangiz, shuncha kuchli dasturchisiz.

@jakhonrakhmonov

13k 1 41 56 197

Salom, mening ismim Abstraction

Kompyuter bilan 0 va 1 lar orqali emas, odam tilida muloqot qilish uchun Assembly tili o’ylab topilgan. Bu dasturchilar hayotini juda osonlashtirgan. Bu menga, yani abstractionga, bitta misol.

Assembly bilan ham ishlaydiganlarning hayotini osonlashtirish uchun esa C dasturlash tili o’ylab topilgan. Yana bitta abstraction.

C bilan ishlaydiganlar hayotini osonlashtirish uchun esa Python kabi tillar o’ylab topilgan. Yana bitta abstraction.

Python bilan web dasturlash qilayotganlarning hayotini osonlashtirish uchun esa
Django, Flask, Fast API kabi frameworklar o’ylab topilgan.
Yana bitta abstraction.

Toshmat tashqi servislar bilan ishlashni osonlashtirish uchun mahsus classlar va funskiyalar yozgan. Bu ham bitta abstraction.

Kod yozishni hohlamaydiganlar uchun NoCode texnologiyalar o’ylab topilgan. Bu ham bitta abstraction.

Hullas, yillar davomida yuzlab, balki minglab darajada abstractionlar qurilgan. Buni abstraction level deb atashimiz mumkin.

Tanishganimdan hursandman.

@jakhonrakhmonov

14.7k 1 69 26 266

Siz shu rasmda ko‘rib turgan lava lampalar internetning katta qismini xavfsiz qilishga juda katta yordam beradi.

Internetdan foydalanganingizda ma’lumot browseringizdan bir serverga, u serverdan boshqa serverga, boshqa serverdan esa yana bir boshqa serverga jo‘natilishi mumkin. Shu ma’lumot jo‘natilayotgan vaqtda yomon maqsadli odamlar ma’lumotni ushlab olib, uni o‘qiy olishi mumkin. 

Buni oldini olish maqsadida ma’lumot shifrlanadi. Ya’ni masalan “Mening adresim Qo‘shtepa ko‘chasi, 35-chi uy” deyishning o‘rniga uni shifrlab “TWVuaW5nIGFkcmVzaW0gVzaSwgMzVjaGkgdXk=” shaklida yuborish kerak bo‘ladi.

Bunday shifrlash uchun esa randomlik ya’ni tasodifiylik xususiyati juda muhim. Bo‘lmasi bu shifringizni bemalol asil holatiga qaytarib olish mumkin bo‘ladi.

Mana shu yerda bir katta muammo bor. Kompyuterlar 100% random ma’lumot yarata olmaydi. Kompyuterlarning dizayni o‘zi shunaqa, ular mantiqqa asoslangan. Ularning tagida if/else lar yotadi. Ularga bir xil input bersangiz u sizga har doim bir xil natija beradi. Shuning uchun ham kompyuterlar 100% random bo‘lgan ma’lumot bera olmaydi. Bu esa shifrlash uchun yaxshi xabar emas.

Shuning uchun ham xavfsizlik muhim bo‘lgan loyihalarda randomlikni kompyuterdan emas, tashqi manbadan olish kerak bo‘ladi.

Cloudflare bunga yaqqol misol. Dunyodagi millionlab loyihalar Cloudflareni ishlatadi. Ular uchun xavfsizlik suv va havodek muhim. Aynan mana shu kompaniya rasmdagi lava lampalarni randomlik manbasi sifatida ishlatadi.

Sababi oddiy. Ushbu lampalardagi “lava” hech qachon ikki marta bir xil shaklga ega bo‘lmas ekan va natijada shu lava lampalarni kuzatish tasodifiy ma’lumotlar uchun ajoyib manba hisoblanar ekan.

Cloudflare kompaniyasi shu lampalarni kuzatish uchun rasmdagi xonaga kameralar o‘rnatib qo‘ygan. U kameralar ora-orada lampalarni rasmga olib serverlarga yuboradi va u serverlar rasmni random string ga aylantirib ushbu stringni keyin shifrlashda ishlatadi.

Natijada hackerlar Cloudflare tomonidan shifrlangan ma’lumotlarni o‘qiy olmaydi. Beautiful.

@jakhonrakhmonov

15.1k 2 76 34 304

Salom, mening ismim ChatGPT

Men LLM (Large Language Model) oilasidanman. Men internetda mavjud bo‘lgan juda ko‘p textlarni uzoq vaqt davomida juda kuchli kompyuterlarda o‘qib chiqqanman. Ulardan o‘rganganlarimni maxsus ma’lumotlar bazasiga mahsus formatda saqlab qo‘yganman.

Mening qiladigan ishim juda ham sodda. Oson emas, lekin sodda. U quyidagicha:

1. Menga kimdir text jo‘natadi. Deylik, 6 ta so‘zdan iborat.

2. Men bu textni o‘qiyman.

3. Shu berilgan textdan keyin qaysi so‘z kelishini ma’lumotlar bazasidan qarab olib foydalanuvchiga jo‘nataman. Endi text 6 ta emas, 7 ta so‘zdan iborat.

4. Shu 7 ta so‘zni o‘qiyman va shu textdan keyin qaysi so‘z kelishini ma’lumotlar bazasidan qarab olib foydalanuvchiga jo‘nataman. Endi text 7 ta emas, 8 ta so‘zdan iborat.

5. Shu 8 ta so‘zni o‘qiyman va shu textdan keyin qaysi so‘z kelishini ma’lumotlar bazasidan qarab olib foydalanuvchiga jo‘nataman. Endi text 8 ta emas, 9 ta so‘zdan iborat.

6. Shu 9 ta so‘zni o‘qiyman…..

Ko‘rib turganingizdek, menda hech qanday “fikrlash” yo‘q. Men shunchaki qaysi so‘zdan keyin qaysi so‘z kelishini internetdagi ma’lumotlar orqali juda yaxshi o‘rganib olganman. Va shunchaki “popugay” kabi foydalanuvchiga qaytarib beraman. Shuning uchun ham javobni birdaniga jo’nata olmayman. So’zlarni birma bir alohida jo’nata olaman holos.

Tanishganimdan xursandman.

P.S. bu albatta LLMlarning qilayotgan asosiy ishini tushuntirish maqsadida yozilgan, juda soddalashtirilgan kichik post.

@jakhonrakhmonov

19.1k 7 118 55 298

Juniorlar va dasturlashga endi kirib kelayotganlar uchun maslahatim

Yo’nalish va tech stack ni ehtiyotkorlik bilan tanlang. Barchasi haqida o’qib izlanib keyin tanlang.

Sababi: snowball effect.

Deylik siz nima bo’lsa bo’lsin deb Kotlinni o’rganishni boshladingiz. Oradan vaqt o’tib birinchi ishingiz katta ehtimol bilan Android Dasturchisi bo’ladi.

Tajriba orttirasiz, oyligingiz oshadi. Keyingi ishni topish vaqti kelganda ko’proq oylik so’raysiz chunki kuchliroq mutaxasissiz.

Bu jarayon bir necha bor takrorlanadi. Oradan bir necha yil o’tadi.

Siz ohir oqibat sizga distributed backend systems qurish yoqishini tushunib yetdingiz. Endi shu yo’nalishda ishlashni hohlaysiz.

Muammo shundaki siz endi o’zingiz hohlagan oylikni olishingiz qiyin bo’ladi. Chunki sizning tajribangiz boshqa yo’nalishda. Distributed System Engineer bo’laman desangiz endi lavozimda ham pastga tushish kerak bo’ladi.

Albatta bu degani o’zgartirish mumkin emas degani emas. Shunchaki qiyin.

Karyerangiz Strategiyasini to’gri qurish muhim.

@jakhonrakhmonov

12.1k 5 86 58 269

Репост из: Jakhongir Rakhmonov - IT
Nega men yalqovman? Nega ishlarimni vaqtida qila olmayman?

Hayotingizni o’yin deb tassavvur qiling. Bu o’yinning maqsadi shokolad yig’ish. Shokolad yig’ish uchun sizga 100ta kuch berilgan. Bu kuchlarni siz qandaydir ishlarni bajarishga ishlatishingiz mumkin. Shu ishlarni bajarsangiz sizga shokolad beriladi.

Masalan, 5ta kuch ishlatib kitob o’qisangiz sizga shokolad beriladi. 10ta kuch ishlatib o’zingizni ustingizda ishlasangiz sizga shokolad beriladi. 1ta kuch ishlatib YouTube ko’rsangiz sizga shokolad beriladi. 0.5ta kuch ishlatib Instagramda o’tirsangiz sizga shokolad beriladi.

Natijada nima qilasiz? Ozroq kuch talab qiladigan ishlarni bajaraverasiz, shokolad yi’gaverasiz. Shokolad ko’payaveradi. Kuchingiz kamayaveradi.

Lekin bu o’yinda yashirin bir qonun bor. Shokoladlar ikki xil bo’lishi mumkin. Bir turdagi shokoladlar sizga hech nima bermaydi. Bir marta yeysiz, mazani qilasiz va bo’ldi. Ikkinchi turdagi shokoladlar esa sizga o’zi talab qilgan kuchdan 2, 3, 4 barobar kuch qaytarib berishi mumkin.

YouTube, Instagram kabi ishlar sizga foydasiz shokoladlar beradi. Ko’proq kuch talab qiladigan kitoblar, o’zingizni ustingizda ishlashingiz esa kuchingizni ko’proq qilib qaytarib beradigan shokoladlar beradi.

Siz esa shokolad yegingiz kelib oson ishlarni qilishda davom etasiz. Natijada qiyin lekin foydali ishlarga kuch qolmaydi. Bor kuchingiz kundan kunga kamayib ketaveradi. Kundan kunga yalqovlashib boraverasiz.

Hayotda ham huddi shunday qonun bor. Faqat shokolad o’rniga sizning miyyangiz “Dopamine” gormonini hohlaydi. Buni siz tezda qoniqtirish uchun YouTube ko’rasiz, Instagramda o’tirasiz, 18+ filmlar ko’rasiz. Oz muddatga tinchlanasiz. Chunki olgan dopamingizning kuchi sizga hech nima bermaydida. Nosni kaypidek kayp holos. Qiyinroq lekin foydaliroq ish qilganingizda natija boshqacharoq bo’lgan bo’lar edi.

Siz esa arzon va tez “dopamine” yig’ishda davom etasiz. Natijada qiyin lekin foydali ishlarga kuch qolmaydi. Bor kuchingiz kundan kunga kamayib ketaveradi. Kundan kunga yalqovlashib boraverasiz.

@jakhonrakhmonov

11k 0 146 36 194

Kuchli dasturchi bo’lish o’zi asli juda ham sodda masala

Step 1: ishlaydigan biror narsa qurish
Step 2: ishlaydigan va tepadagidan qiyinroq narsa qurish
Step 3: ishlaydigan va tepadagidanda qiyinroq narsa qurish
Step 4: …

Sodda lekin oson emas.

@jakhonrakhmonov

11.8k 0 41 53 287

Репост из: Jakhongir Rakhmonov - IT
Savoliga javob ola olmagan yigit haqida ertak

Bir yigit dasturchilikka juda qiziqib qolibdi va uni o’rganishni boshlabdi. O’rganayotganida turli qiyinchiliklarga duch kelibdi. Bu sohani yaxshiroq biladiganlardan savol so’rashga qaror qilibdi. So’ramoqchi bo’lgan insondan shaxsan so’ramoqchi bo’libdi. Qayerda yashashini qidirib topib uyiga boribdi. Eshikni taqillatibdi, hech kim ochmabdi. Keyin telefon qilishga harakat qilibdi. Nomerini topib telefon qilibdi. Hech kim olmabdi. Ohiri telegramdan qidirib topib unga yozibdi.

“Assalomu aleykum” deb yozibdi. Javob olmabdi. “Yaxshimisiz?” deb yozibdi. Javob olmabdi. “Uzr bezovta qildim shekilli a?!” deb yozibdi. Javob olmabdi. “Bir narsa so’ramoqchi edimda” deb yozibdi. Javob olmabdi. “Aka bir yordam qilingey iltimos” deb yozibdi. Ohiri savol so’ragan inson jahli chiqib “Nima savolingiz bor edi?” deb yozibdi. “Aka qiynalib ketdimda” deb yozibdi. Yana javob olmabdi. “Aka?” deb yozibdi. Yana jahli chiqib “Savolingiz qani?” deb yozibdi. “Aka, shu Pythonda bir ish qilayotgandim xato chiqyaptida. Yordam bervoring debdi”. Haligi inson ohiri bloklab qo’yibdi. Natijada bu yigit savoliga javob ola olmay haftalab vaqti o’tib ketibdi. Har safar savol paydo bo’lganda shunday hatti harakatlar bilan u ko’p vaqt bekorga sarflaydigan bo’libdi.

Shu yigit bilan dasturlashni bir vaqtda boshlagan Toshmat degan yigit esa sal boshqacharoq ish qilibdi. Savol bermoqchi bo’lgan insonga bittayu bitta xat yozibdi:

“Assalomu aleykum. Yaxshimisiz? Men shu kursni o’tayotgan edim. Unda aytilishi bo’yicha shu ishni qilishim uchun quyidagi kodni yozishim kerak ekan. Huddi aytilgandek qildim. Screenshotlar jo’natyapman, ularda kodimni ko’rishingiz mumkin. O’zim Google ham qilib ko’rdim. Lekin Googleda sal boshqacharoq holatlar tushuntirilgan ekan. Iltimos ko’rib bersangiz. Qayerda hato qilyapman?”

Yani bitta xatda savolini zo’r qilib tushuntirib yozibdi. Oradan bir soat o’tar o’tmas o’z savoliga javob olibdi. Har safar savol so’ramoqchi bo’lganda huddi shu tarzda barcha kerakli ma’lumotlar bilan maqsadga o’tib yozishni odat qilib olibdi. Oradan 1 yil o’tib o’zining birinchi ishini topibdi. Oradan 5-6 yil o’tib esa o’ziga eng yoqqan kompaniyaga ishga topshirib interyudan bemalol o’tib olibdi. Hozirda esa o’zining kichik startupini ustida ishlayotgan ekan.

@jakhonrakhmonov

12.5k 2 55 30 229

Tasavvur qiling, siz 10 yoshli bolachasiz. 

Sizning eng yaqin do‘stingiz ko‘chaning narigi tarafida yashaydi. Har tunda ota-onangiz sizni uxlagani xonangizga yuborgandan so‘ng, siz do‘stingiz bilan gaplashishni, fikr almashishni, g‘iybat qilishni xohlaysiz. Buni qanday uddalash mumkin? Telefon yo‘q, wi-fi o‘chirilgan. Lekin siz va do‘stingizda fonarcha bor. Fonarcha bilan gaplashsa bo‘ladimi?

Ikkalangiz ham yozishni, ham o‘qishni bilasizlar. Demak, fonarcha yordamida harflarni oynaga chizsangiz bo‘ladi. “O“ harfini yozish uchun fonarchani yoqib oynaga doira shaklini chizasiz. “I” harfi uchun esa vertikal chiziq chizasiz. Bu ishlaydigan usul, lekin juda ham sekin.

Keyin yaqinda ko‘rgan filmingiz esingizga tushadi. U filmda bir nechta dengizda suzayotganlar bir-birlaridan uzoq masofada turib fonarlarini miltillatib signallar yuborishgan va muloqot qilishgan edi. Balki shu yechim bo‘lar?

Shunday qilib, siz oddiy bir strategiya o‘ylab topasiz. Har bir harf qandaydir ketma-ketlikdagi fonar miltillashini (blinks) anglatadi. Masalan, “A” harfi bitta blink, B esa 2 ta, C esa 3 ta va hokazo. ”Bad” so‘zini jo‘natmoqchi bo‘lsangiz, 2 ta blink, 1 ta blink va 4 ta blink qilasiz. Albatta, kichik pauzalar bilan.

Bu yaxshi progress, lekin bu ham oson ish emas. “How are you?” deyish uchun 131 bir marta blink qilishingiz kerak. Lekin siz yaxshi yechimga yaqinlashib kelyapsiz. “Bunday muammoga yechim topilgan bo‘lishi aniq” degan fikr keladi sizga. Va siz mutlaqo haqsiz. Bir google qilsangiz “Morse code” degan ajoyib ixtiroga duch kelasiz. 

Uning ishlash prinsipi ham xuddi siz o‘ylab topgan usulga o‘xshab ketadi. Faqat Morse codeda 2 xil blink bor xolos - qisqa blink va kattaroq blink (“.” va “—“). Bu usul orqali “How are you?” deyish uchun 32 ta blink kifoya.

So‘zlarni hosil qilish uchun og‘zimiz bilan chiqaradigan tovushlar ham bir kod. Bu kod bizni eshita oladigan va bizning tilimizni tushunadiganlar uchun mo‘ljallangan koddir. Bu kodni biz “og‘zaki nutq” deb ataymiz.

Eshita olmaydiganlar uchun alohida kodlar mavjud - American Sign Language (ASL), LSQ va hokazolar.

O‘qiy oladiganlar uchun esa bizda boshqa turdagi kod mavjud - “yozma matn”.

Ko‘rlar uchun esa yana boshqa turdagi kod mavjud - Braille tizimi.

Muallif kodni yaratish uchun uni “encode” qiladi (ya’ni yozadi yoki gapiradi). Bu kodni tushunish uchun esa qolganlar bu kodni “decode” qiladi (ya’ni eshitadi, o‘qiydi). Ba’zida “transmission error”lar bo‘lishi mumkin. Masalan, matn yozilgan qog‘oz ustiga suv to‘kilsa.

Demak, xulosa qilib aytish mumkinki, code sizga muloqot qilish imkoniyatini beradi. Bu muloqot odam bilan odam o‘rtasida, odamlar va kompyuterlar o‘rtasida yoki kompyuter va kompyuter o‘rtasida ham bo‘lishi mumkin.

Manba: Code - The hidden language of computer hardware and software.

@jakhonrakhmonov

14.1k 1 69 21 268

Sizlarga savol!

Code bu nima o’zi? 🤔

Показано 20 последних публикаций.