Google ga qanday qilib kelib qoldim :)

Intro
Bu blogimda doimgi mavzulardan tashqariga chiqib, qanday qilib, Google ga software engineer bo'lib, ishga kirganim haqida yozmoqchiman. Interview process haqida o'zbek tilida (bilmagan joylarimni ingliz tilada :) yozib, to'liq ma'lumot berishim, O'zbekistonlik va boshqa o'zbek tili so'zlovchilariga ozgina bo'lsa-da, motivatsiya bo'lishiga umid qilaman. Iloji boricha, detailed yozishga harakat qilaman va agar yana savollaringiz bo'lsa, bemalol yozib qoldirishingiz mumkin. Imkoni boricha, javob berishga harakat qilaman.

Background
Bundan 3-4 yil avval dasturchi do'stlarim bilan qat'iy qaror qildik: o'z sohamizning yuqori cho'qqisiga chiqamiz! Maqsadga erishishdagi rejalarimiz ichida eng yaxshi dasturchilar ishlaydigan kompaniyalardan biriga ishga kirish va u yerdagi tajribali insonlar bilan birga ishlab, yanada rivojlanish ham bor edi.
Shu niyatlar bilan 2016-yil Toshkentdagi Xalqaro Westminster Universitetida bakalavrni bitirib, shu yilning kuzida Amerikada magistratura o'qish uchun Iowa shtatidagi Maharishi Management Universitetiga o'qishga keldim. U yerda 1 yil universitet campusda full time o'qidim. Ikkinchi yilni online o'qish imkoniyati borligidan foydalanib, Chicagodagi bir kichikroq kompaniyada software engineer sifatida ish boshladim. Maharishi Universiteti ishga kirish uchun juda katta yordam berdi: kuchli o'qitiladigan fanlardan tashqari, Amerikada ishga kirish jarayonlarini tushuntirib, ish ruhsatnomasini ham qilib berdi.
Online o'qib yurgan paytlarimda ishlaganim uchun, o'qish pulini to'lash unchalik qiyin bo'lmadi. Ma'lumot uchun, masterga tuition fee 40,000$ atrofida ketdi.

Interview preparation
Masterning birinchi yilida campus da o'qib yurgan vaqtimda, asosan algorithm/data structure va system design ga oid mavzular o'rgandim/masalalar yechib practice qildim. Bunda Cracking the coding interview by McDowell, Algorithm design manual by Skiena va Algorithms By Sedgwick katta yordam berdi. Leetcode va hackerrank/timus dan similar problems yechib, kitoblardan o'rgangan theoriyalar ustida shug'ullandim. Interview da o'zimni qanday tutishni esa Pramp da mock intervyular qilib o'rgandim.

Interview process
Google da interview process boshqa katta tech company larnikidan farq qiladi va o'rtacha 3-6 oy vaqt oladi. Men o'zimda bo'lgan process haqida yozaman. Qaysi level/position ga apply qilinganiga qarab, ba'zida bundan sal farqli bo'lishi mumkin.

Birinchi step interview da, recruiter email yoki linkedin profilga message yozadi va open position borligi haqida ma'lumot berish uchun telda gaplashishga vaqtingiz borligini so'raydi. Online application topshirganlarga ham xuddi shunaqa steps bo'ladi. Kelishilgan vaqtda telda gaplashib, qiziqish bor-yo'qligini va qachon ish boshlay olishingiz mumkinligini so'raydi. Shundan keyin, candidate qiziqishiga qarab, ikkinchi stepga o'tiladi. Ya'ni online/phone screening technical interview. O'rtacha 45 min bo'ladi. Video yoki audio chat qilib, Google dagi biror software engineer bilan har xil coding problemalar yechiladi. Mening holatimda 45 minut faqat technical savollar bo'ldi. Behavioral savollar deyarli so'rashmaydi. 2-3 ta masala beriladi and/or common algorithms and data structure concept larni tushuntirib berishingiz so'ralishi mumkin.

Bundan successful o'tilgandan keyin, interviewer feedback iga qarab, yana boshqa screening interview bo'lishi mumkin yoki directly onsite interview ga chaqirilishi mumkin. Men bilan interview feedback yaxshi bo'lgani uchun, to'g'ri onsite ga kelishni taklif qilishdi. Meni vaqtimga qarab, airplane tickets va inteview joyiga yaqin mehmonxonadan xona band qilishdi. Bir kun oldin kelib, mountain view ga, ertasiga ertalab soat 10 da inteview uchun yetib bordim va har biri 45 daqiqalik 5 round technical interview bo'ldi.

Uchinchi round interviewdan keyin orada tushlik uchun 1 soat ajratishadi. Interview dagi aniq savollarni confidential bulgani uchun yozolmayman, lekin mavzular: algorithms, data structures, system design doirasida bo'ldi. O'rganishni maslahat berishim mumkin bo'lgan mavzular all common data structures and algorithms:stack, queue, heap, list, hashtables, trees and graphs; sorting and searching algos, graph and tree traversals and common related problems, little bit knowledge of dynamic programming and bit manipulation. Tepada eslatgan kitoblarimni o'qib, tushunilsa, bemalol yetarli bo'ladi va faqat qolgani practice bilan interview ga kelsa bo'ladi. System design uchun aniq bir kitob hozircha maslahat berolmayman. Chunki men o'zim, asosan, online da article lardan va bloglardan o'qib o'rganganman. Qiziqqanlar contact qilsa, system design uchun resource larimni yuboraman.

Onsite interview dan keyin, recruiter 1-2 haftada aniq javobni aytish uchun tel qiladi va benefits/compensation/relocation packages haqida deal qilinadi. Va undan keyin team matching boshlanadi: Google da resumeyingizni o'qib, sizni o'z komandasiga olishga qiziqqan team manager lar bog'lanib, ular bilan ishlashga fikringizni so'rashadi. Bu step da candidate o'zi uchun qiziq bo'lgan savollar so'raydi: komanda haqida, nima ish qilishi, project development process va career growth opportunities haqida.

Aniq sizga yoqadigan team va project/product topilgandan keyin, recruiter 1 haftalarda official job offer yuboradi va background check boshlanadi. Bu stepda resumeyingizda ko'rsatilgan experience va education lar haqiqiy ekanligini tasdiqlash uchun ularga bog'lanib, confirmation olishadi.

Impression working here so far
Birinchi 3 hafta training dan keyin komandada haqiqiy ish boshlandi. Trainingda Google dagi muhitni va ishlatiladigan tool lar bilan tanishtirishdi. Boshlaganimga endigina 2 oy bo'lgan bo'lsa ham, juda ko'p narsa o'rgandim. Eng muhimi, o'rganish va o'rganganlaringizni amalda qo'llash uchun barcha imkoniyatlar yetarli.


Google ishchilar haqida juda care qiladi: 3 mahal ovqat, entertainment, gym/pool resources, flexible work life balance, great benefits package, yaxshigina oylik ham beradi. To'g'risini aytsam, perks ko'pligidan hali hammasini try qilib ko'rmadim.)

Engineerlar juda professional va tajribali. Manager larning ko'pchiligi engineer likdan boshlashgan va o'zlarini hali ham engineer deb bilishadi. Solution topishga va product delivery qilishga nisbatan ham boshqa companylarga qaraganda ancha farqli usullardan foydalanishadi. Yana bir-ikki yildan keyin, Google haqida ko'proq yoza oladigan bo'lganimda boshqa postda batafsil yozaman.

That's is it for now.
O'zimda juda ko'p "qanday qilib" degan savollar bo'lardi. Savollar bo'lsa, istalgan vaqt facebookda contact qilinglar. Imkoni boricha javob beraman, Xudo xohlasa)

PS. No judging on typos.