Dasturlashni o’rganishda qilgan xatolarim
Birinchi marotaba loyiha ustida ishlaganimdan hozirgi vaqtgacha 6 yil vaqt o’tibdi. Lekin hozirgi natijalarimni 6 yillik tajribaga ega odamga tog’ri keladi deb o’ylamayman. Shuning uchun ishga topshirish jarayonida birinchi oylik to’laydigan ishimni topgandan vaqtimdan hisoblay aytaman (Iyul 2018-yil). Balki bu vaqt oralig’i ham to’g’ri kelmas 🤷♂️ Lekin quyidagi xatolarim haqida o’qib siz o’zingizda ham shu muammo bo’lib tog’ri xulosa chiqaring!
So, shu 6 yil ichida nima xatolar qildim?
Playing around
Ya’ni juda ko’p har xil soxalarni kezib aylanib yurdim, qo’lida MacBook bor odam sifatida birinchi bo’lib o’rganmoqchi bo’lgan soxam bu iOS Development bo’ldi. O’sha payt Swift dasturlash tili hali mustahkam oyoqlarida turmas edi, lekin men, “let’s give it a try” deb boshlab ko’rdim. Lekin bu narsaga hozir aqlim yetmas ekan deb toxtatdim, chunki hali dasturlashni fundamental qismlarini bilmasdim va universitetda C++ dasturlash tilini o’rganardik. Keyin ozgina vaqt Androidga qiziqdim, Material UI ni ishlatib tugmani bosganda “Hello world” chiqazib ko’rdim. Keyin bir muncha vaqt Oracle ni Java SE 11 bo’yicha kitobini o’qidim. Oxiri JS ga ko’proq focus qilishga qaroq qildim, shu bilan MEAN stackga qiziqib qoldim, Node.js, Express, Angular, MongoDB, birinchi loyiani qilib ko’rib tilni o’zini mustahkam bilmasdan bunday ishlar qilish notog’ri va bir narsa tanlash kerak deb JS ni o’qib keyin Angularga o’tdim. Angular 4.0 versiyasi chiqqan payti edi o’shanda, TypeScriptga tushunmaganimga yana odamni motivatsiyasi tushib ketdi va ko’nglim sovidi. Handlebars ishlatib, Maximillian Schwartzmuller darslari orqali bir nimalar qilib ko’rdimu lekin ko’nglim to’lmadi. Oxiri Hokimjon degan dasturlashda allaqachon o’z o’rnini topib ulgurgan bir do’stimdan nimani o’rganay, o’xshamayapti hech deb so’raganimda, “Aynan bir soxani aniq tanlangda o’shanga “focus” qilib qunt bilan o’rganing, bo’lmasa shunday yuraverasiz” dedi. Shundan keyin Reactga ko’proq focus qilishni boshladim, chunki Hokimjon Reactni ancha yaxshi bilardi va undan yordam so’rash maqsadida Reactni tanladim. Oxir oqibat, shu eng fundamental React bilimlarimni deb ishga qabul qilindim va Frontend bo’yicha eng asosiy ustozim Maqsud akani topdim. Lekin bu ishlar uchun juda ham ko’p vaqt o’tdi, sal qolganda dasturlashni o’zini ham tashlab ketar edim.
✅ Yechim
Bir yo’nalishni tanlab olib o’sha yo’nalishga focus qilib tog’ri o’sha yo’l bo’yicha keting. U yoki bu soxani yaxshi yomonligini qidirib sakrab yuravermang, o’zingizga yo’nalish tanlashga minimal vaqt bering. Masalan bir hafta, shu bir hafta faqat research qiling, o’rganing, ko’ring, solishtiring, lekin hafta oxiriga qaysi yo’nalishni tanlaganingiz aniq bo’lsin va shu yo’nalish bo’yicha oxirigacha o’rganing. Albatta bundan keyin siz muvaffaqiyatga erishasiz.
Consistency
Bu faqat dasturlashga tegishli emas, balki shu hayotimiz davomidagi har qanday ishga tegishli ekanligi aniq. Masalan ushbu postni o’qib yurgan kanalimizni anchadan beri kuzatib yuradigan insonlar bo’lsa ta’kidlashligi mumkin, orada ko’p pauza bo’lib turadi. Ya’ni bir paytda juda ham aktivlashib qolib, bir paytda umuman yo’q bo’lib ketaman. Kanal, yantoq dumalab yurgan sahroday jim-jit bo’lib qoladi. Dasturlashda ham huddi shunday bo’lgan, birinchi kursdan keyingi yozgi ta’til payitda haftada 7 kun bo’lsa, bir haftada 1 yo 2 kun, 3–4 soat dasturlashni o’rganish bilan shug’illansam, boshqa paytlari bekorchilik qilib bolgan bo’lmagan videolarni ko’rib o’tirar edim. Shuning uchun ham, 3 kun oldin o’qigan va eshitgan narsalarimni 50% esdan chiqib ketib, keyin qiynalar edim va shu orqali motivatsiya tushib ketar edi.
✅ Yechim
Bir narsani o’rganish uchun kamida bir soatdan bo’lsa ham har kuni shug’illanish, haftada 1–2 marotaba, 4–5 soatlab o’tirib o’rganishdan ko’ra afzalroq ekan. Agar har kuni iloji bo’lmasa, aniq kunlarni belgilab olib, o’sha kunlari shug’illaning, masalan kun ora yoki haftaning faqat toq kunlari (ikkisining farqi bor). Hozir iloji boricha shunday qilyapman va progress sekin sekin ko’rinishni boshladi. Nega endi bunday bo’ldi? Chunki bu narsani tushunib yetganimga hali 1 yil bo’lgani yo’q 🙂 va oxirgi maslahatlarim so’ngi o’qiyotgan kitoblarimdan biri “Atomic Habits” da to’liq yoritilgan. Sizda ham davomiylik va doimiylik bilan muammo bor yo’qligini tekshirib, o’zingizni isloh qilishni aynan shundan boshlang.
Wrong materials and types
Men bir vaqtni o’zida ham kitob o’qib, ham videodarslik ko’rib va yana oxirida dokumentatsiya ichida aylanib yurgan paytimdayoq nimadir qiziq narsa ko’rinib qolsa qilib ko’rishga harakat qilardim. Oldin qunt bilan bir kitobni bir bobini tugatib olishga, yo video darslikni bir bo’limini ko’rib bo’lishga ham harakat qilmasdim va orada shu bilan birga “lecture notes” ham yozib ketardim. Ishlarim o’xshamasa yana Stackoverflowni u sahifasidan bu sahifasiga sakrab yurardim, oldin mavzuni oxirigacha yetkazib olib keyin kod yozishga qiziqmas edim, menga jarayondan va bilimni chuqurligidan ko’ra erishilgan natija qiziqroq bo’lardi. Undan tashqari, bir o’rgatish tizimiga ega bo’lmagan har xil videolar orqali o’rganishga harakat qilardim, ya’ni JS ni misol qiladigan bo’lsak, Variables ni bir odamdan, Closure ni boshqa odamdan, EventLoops ni boshqa odamdan. Bu keyinchalik bir mavzuni tezda o’rganib olishingiz uchun yordam berishi mumkin, lekin boshlang’ich bilimlarni o’rganayotgan payt tizimilashtirilgan (sistematik) bilim olgan yaxshiroq bo’ladi menimcha, bo’lmasa boshidan kirib oxiridan chiqib yuraverasiz. Shoshqaloqlik bu yerda ketmaydi, dasturlashdan eng asosiy narsa qunt va sabr-toqat.
✅ Yechim
Shuning uchun tizimlashtirilgan bilim manbalari bo’lmish kitoblar va videokurslar (videodarslar emas) eng afzali, yoki dokumentatsiyani ham bir chetdan ko’rib chiqsa bo’ladi, ko’pincha deyarli barcha dasturlash tillari va kutubxonalar dokumentatsiyasida “Get started” boshlash bo’limi bo’ladi, dokumentatsiya orqali o’rganish kerak bo’lsa shu orqali o’rganish yaxshiroq. Undan tashqari odam yangi narsalarni o’rganishi osonligi bo’yicha asosiy 4 turga bo’linadi. Bular:
- Visual — ma’lumotni vizual qabul qilishi oson odamlar, ular rasmlar, diagrammalar orqali yaxshiroq o’rganishi mumkin.
- Auditary — ma’lumotni ovoz va tovushlar orqali oson o’rganuvchi odamlar. Bunday odamlar ma’lumotni o’qishdan ko’ra uni eshitishga (audio/video), muhokama qilishiga va savol javoblar qilishga ko’proq moyil.
- Kinesthetic (Tactile) — Biron bir ishni qilib ko’rib tezroq tushunadiganlar, ya’ni dasturlashni nazariya orqali emas amaliyot orqali tezroq o’rganishi mumkin bo’lganlar.
- Reading/Writing — Ma’lumotni o’qish va konspektlar orqali tezroq o’zlashtiruvchilar.
O’rganishni boshlamasdan oldin siz qaysi toifaga kirishingizni bilib olganingiz maqsadga muvofiq bo’ladi. Nega deydigan bo’lsak, bu toifani bilib olib, siz videodarsliklar, kitoblar, maqolalar yoki dokumentatsiya dan qaysi biri orqali yaxshiroq o’rganishingiz mumkinligini bilib olasiz. Odamlar toifalarga bo’linganligi uchun ham, videodarsliklar, podkastlar va kitoblar ma’lumot uzatishni alohida turi sifatida ajratiladi.
Cut the elephant into pieces
Ko’pincha frontend dasturlashga kirib kelayotgan odamlar, HTML va CSS ni tugatgandan so’ng, JS ga kelganda tez oqsab qolib, motivatsiyalari tushib ketadi. Bir tomondan bu haqiqiy dasturlash boshlangani uchun bo’lsa, ikkinchi tomondan har bir yozgan harfingiz vizuallashgan natija bermaydi. Natijani vizuallashtirishga va unga erishish qisimlarini bo’lishga o’rganish kerak. O’zimda ham aynan shu muamo bo’lgan, muammoga global va uzoqdan qarab, natijasini ko’ra olsamda uni qanday amalga oshirishni tushunmas edim va shuning uchun ham, oddiy ishlarni qilolmasam kerak deb o’ylab, qilishga ham harakat qilib ko’rmagan vaziyatlarim ko’p bo’lgan. Xalqimiz aytganidek, ko’z qo’rqoq qo’l botir, ishni tog’ri tomondan boshlasa bas, qogani muammo bo’lmay qoladi.
✅ Yechim
Masalan oddiy “TODO” ilova yasash kerak, global olib qarasangiz “HOW?” degan savol paydo bo’ladi, lekin “filni bo’laklarga bo’lsangiz” ish ancha osonlashadi. TODO bu oddiy CRUD ilova, ya’ni Create (Yaratish), Read (O’qish), Update (O’zgartirish) va Delete (O’chirish). Frontend dasturchi bo’lgandan keyin eng boshlash osoni, Read, ya’ni elementlarni foydalnuvchi oqiy oladigan darajaga chiqarish va view yasash. Keyin yangisini qo’shib ko’rishni amalga oshirasiz, keyin o’chirish, oxirida qiyinrog’i o’zgartirishni qoldirasiz. Agar bu bo’linish ham qiyin tuyilsa, Read ni yani view qismini yanada maydalab olsangiz bo’ladi. Masalan, Readni bo’lish orqali, qaydni yasab olish, qaydni kiritish inputi, qaydni qo’shish tugmachasi, qayd elementini yaratib olasiz. Keyin yuqorida keltirlganidek ular uchun alohida alohida funksionallar yoziladi. Qanday qilib deysizmi? Create ni ham bo’lib olasiz:
- ma’lumot inputga kiritiladi
- uning qiymatini tugma bosilganda olasiz
- barcha qaydlar joylashtirilgan array (massivga) ga qo’shib qo’yasiz
- qo’shilgan qaytni view qisimga chiqarasiz
Huddi shundaya tarzda har qanday dasturni, ilovani, tizimni bo’lib chiqsa bo’ladi, natijaga erishish jarayonini osonroq vizuallashtirasiz va ko’d yozishingiz ham ancha oson bo’ladi.
Xulosa
Xulosa qismida, eng asosiy narsani yana bir bor ta’kidlab o’taman. “Programming is about patience and consistency” kim aytganini bilmayman, lekin tarjima qilganimda ingliz tilida shunday bo’ldi. Asosiy narsa sabr toqat va doimiylik, ularsiz hech narsa qilolmaysiz. Shu omillar bilan muammoyingiz bo’lmasa siz bir kun albatta muvaffaqiyatga erishasiz.
Agar post yoqgan bo’lsa 👏🏻 “clap” tugmachasini bosib qo’yishni yoddan ko’tarmang.
Telegram kanal: