Personal Blog

Personal Blog

Facebook, Amazon, Apple, Netflix, Googlega yoki AQSHda software engineer (a.k.a dasturchi) bo’lib ishga kirish jarayonlari.

Facebook, Amazon, Apple, Netflix, Googlega yoki AQSHda software engineer (a.k.a dasturchi) bo’lib ishga kirish jarayonlari.

Subscribe to my newsletter and never miss my upcoming articles

Agar so’zlarda syntax xatolar bo’lsa, uzr! Bu mening birinchi o’zbekcha postim. Siz buni o’qiyotgan bo’lsangiz, sizga men link share qilganman yoki siz dasturchilikka qiziqasiz yoki randomly searchda chiqib qolgan. Malumotlar o’zimni experience (tajriba) dan kelib chiqib yozilgan shu companyalarda ishlashdan va interviewlarni topshirishdan. Bu yerdagi malumotlar qanday qilib software engineer interviewga tayyorlanish haqida malumot xolos

1_q2vE4_vO-sLSXyGt3GuFxw.png

Bugungi kunda o’zbek dasturchilari orasida AQSHda dasturchi bo’lib ishlash yoki tech companylarga software engineer bo’lib ishga kirishga qiziqish bor va ko’pchilik shu jarayonlar haqida so’rashadi. Men shu postda qisqacha (high level) shu jarayonlarni tushintirib o’taman. AQSHda engineer bo’lib ishga kirish unchalik ham juda qiyin emas va oson ham emas, oylab, yillab tinimsiz o’rganish va tayyorgarlik talab qiladi.

STEM degree (Bachelor’s, Master’s) foydali lekin zarur emas.

  • Agar sizni higher educationga imkonyatingiz bo’lsa, masalan Bachelor yoki Master o’qishga O’zbekistonda yoki chetda ko’proq STEM degree olishga harakat qiling, yani bunga misol qilib, computer science, software / electrical engineering, mathematics, physics, statistics yoki shunga o’xshash fakultetlarni kurslarni ko’proq olishga harakat qiling. Bu sohada olgan chuqur bilimlaringiz sizga birinchi ishingizni osonroq topishga va boshlab olishga yordam beradi. Lekin ishga software engineer bo’lib kirish uchun degree bo’lishi shart emas, eng katta tech kompaniyalarda ham.

  • Aytaylik sizda o’qishga imkonyatingiz yo’q yoki xoxlamaysiz. Aytganimdek, tech kompaniyalarga engineer bo’lish ishga kirish uchun degree kerak emas. Shu bilimlarni o’zingiz self-discipline bilan o’rganishingiz mumkin. Aytaylik siz oz moz ingliz tilini bilasiz, unda yaxshi AQSH ning deyarli hamma katta public / private universitetlari o’zlarning darslarni open source sifatida online publish qilib qo’ygan, darslar deyarli on-campus darslari bilan bir xil. Men o’zim ham MIT Open Courseware va Coursera platformlarida courselari olganman va ko'p malumotlarni o'rganganman.

  • Yoki siz o’zingiz uchun mentor (ustoz) toping. Ko’p software engineerlar mentorlik qilishni xoxlashadi va siz o'zingiz uchun tajribali mentordan o’rganishingiz mumkin shogirt bo’lib. Men ham hali xanuz mentorlarim bor va ulardan o’rganaman.

AQSHda engineer bo’lib ishga kirish jarayoni

Agar siz AQSHda o’qimagan bo’lsangiz, AQSHga kelish uchun va ishlash uchun albatta work authorization (AQSHda ishlash uchun va income olish uchun permit) bo’lishi kerak. Work authorization olish uchun, J1 internship visa, F1-OPT student visa, H1B work visa, L1 work transfer, O1 yoki shunga o’xshagan work authorization visangiz bo’lishi kerak. Bundek visalarni birini olish uchun albatta sizda offer (taklif ishga) bo’lishi kerak. Ishga taklifni olish uchun siz tech interviewlardan va boshqa steplarda yaxshi o’tgan bo’lishingiz kerak.

Interviewgacha bo’lgan jarayon

Ishga kirish jarayoni chicken egg problemga (yani tuxum birinchi paydo bo'lgani yoki tovuq)o’xshaydi. Yani ishga kirish uchun tajriba bo’lishi kerak, tajriba bo’lish uchun ishga kirish kerak. Odatda recruiterlar sizga o’zlari ishga interviewga taklif qilib chiqishadi, uning uchun sizni impressive (ko’zga ko’rinadigon) tajribangiz yoki ular hire qilayotgan tech - skills(tech qobilyat)bo’lish kerak.

Eng boshlanishida ozgina basic logic, matematika va analytics biliblarni o’zlashtiring. Agar maktabda matematikani yaxshi o’rgangan bo’lsangiz menimcha yetadi. Undan so’ng, biron bir programming tilini o’rganishni boshlang va chuqur o’rganing (C, Java, Python, Javascript yoki shunga o’xshash). Yoki ishga kirmoqchi bo’lgan kompaniyangizni ishlatadigan mainstream tilini o’rgansangiz ham bo’ladi.

Master any programming language

Aytganimdek, interviewga borishdan oldin siz ozgina bo’lsa ham tajriba bo’lishi kerak, tajriba ishda olinadi. Software engineerlarni yaxshi tarafi ishlamasdan turibman tajriba o’lsangiz bo’laveradi, yani open-source projectlarga contribute qilish orqali. Iloji boricha ko’p open source proyektlarga contribute qiling yoki o’zingizni proyektlaringiz ustida ishlang shu o'rgangan programming tilingizdan va undagi mashxur framework va libraryda foydalanib. Platformani ahamyati yo’q.

Contribute to the open-source or work on your project

Aytaylik, siz shu master bo’ldingiz bemalol kichik hajmli proyektlarni qila olasiz, unchalik zo’r bo’lmasa ham. Lekin hech kim sizga ish / interviewga taklif qilib aloqaga chiqmayapti. Sababi ular sizni topisha olishmayapti. Tech kompaniyalarni recruiterlar sizga aloqaga chiqishi uchun online presence ko’taring yani Linkedin-da, Indeed-da (indeed.com) va shunga o’xshagan platformalarda professional yo’zilgan resumemangiz va experienceingiz bo’lishi kerak.

Improve your online presence

Xo'p, aytaylik hammasi zo’r bo’ldi va sizga recruiterlar aloqaga chiqishni boshladi. Hayojonli daqiqalar boshlanadi. Endi nima bo’ladi, qanaqa qilib interviewdan o’tsam bo’ladi degan.

1_act7h4vyFeY8ngGyTkl9hg.jpeg

Birinchi men interviewlar formatini tushintirib o'taman va keyin o'zim qanday tayyorgarlik ko’rganligimni va qaysi resourcelar foydali bo'lgani aytib o’taman.

Interview Format

Bu format deyarli hamma AQSHdagi tech kompaniyalardagi interview formati (FAANG kompaniyalarnida ham), bazan ozgina boshqacha bo’lishi ham mumkin.

Interviewlar odatda sizga recruiter aloqaga chiqadi, email orqali va siz bilan introductory call (tanishtiruv)uchun vaqtingizni so'raydi va 30 minutdan - 1 soatlik interview schedule qilinadi. Bu birinchi interview recruiter sizni kompaniya va team(jamoga) tanishtirishdan olding sizni yaxshi o’rganishi uchun va siz shu ishga qiziqishingizni so’raydi. Bu siz kompaniya haqida o’rganishingiz va siz haqingizda kompaniya o’rganishi uchun ajratilgan interview.

Bundan muaffaqiyatli o’tganingizdan so’ng, jamoadan siz qo’shilmoqchi bo’lgan yoki kompaniyadan 1 soatlik tech screening interviewga taklif qilishadi. Unda odatda sizdan tajribangiz, qanday proyektlarda ishlaganingiz va domainga bog’liqli oddiy savollar so’rashadi va albatta bitta algorithm yoki data structure savollar bo’ladi. Bu interviewni maqsadi sizni bilimlaringiz bor yoqligini tekshirish va shuni natijasiga qarab, onsite interviewga taklif qilishadi.

Tech screening interviewdan o’tingiz ham deylik. Va endi sizni kompaniya o’zi harajatlaringiz uchun pul to’lab onsite interviewga taklif qiladi. Ha odatda onsite interviewlar 5 rounds bo’ladi va har biri 1 soatlik. Va 5–6 ta engineer yoki manager bilan interviewdan o’tasiz. Har bir rounda 1 engineer bilan 1 soat interview qilasiz. Odatda, 3 ta interview bu problem solving bo’ladi (algorithm/data structure), 1 ta system design va 1 ta culture interview bo’ladi. Bu interviewlardan o’tish uchun nima qilish kerak.

Interviewlarga tayyorgarlik.

Basics

Aytganimdek, interviewlar asosan white-board bo’ladi va algorithm yoki data structure yoki shunga o’xshagan masalalar bo’ladi. Men ingliz tilini bilganligim uchun ingliz tili resourcelardan foydalanganman. Birinchi bo’lib matematika courselarni olganman MIT OCW dan Mathematics for Computer Science. Sababi software engineeringdagi bilimlar theorylar matematikadagi asoslarga qurilgan va siz yozgan programmani to’gri ishlashini siz matematik jihatdan proof (isbotlay) olishingiz kerak. Bunda tashqari matematikani yaxshilash uchun anchagina boshqa resourcelardan ham foydalanganman. Masalan:

Algorithm / Data Structures

Algorithm, data structurelarga tayyorlanish uchun ham MIT OCW dan ancha kurslar olishga to’g’ri kelgan. Masalan quydagi kurslarni ketmaketlikda olganman va siz ham olishingiz mumkin.

  • Introduction to Algorithms -basic algorithmlar, data structureni o’rganish uchun.
  • Design and Analysis of Algorithms - bu birinchi kursni davomi va bu yerdan qanday qilib algorithmlaringizni performant, scalable qilish, design qilishni va shuni analyse qilishni o’rganishingiz mumkin.
  • Advanced Algorithms - Agar chuqurroq o’rganmoqchi bo’lsangiz, lekin optional. Unchalik muhim emas.

Bu courselarni hammasi shu kitobga asoslangan- Introduction to Algorithms by Cormen, Thomas, Charles Leiserson, Ronald Rivest, and Clifford Stein ga asoslanga. Kitobni o'zini ham o’qib chiqsangiz bo’ladi, lekin bu reference book va tavsiya qilmayman.

Bunda tashqari, Algoritms Manual by Skiena va Algorithms by Sedgewick kitoblarni ham juda foydali bolgan va ularni malum bir mavzular uchun o’qiganman va quydagi William, google engineerni videolarni follow qilar edim va sizga ham tavsiya qilaman: algorithms videos by William

Va albatta bu bilimlarni mustahkamlash uchun leetcode, hackerrank va shunga o'xshash platformlarda ancha masalalarni ishlashingizmi tavsiya qilaman.

System Design Interview

Bu interview asosan ozgina tajribasi borlar uchun va har kimdan ham so’rab qolinishi mumkin. Asosan qanday qilib, operational, scalable, reliable, high available, secure, extensible systemalar qurish bilish kerak. System design ga tayyorgarlik asosan ishdan o’rganganman va qo’shimcha quydagi resourcelardan foydalanganman va siz ham shundan foydalanishingiz mumkin

Javachilarga!

Agar siz Java bo’yicha interviewda o’tayotgan bo’lsangiz, albatta Effective Java by Bloch va Java Concurrency in Practice by Geot ni o’qishni tavsiya qilgan bo'lardim. Juda ham foydali.

Operating System bilimlar.

Ozgina bo’lsa ham OS dan bilimlar bo’lsin. Tavsiya qilgan bo’lardim.

Clean code yozishni odat qiling.

Maslahatlar uchun Clean Code by Uncle Bob (Martin) kitobni tavsiya qilaman.

Culture interviewlar.

Culture interviewlarda sizni qanchalik kompaniyani culturega togri kelishingizni ko’rishadi. Bunga asosan interview oldin team haqida, kompaniya haqida ancha o’rganing.

Eng asosiysi o’rganishdan hech qachon to’xtaman!

Bu juda qisqacha malumotlar, agar boshqa savollar bo’lsa comment qoldiring!

 
Share this