tl; dr Bu post software engineer yoki dasturchi bo'lishga qiziqib, qaysi birini o'rganay deb yurgan (Android, iOS, web, backend, frontend, devOps, AI/ML, gaming, robotics, cloud engineering va h.klar) ukalarimizga.
Shunchaki maslahat sifatida yozilgan, qanday qabul qilish o'zingizga bog'liq. Yaqinda endi o'rganishni boshlagan bir nechta studentlardan ko'p savollar, qaysi birini texnologiyalarni o'rgangan yaxshi va qaysi biriga talab juda ko'p degan savollarni juda ko'plab so'rashdi. Qisqa qilib javob berishga harakat qilaman. Hammasi bir xil narsa, faqat nomlari boshqacha lol 😂 .
Aslida, dasturchilikni yoki software engineerlikni sub-sohalari (sub-field / division) juda ko'p bo'lgani bilan, unchalik juda keng soha emas, hozircha. Yani bu software engineerlikda, fundamental levelda asosan ikkita funksiyadan iborat:
1) data storage (malumotlarni saqlash)
2) data processing (va shu malumotlarni process qilish).
Bo'ldi. Yani har qanday software engineer yoki dasturchini qiladigan ishi, yo'nalishidan qattiy nazar shu ikkita oddiy funksiyani bajarishdan iborat va shu fuksiyani bajaradigan software yozishdan iborat. O'sha Android / iOS engineering, data engineering, web / backend engineering, SRE / DevOps, ML engineering, game engineering, robotics va h.k sohalardagi dasturchilarni qiladigan ishi, shu borib 2 ikkita funksiyani bajarishga boradi: data storage & data processing.
Fundamental levelda, Android / iOS / web / frontend engineering yoki o'xshash soha bilan shugulanadigan dasturchilarni ishi - data (malumot)ni foydanavchiga yetkazib berish (data serving) qaysidir bir storagedan olib yoki foydalanuvchidan malumotni olib qaysidir bir storagega saqlab qo'yish - data processing & storage.
Backend engineering: o'sib boruvchi (scalable) datalarni saqlaydigan (store) va shu datalarni process qiladigan, resilient va robust yani mustahkam interface yaratish - data storage & processing.
SRE / DevOps: Shu datalarni havsiz (secure) va ishonchli (reliable) tarzda foydaluvchilarga yetkazib berishni taminlash - data processing.
ML engineering: Datalarga yoki ulardan intelligence berish yoki olish - data storage & processing.
Game engineering: graphic datalarni foydalanuvchiga yetkazib berish (data processing) va ulardan shu graphic datalar ustida data processingni amalga oshirish uchun inputlar olish - data processing.
Data / database engineering: Qanday qilib, qaysi formatda yoki shalkda bu o'sib boruvchi (scalable) data va mulumotlarni saqlash - data storage.
Qaysi bir sub-fieldni tanlashdan qattiy nazar, qiladigan ishingiz shu datalarni storage qilish yoki processing qilishdan iborat bo'ladi. IT yoki software engineeringda har qanday qiladigan ishingiz shu 2 ta funksiyaga borib taqaladi. Va bu har birini ishini juda osonlashtirish uchun har xil technologylar o'ylab topilgan va mavjud.
Masalan, malumotlarni turi va format va undan kelajakdan qanday foydalanishga va access qilinishiga qarab turli xil databaselar (relational, graph, distributed centralized, decentralized, operation va etc) va ularni qanday qilib foydalanuvchilarga yetkazib berilishiga qarab turli xil protocollar (ftp, http/s, tpc, udp, pop, smtp va h.k) va bu datalarga qanday access qilinishiga qarab har xil devicelarga programming qilish yani mobile - Android / iOS, TV, IoT devices, game consoles, laptop, desktop, airplane dashboard, pen va xatto doorbell knob. Malumotlarni saqlashdan (data storagedan) boshlab uni processing qilib, sotishgacha juda ko'p millionlab misollar keltirsa bo'ladi.
Engineeringlikni sub-sohasini, sub-field tanlayotganda siz qay xolatda malumotlar bilan ishlashingizga qiziqishingizga qarab tanlasangiz bo'ladi. Va asosiysi, sohangizda qanday qilib malumolarni most efficiently process va storage qilish, yani maximum tezlikda, minimum resourcelardan foydalangan xolatda malumotni yani datani storage & process qilishni o'rganishingiz kerak. Bu company uchun ham, foydalanuvchi uchun ham foydali.
Shunchaki maslahat sifatida yozilgan, qanday qabul qilish o'zingizga bog'liq. Yaqinda endi o'rganishni boshlagan bir nechta studentlardan ko'p savollar, qaysi birini texnologiyalarni o'rgangan yaxshi va qaysi biriga talab juda ko'p degan savollarni juda ko'plab so'rashdi. Qisqa qilib javob berishga harakat qilaman. Hammasi bir xil narsa, faqat nomlari boshqacha lol 😂 .
Aslida, dasturchilikni yoki software engineerlikni sub-sohalari (sub-field / division) juda ko'p bo'lgani bilan, unchalik juda keng soha emas, hozircha. Yani bu software engineerlikda, fundamental levelda asosan ikkita funksiyadan iborat:
1) data storage (malumotlarni saqlash)
2) data processing (va shu malumotlarni process qilish).
Bo'ldi. Yani har qanday software engineer yoki dasturchini qiladigan ishi, yo'nalishidan qattiy nazar shu ikkita oddiy funksiyani bajarishdan iborat va shu fuksiyani bajaradigan software yozishdan iborat. O'sha Android / iOS engineering, data engineering, web / backend engineering, SRE / DevOps, ML engineering, game engineering, robotics va h.k sohalardagi dasturchilarni qiladigan ishi, shu borib 2 ikkita funksiyani bajarishga boradi: data storage & data processing.
Fundamental levelda, Android / iOS / web / frontend engineering yoki o'xshash soha bilan shugulanadigan dasturchilarni ishi - data (malumot)ni foydanavchiga yetkazib berish (data serving) qaysidir bir storagedan olib yoki foydalanuvchidan malumotni olib qaysidir bir storagega saqlab qo'yish - data processing & storage.
Backend engineering: o'sib boruvchi (scalable) datalarni saqlaydigan (store) va shu datalarni process qiladigan, resilient va robust yani mustahkam interface yaratish - data storage & processing.
SRE / DevOps: Shu datalarni havsiz (secure) va ishonchli (reliable) tarzda foydaluvchilarga yetkazib berishni taminlash - data processing.
ML engineering: Datalarga yoki ulardan intelligence berish yoki olish - data storage & processing.
Game engineering: graphic datalarni foydalanuvchiga yetkazib berish (data processing) va ulardan shu graphic datalar ustida data processingni amalga oshirish uchun inputlar olish - data processing.
Data / database engineering: Qanday qilib, qaysi formatda yoki shalkda bu o'sib boruvchi (scalable) data va mulumotlarni saqlash - data storage.
Qaysi bir sub-fieldni tanlashdan qattiy nazar, qiladigan ishingiz shu datalarni storage qilish yoki processing qilishdan iborat bo'ladi. IT yoki software engineeringda har qanday qiladigan ishingiz shu 2 ta funksiyaga borib taqaladi. Va bu har birini ishini juda osonlashtirish uchun har xil technologylar o'ylab topilgan va mavjud.
Masalan, malumotlarni turi va format va undan kelajakdan qanday foydalanishga va access qilinishiga qarab turli xil databaselar (relational, graph, distributed centralized, decentralized, operation va etc) va ularni qanday qilib foydalanuvchilarga yetkazib berilishiga qarab turli xil protocollar (ftp, http/s, tpc, udp, pop, smtp va h.k) va bu datalarga qanday access qilinishiga qarab har xil devicelarga programming qilish yani mobile - Android / iOS, TV, IoT devices, game consoles, laptop, desktop, airplane dashboard, pen va xatto doorbell knob. Malumotlarni saqlashdan (data storagedan) boshlab uni processing qilib, sotishgacha juda ko'p millionlab misollar keltirsa bo'ladi.
Engineeringlikni sub-sohasini, sub-field tanlayotganda siz qay xolatda malumotlar bilan ishlashingizga qiziqishingizga qarab tanlasangiz bo'ladi. Va asosiysi, sohangizda qanday qilib malumolarni most efficiently process va storage qilish, yani maximum tezlikda, minimum resourcelardan foydalangan xolatda malumotni yani datani storage & process qilishni o'rganishingiz kerak. Bu company uchun ham, foydalanuvchi uchun ham foydali.