Jakhongir Rakhmonov - IT


Channel's geo and language: Uzbekistan, Uzbek
Category: Education


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

Related channels  |  Similar channels

Channel's geo and language
Uzbekistan, Uzbek
Category
Education
Statistics
Posts filter


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

5.3k 3 134 37 228

Forward from: 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

8k 0 75 43 177

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

13k 4 72 85 337

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

8.6k 0 67 61 333

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

11.2k 4 51 38 262

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

11.3k 1 36 56 192

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

12.7k 1 66 26 262

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

13.6k 2 75 34 299

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

17.4k 7 116 55 296

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

10.6k 2 82 58 264

Forward from: 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

9.9k 0 142 36 191

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

10.7k 0 40 53 285

Forward from: 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

11.5k 2 55 30 227

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

13.5k 1 67 21 266

Sizlarga savol!

Code bu nima o’zi? 🤔


“Yangi klaviatura olsam maza qilib code yozaman…”

“Yangi sichqoncha olsam maza qilib code yozaman…”

“Yaxshi monitor kerak menga…”

“Hmm, kreslo noqulay negadir…yaxshisidan olishim kerak, keyin maza qilib kod yozaman…”

Agar shunaqa hayollar sizda ham bo’lsa, nimanidir o’zgartirishingiz kerak. Bularning turgan-bitgani bahona holos. O’zingizni aldayapsiz.

📱 Muallif blogi | 👨‍💻 Muallif Kurslari

26.7k 3 72 65 352

System design qilib dokumentini yozib qo’ydim.

Endi buni jamoa bilan birga o’qib chiqamiz. Ular kommentlar qoldirishadi va men ularga javob beraman.

Keyin berilgan feedbackga qarab o’zgartirishlar kiritaman. Qabul bo’lgandan so’ng esa kodni yozishga o’tamiz.

Diagrammadagi ishlarni qilish uchun ~6ta kichik servicelar yozish kerak bo’ladi 😮‍💨

📱 Muallif blogi | 👨‍💻 Muallif Kurslari


1.5 oydan beri bir qator kod yozganim yo’q Amazonda.

Yangi ish berilgan. Design qilyapman.

Nima qurmoqchimiz? High-Level qanday ishlaydi? Low-level qanday ishlaydi? Barcha savollarga javob beradigan dokumentlar yozyapman. O’nlab odamlar bilan uchrashuvlar, muhokamalar, white-boardning sessiyalar qilinyapti.

Bu ishlar bitgandan keyin buning kodini yozish saryog’ni isigan pichoqda kesgandek bo’lib qoladi. Silliq ketadi.

Kod yozish Software Engineer ishining eng oson qismi deb bekorga aytilmaydi. Shuning uchun ham tajribali dasturchilar “AI ishimni olib qo’yadi” deb havotirlanayotgani yo’q. AI kod yozish qismini osonlashtiradi, bu aniq. Eng qiyin qismi uchun esa haqiqiy engineer hali ko’p kerak bo’ladi.

📱 Telegram | 👨‍💻 Muallif Kurslari

17.9k 2 79 12 431

Yaxshi dasturchi bo‘lish uchun nima qilish kerak?

Yaxshi uy quruvchi bo‘lish uchun nima qilish kerak? Ko‘pgina har xil uy qurish kerak.

Yaxshi shifokor bo‘lish uchun nima qilish kerak? Ko‘pgina har xil bemorlarning qanday davolanganini boshidan o‘tkazishi kerak.

Yaxshi dizayner bo‘lish uchun nima qilish kerak? Ko‘pgina har xil narsalarni dizayn qilish kerak.

Yaxshi dasturchi bo‘lish uchun nima qilish kerak? Ko‘pgina har xil kod yozish kerak.

Meni “Captain Obvious” deb atashingiz mumkin. Lekin shu oddiy narsani ko‘pchilik bilmaydiganga o‘xshaydi, kelayotgan savollarga qaraydigan bo‘lsak.

Siz-chi? Kod yozyapsizmi? Yoki hali ham faqat kitoblar, tutoriallar, postlar o‘qib o‘tiribsizmi?

📱 Telegram | 👨‍💻 Muallif Kurslari

18.6k 1 80 39 223

Diqqatni oshirishgani o’zim uchun ishlaydigan yaxshi bir usul topdim.

Tepadagi rasmda ishlayotgan paytimning oldingi holatini ko’rishingiz mumkin. Ekranning pastgi qismida “Dock” ochiq. Yani eng ko’p ishlatadigan programmalar ro’yxati ochiq turibdi.

Natijada, bilib bilmasdan telegramni, slackni va hokazolarni ochib yuborar edim.

Pastki rasmda esa hozirgi holatini ko’rishingiz mumkin. Dockni yashirib qo’yganman. Hayol hech qayerga ketib qolmaydi. Qaysidir programma kerak bo’lgandagina o’zim ataylab kirib ochaman.

Sizda ham diqqat bilan muammo bo’lsa shu usulni sinab ko’ring. Balki foyda berar.

📱 Telegram | 👨‍💻 Muallif Kurslari

13.7k 1 43 84 218
20 last posts shown.