System design interviewga zadrod bo'lasiz ammo mikkimaus patterni bilmaysiz.
Fikrimcha muammo ustida intensiv ishlash foydaliroq, o'tirib distrubuted systems, highload vaxakazo narsalar haqida alohida ko'rganingiz bilan real muammoga duch kelsangiz hal etolmaysiz.
Bir tanishim aytyabti falon companyda system design interviewda collabarative text editor so'rashgan ekan. U biratlar o'tirib CRDT kashf etishibti. Qiziq tomoni interviewer ham bilmagan bu narsani )) Yani hamma narsa templated: Falon savol beraman A,B,C variantlardan birini javob bersa demak baholasam bo'ladi.
Hullas bunaqa narsalar tiqilib yotibti. System design deb juda ko'p narsani discover qilishdan mano yo'q aynan bir narsani olib qilish kerak. Shuni o'zi juda katta boost beradi, Siz umuman yangi mavzudagi muammoni hal etmoqchi bo'lsangiz tabiyki siz bilishizni ham bilmaydigan narsalar juda ko'p bo'ladi. Qachonki shu muammoga duch kelsangiz kegin o'tirib analoglarni o'rganasiz, kim qanday yechim qilgan nega unaqa qilgan.
Bir narsani ustida intensiv ishlash sizni muammoni ustida intensiv ishlashga o'rgatadi. Qancha murakkab mavzularda ishlasangiz shuncha o'sib borasiz code yozish va talablaringiz ham o'zgaradi.
Oddiy misol xozir umuman parser yozmagan odamga incremental parserlar yozishni aytolmaysiz. Yoki parser combinatorlarni bersangiz dovdirab o'tiradi yoki regex bilan hal etadi.
Shu sababli arxitektura marxitektura haqida juda chuqur nazariy o'ylamasdan murakkabroq muammolarni kod bilan hal etishga xarakat qilish kerak. Shunda kerak joyda algorithm data strukturalarga ham ishiz tushadi fuckup qilgan molxona arxitekturani ham tozalab qo'yxonaga aylantirasiz, nu balki qattiq ter to'ksangiz atomatlashgan ferma qivorarsiz))). Toy projectlarni ham productionga qancha yaqin qilsangiz shuncha yaxshi shunda prod uchun bunaqa code yozish kerak deb ajratmaysiz balki doyim prod ready code yozishni o'rganasiz. Kod ko'paygan sayin esa refactorga extiyoj ham bo'ladi bu esa sizga refactoringni o'rgatadi.
Post #4226
801
- ❤ 5
- 🔥 1