JavaRush /Java blogi /Random-UZ /Qadimgi gumanist ITga qanday borgan
PieIsLie
Daraja
Санкт-Петербург

Qadimgi gumanist ITga qanday borgan

Guruhda nashr etilgan
Feyerverk! Aslida, men bu postda aynan nima yozaman va umuman yozamanmi, deb uzoq vaqt o'yladim. Shunday bo'ldiki, so'nggi ikki yilning turli davrlarida men Java dasturchisi lavozimini egallash imkoniyatlarini turli yo'llar bilan baholadim: "ertami-kechmi - aniq" dan "IT sohasida men uchun hech narsa porlamaydi". Qadimgi gumanist ITga qanday o'tgan - 1Biroq, JavaRush-da ro'yxatdan o'tganimdan deyarli ikki yil o'tdi. Bir necha oy oldin men birinchi taklifimni oldim, birozdan keyin ikkinchi taklifimni oldim va keyin yangi ish boshladim. Kurs davomida muvaffaqiyat hikoyalari menga juda ko'p yordam berdi, shuning uchun men o'zimning maqolamni joylashtirishga qaror qildim. Kurs 18-yilda bo'lib o'tganligi sababli, ba'zi ma'lumotlar dolzarb bo'lmasligi mumkin. Men darhol aytamanki, matn juda ko'p bo'ladi, chunki ... Men sizga ta'lim va ish qidirish (talablar, javoblar, texnik shartlar, suhbatlar va boshqalar) haqida aytib berishga harakat qilaman. Men shaxsan menga yordam bergan va boshqalarga ham yordam berishi mumkin bo'lgan bir nechta umumiy maslahatlar yozaman. O'zim haqimda qisqacha ma'lumot: 32 yoshda, menejment va savdo sohasida 10 yillik tajriba, liberal san'at ta'limi va mutlaqo texnik ma'lumotga ega emasman. Bir necha yil oldin men C++ ga, keyin Python ga kirishga harakat qildim - boshim og'rig'idan boshqa hech narsa yo'q edi. Shuning uchun meni iqtidorli dasturchi deb atash qiyin: aksincha.

1-bosqich. Trening

Men JavaRush-ga ongli ravishda keldim: adekvat oylik narxlar ro'yxati, materialning aniq tuzilishi, juda ko'p amaliyot va o'z jamoamning mavjudligi. Birinchi nuqta hamma narsa tushunarli, ammo tuzilmasiz tilni o'rganish juda qiyin va bunday mashg'ulotlar, albatta, Java Core-da jiddiy bo'shliqlarni qoldiradi. Intervyu va texnik xususiyatlar tajribasi shuni ko'rsatadiki , "yadro" haqidagi savollar hamma narsa uchun ishlatilishi mumkin: generiklarni bit bo'yicha o'zgartirish va quyishdan tortib, IO va seriyalashtirishgacha. Amaliyot bo'lishi shart; Men hali ham o'zim yozgan bo'lsam, faqat yarmini tushunaman va eslayman. Xo'sh, jamiyat: siz muammoni hal qildingiz - sharhlarda bu haqda maqtanasiz; Agar qaror qilmagan bo'lsangiz, savollar berishingiz mumkin, lekin hech kim sizga tayyor echimni bermaydi. Kursni tugatgandan keyin ham bepul mavzular bo'yicha maxsus maqolalarga qaytdim, u erda boshlash uchun juda ko'p yaxshi narsalar bor (ayniqsa, bosqichma-bosqich misollar + intervyu uchun savollar yordamida ramkalar bilan birinchi tajriba). Umuman olganda, men ushbu loyihadan olgan bazam uchun minnatdorman, lekin men faqat JavaRush-ga tayanmagan bo'lardim - o'sha Shildt eng yaxshisi o'rganilayotgan mavzu bo'yicha "bir-biriga mos keladi" va ko'pincha ba'zi fikrlarni ochib beradi. Ba'zan nazariyadan oldinga chiqadigan va sizni Google'ga majburlaydigan vazifalar haqida sharhlarda ko'p narsa aytilgan. Men uchun bu minusdan ko'ra ko'proq ortiqcha - va hozir vaziyat men o'qigan paytimdagidek ekanligi haqiqat emas. Menga o'xshab Java-ni "noldan" kiritadiganlarga darhol maslahat : qaysidir bosqichda siz zerikishingiz yoki qiyin bo'lishingiz mumkin:
  1. Noldan boshlagan hamma uchun qiyin, Xudo ko'rsatmasin, faqat 5% odamlar kursni oxiriga etkazadilar. Sizning vazifangiz ulardan biriga aylanishdir.

  2. Bir-ikki oydan so'ng, topshiriqlar qiyinroq va qiziqarli bo'lganidan keyin qiziqib qoldim. Sabrli bo'ling.

  3. Asosiysi, haftalik taraqqiyot. Ikki haftalik dam olishdan keyin qaytib kelish allaqachon qiyin va hamma ham bir necha oy ketma-ket har kuni yoza olmaydi. O'zingizga haftalik soatlar chegarasini belgilang - masalan, 15. Siz har kuni 1,5 soat, har ikki dam olish kunlarida yana 3-4 soat kodlashingiz mumkin yoki bir-ikkita kechqurun dam olishingiz mumkin, ammo "hafta oxiri chegarasi" kattalashtirish; ko'paytirish. Shunday qilib, jadval moslashuvchan, ammo muntazam bo'ladi. Albatta, keyin ishni vazifalar va loyihalar bo'yicha o'lchash mumkin bo'ladi, ammo sintaksis va yadro darajasida soatlar bajariladi.
Umuman olganda, men ta'tilga ham, qisqa tanaffuslarga ham pulim borligiga qaramay, kursni yakunlashim uchun (stajirovkaga kirishdan oldin) taxminan 5 oy vaqt ketdi ; yana, besh kunlik ish hafta faqat dam olish kunlari va ish kuni oqshomlari 22 dan bepul qoldi 00. Shunday qilib, bo'shashgan jadval yoki qattiqroq mashg'ulot rejimi bilan siz ancha oldinroq engishingiz mumkin. Keyin stajirovka qilishni rejalashtirdim, lekin oxir-oqibat bu ish bermadi.

2-bosqich. O'z-o'zini tarbiyalash

Shunday qilib, men amaliyot o'ta olmadim: guruhga ishga qabul qilish tugaguniga qadar texnik talablar bo'yicha bir necha kun qoldim va talablarni aniqlashga ulgurmadim - juda ko'p notanish so'zlar bor edi. Chunki Men yana uch oy kutishni xohlamadim, o'zimni davom ettirishga qaror qildim. Yaxshiyamki, barcha mashhur ramkalar uchun qo'llanmalar va video darsliklar mavjud. Keyingi bir necha oy ichida men Spring MVC, Spring Boot + Data, Spring Security, Hibernate, jUnit, Maven, Git, RDBMS bilan shug'ullandim, SQL-ni o'zlashtirdim va barchasini bir butunga jamlashga harakat qildim. Olti oy o'tgach, menda hozir qarash qo'rqinchli loyihalar bor edi, lekin men "kattalar" ramkalari va potentsial ish beruvchining iltimosiga binoan ko'rsatilishi mumkin bo'lgan GitHub-dan foydalanish bo'yicha amaliy tajribaga ega bo'ldim. Maslahat :
  1. .gitignore haqida qanchalik tezroq o'rgansangiz, shuncha yaxshi. ;)

  2. Ko'pgina qo'llanmalar bir vaqtning o'zida bir nechta ramkalarni o'z ichiga oladi; bundan foydalaning va o'zingiznikini qo'shing. Biz Maven + Spring Boot + Data yordamida onlayn-do'kon yozdik - avtorizatsiya, birlik testlari va jurnallarni qo'shing.

  3. Veb-loyihalar uchun siz Internetdan bepul frontend shablonlarini olishingiz mumkin - ular bilan ishlash yanada yoqimli, ular Git-dagi README-da skrinshotlar sifatida yaxshiroq ko'rinadi. Shu bilan birga, siz HTML va CSS-ni eslay olasiz - ehtimol siz uslublar va tartibni to'g'rilashni xohlaysiz.

O'zingiz uchun bunday rivojlanish rejasini yaratishning eng oson yo'li Junior\Middle Java Developer bo'sh ish o'rinlari uchun HH orqali o'tish va qaysi texnologiyalar va ramkalar ko'proq ko'rsatilishini ko'rishdir. Ularni yozing, ular uchun texnik xususiyatlarni ishlab chiqing, amalga oshirish muddatlarini belgilang. Garchi, ehtimol, agar men mahalliy amaliyot bilan boshlaganimda, uy loyihalariga bir necha oy sarflashim shart emas edi.

Menga nima etishmayotgan edi (keyinchalik suhbat paytida yonib ketdim)

  1. Algoritmlar. Xatolarimga yo'l qo'ymaslik uchun darhol rus tilidagi "Grocking Algoritms" nomli qisqa kitobni tavsiya qilaman. Algoritmlarning murakkabligi nima, u nimadan iborat, nima uchun tezkor saralash etarli emas, grafiklar nazariyasiga kirish - hamma narsa u erda va eng tushunarli tilda.

  2. "Kaput ostida" to'plamlari. Bu JavaRush-da bo'lganmi yoki yo'qligini eslay olmayman, lekin HashMap.get() qanday ishlashini yoki nima uchun HashSet element tartibini saqlab qolish kafolatlanmaganligini bilish foydalidir. Shunga qaramay, qaysi to'plamlar xavfsiz va nima uchun.

  3. SQL. Sizga kamida JOINlar kerak bo'ladi - ular nima, ular qanday ishlaydi, qog'ozda ikkita jadvalga SELECT yozish qobiliyati. Men www.sql-ex.ru ni tavsiya qilaman: u sizni bir-ikki kun ichida kerakli darajaga olib chiqadi.

  4. Spring Core: qanday izohlar bor, kontekst nima, loviya qanday yaratilgan, qaysi Bean Scope ip xavfsiz va o'zaro in'ektsiyani qanday hal qilish kerak - barcha intervyu savollari. Sahifani qanday qaytarish kerak, JSONni qanday qaytarish kerak va hokazo. Men hozirda rus tilida "Professionallar uchun 5-bahor" ni o'qiyapman, lekin umuman olganda, ular "Harakatda bahor" ni tavsiya qiladilar.

3-bosqich. Ish qidirish

Aslida, uy loyihalarini tugatgandan so'ng, birinchi ikki oy ichida men turli xil Junior\Trainee bo'sh ish o'rinlariga (HH, LinkedIn, ishga yollash agentliklari orqali) 30 ga yaqin javoblar yubordim, natijada nolga yaqin. Men faqat tajribasiz bo'sh ish o'rinlariga e'tibor qaratdim, rostini aytsam, menga tanish bo'lgan stekni ko'rsatdim va yuqori o'rganish qobiliyatim haqida muqovali xatlarda yozdim. Natijada ikkita qo'ng'iroq bo'ldi (ulardan biri darhol mening oraliq ingliz tilida tugaydi), yana ikkita kompaniya texnik xususiyatlarni yubordi, faqat bitta "uchrashuv" bor edi, keyin men u erda yolg'iz qog'ozdagi algoritmlar bo'yicha muammolarni hal qildim, shundan so'ng HR shunchaki hujjatlarni olib qo'ydi va "Sizga qo'ng'iroq qilamiz". Men bir nechta stajirovkani olishga harakat qildim (to'lanmagan va shartli to'langan): Men texnik shartlarni bajardim, lekin yakuniy ijtimoiy ta'minotdan tashqariga chiqmadim; lekin hozir aytishim mumkinki, stajyorlar T-Systems, CFT, Andersen va EPAM tomonidan yollanadi (ular aralash sharhlarga ega, o'zingiz qaror qiling). Menga kelsak, agar sizda bir necha oy davomida daromadsiz o'tirish va o'lmaslik imkoniyati bo'lsa, bu sohaga kirishning yaxshi usuli =) Umuman olganda, bu tajribadan keyin men biroz tushkunlikka tushib qoldim va butun voqeani qidiruv bilan to'xtatib qo'ydim. deyarli olti oy davomida - men oldingi profilda ishlashni davom ettirdim, shunchaki o'yin-kulgi uchun ba'zi ilovalarni yozdim, lekin ularni Git-ga ham joylashtirmadim. Men bir tanishimni uchratmagunimcha, unga bo'sh ish o'rinlari bilan bog'liq muvaffaqiyatsizliklar haqida tasodifiy gapirib berdim: o'sha paytda u allaqachon o'rta ishlab chiquvchi bo'lib ishlagan, lekin u xuddi shunday - mustaqil o'rganish bilan boshlagan. Bir tanishim menga bir nechta tavsiyalar berdi , u o'zi ishlatgan va kelajakda ish qidirishimda katta yordam berdi. Ularga ergashasizmi yoki yo'qmi o'zingizga bog'liq, chunki... ular, qaysidir ma'noda, butunlay halol emas. Shunday qilib, keyingi iqtiboslar:
  • Qanday bo'lmasin, o'zingizning rezyumeingizda 6+ oylik tijorat tajribasini taqdim eting: stajirovkalar, bitiruv loyihalari, freelancing, masofaviy ish - nima bo'lishidan qat'i nazar. Bu HR tomonidan rezyumelarni dastlabki tekshirish bosqichida katta yordam beradi;

  • rezyumedan Junior va kutilayotgan ish haqi so'zini olib tashlang; shunchaki Java Developer sifatida qoldiring va har bir kompaniya bilan pulni alohida muhokama qiling;

  • O'zingizning taxminlaringizni nomlashdan oldin HR taklif qilingan ish haqining "vilkasini" nomlashga harakat qiling. Agar kompaniya 80-120 ming taklif qilsa va siz 40 ming yoki undan ko'proq narsani qidirsangiz, ba'zi selektorlar sizni mensimaydilar;

  • 1-3 yillik tijorat tajribasini talab qilsa ham, stekingizga mos keladigan barcha bo'sh ish o'rinlariga murojaat qiling.

Ushbu tavsiyalarning barchasiga amal qilganimdan so'ng, qidiruv holati sezilarli darajada yaxshilandi. Birinchidan, taxminan 12 ta yangi javobning yarmi deyarli darhol uchrashuv, Skype yoki TK bilan yakunlandi (bu avvalgi oylarda e'tiborga olinmaganidan juda farq qilgan). Ikkinchidan, HR xodimlari menga yozishni boshladilar, men javob bermadim - messenjerlarda, pochtada, LinkedInda. Uchinchidan, tijorat tajribasiga qo'yiladigan talablar haqiqatan ham unchalik qat'iy emasligi ma'lum bo'ldi - ko'plab kompaniyalar 1-3 yillik korporativ amaliyotning belgilangan doirasiga kirmagan nomzod bilan muloqot qilishga tayyor edilar. Natijada - kichik uchun bitta taklif, sinov muddati bilan o'rta uchun. Umuman olganda, qidiruv ikki oy davom etdi. Maslahat :
  1. O'zingizning rezyumeingizga siz ishlagan tillar, texnologiyalar va ramkalar to'plamini kiriting.

  2. LinkedIn-da ro'yxatdan o'ting - u erda turli kompaniyalarning HR xodimlari juda ko'p. Profilingizni diqqat bilan to'ldiring - aslida bu ham sizning rezyumeingiz. Kontaktlar tarmog'ingizni rivojlantirish uchun profilingizga tegishli LIONlarni qo'shing; ular barcha foydalanuvchilarning so'rovlarini qabul qiladi.

  3. O'zingizni bepul Java testlarida sinab ko'ring - ular ko'pincha Junior intervyusidan oldin qog'ozda beriladi. Oldindan tayyorgarlik ko'rish yaxshiroqdir.

Intervyu haqida bir necha so'z
  1. Ular har doim to'plamlar haqida so'rashadi: qaysilari bor, ular qanday farqlanadi, ulardan foydalanishning eng yaxshi vaqti qachon.

  2. Har doim mavhum sinflar va interfeyslarda - ular usullari, maydonlari bo'lishi mumkinmi, qaysilari, meros qilib olinishi mumkinmi va hokazo.

  3. Deyarli har doim multithreadingda - ishingizda nima ishlatgansiz, kalit so'zlar, usullar, siz util.concurrent bilan tanishmisiz.

  4. Ko'pincha xotira bilan ishlashda - to'p, stek va bu satrlar teng bo'ladimi va bu ob'ektlar, nima uchun.

  5. Ba'zan algoritmlar haqida - qaysilarini bilasiz, qanday murakkablik, nima uchun, hozir algoritm yozishingiz mumkin.

  6. Ba'zan naqshlarga asoslanib - qaysi birini bilasiz, qaysi birini ishlatasiz, singleton yoki zavod yozing.

  7. Ba'zan SQLda - JOIN turlari, tranzaktsiya nima, uni JDBC da qanday o'tkazish kerak, qisqa so'rov yozing.

Aslida, hamma narsa kompaniyaga bog'liq : kimdir Java Core haqida bitta savol bermaydi, lekin 40 daqiqa davomida ramkalar va SQL haqida gapiradi; Ba'zi odamlar mashhur ramkalardan umuman foydalanmaydilar va faqat algoritmlar, turlar, to'plamlar va xotira haqida so'rashadi. Uchrashuvlarning yarmiga yaqini test sinovlari bilan boshlandi – goh rus tilida, goh ingliz tilida (20-30 daqiqaga 20-30 savol); Odatda “kod mana, u ishlaydimi yoki yo‘qmi, agar yo‘q bo‘lsa, qaysi qatorda” yoki “bu yerda bir nechta obyektlar, N ta amaldan keyin teng bo‘ladimi” darajasidagi savollar. Texnik spetsifikatsiyalar haqida bir necha so'z : aloqani boshlagan kompaniyalarning 70% yig'ilishdan oldin yoki keyin menga texnik xususiyatlarni yuborishdi. Odatda, tugatish bir necha kundan bir haftagacha beriladi, lekin ko'pincha muddatlarni biroz ko'chirish mumkin. Har qanday narsa texnik xususiyatlar sifatida ishlatilishi mumkin. Mana men qilgan misollar:
  • Yangi yozuvlarni tahrirlash va qo'shish bilan Salesforce profilining biznes aloqalari sahifasi;

  • konsol boshqaruvi bilan Spring State Machine yordamida ko'p qavatli binoda liftni simulyatsiya qilish;

  • LibGDX kutubxonasiga asoslangan Android ilovasi tugma bosilganda har bir belgi matn chiqishi;

  • HTTP so'rovi orqali mijozlarni qo'shish va JSONni qaytarish bilan avtomobil almashishning REST imitatsiyasi;

  • yo'naltirilmagan grafikni erkin katak orqali saralash masalasi;

  • fayldan koordinatalar yordamida teng yonli uchburchaklarni qidirish;

  • Stream API yordamida tayyor kodni qayta tiklash;

  • Uchlik ifodalarni qo'llab-quvvatlaydigan UI kalkulyatori;

  • natijalarni faylga yozish bilan iplar poygasi.

Ba'zan hisoblash usullari birlik testlari bilan, so'rov usullari esa integratsiya testlari bilan qamrab olinishi so'raladi. Maslahat :
  1. Nafaqat vazifani bajarishga, balki kod OOP tamoyillariga mos kelishiga ham harakat qiling.

  2. Samaradorlik uchun kodingizni tekshiring - men bir marta rad etilganman, chunki men BufferedWriter o'rniga PrintStream dan foydalanganman.

  3. Bajarish vaqtingizni 50% marja bilan rejalashtiring - belgilangan muddat ertalab soat sakkizda git push-ni bajarishdan ko'ra erta boshlash va tugatish yaxshiroqdir.

Xo'sh, men xohlagan hamma narsa, men yozgan deb o'ylayman. Eng muhimi, suv toshlarni yemiradi. Siz Java-da juda ko'p, ko'p yozolmaysiz, keyin uzoq, uzoq vaqt ish qidiring va oxir-oqibat hech narsa topolmaysiz. Agar 30 yoshli gumanitar fanlar mutaxassisi uni tortib olgan bo'lsa, siz buni yanada yaxshi qilishingiz mumkin. Asosiysi, birinchi qo'ng'iroqlar, texnik topshiriqlar va suhbatlardan qo'rqmang: har bir muvaffaqiyatsiz vaqtdan so'ng, men o'zim uchun nimanidir o'rganishim va uni yaxshilashimga kafolatlanganman - qanchalik uzoq bo'lsa, o'zingizni ishonchli his qilasiz. Agar biror joyda bu tartibsiz bo'lib qolsa yoki xatolar bo'lsa - oldindan uzr so'rayman, yozing, tuzataman. Umid qilamanki, mening tajribam hech bo'lmaganda kimgadir yordam beradi =)
Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION