JavaRush /Java Blogu /Random-AZ /Qoca bir humanist İT sahəsinə necə getdi
PieIsLie
Səviyyə
Санкт-Петербург

Qoca bir humanist İT sahəsinə necə getdi

Qrupda dərc edilmişdir
Atəşfəşanlıq! Əslində uzun müddətdir ki, bu yazıda dəqiq nə yazacağımı və ümumiyyətlə yazıb-yazmayacağımı düşünürdüm. Elə oldu ki, son iki ilin müxtəlif dövrlərində mən Java proqramçısı vəzifəsini əldə etmək şansımı müxtəlif yollarla qiymətləndirdim: “gec-tez - mütləq”dən “İT sahəsində heç bir şansım yoxdur”a qədər. Qoca bir humanist İT sahəsinə necə getdi - 1Bununla belə, JavaRush-da qeydiyyatdan keçməyimdən təxminən düz iki il keçdi. Bir neçə ay əvvəl ilk təklifimi aldım, bir az sonra ikinci təklifimi aldım, sonra yeni işə başladım. Kurs zamanı uğur hekayələri mənə çox kömək etdi, ona görə də öz hekayəmi dərc etmək qərarına gəldim. Kurs 18-ci ildə keçirildiyi üçün bəzi məlumatlar aktual olmaya bilər. Dərhal deyim ki, çoxlu mətn olacaq, çünki... Mən sizə təlim və iş axtarışları (tələblər, cavablar, texniki şərtlər, müsahibələr və s.) haqqında məlumat verməyə çalışacağam. Mən də şəxsən mənə kömək edən və başqalarına kömək edə biləcək bir neçə ümumi məsləhət yazacağam. Özüm haqqında qısaca: 32 yaş, idarəetmə və satış sahəsində 10 illik təcrübə, liberal sənət təhsili və heç bir texniki məlumat yoxdur. Bir neçə il əvvəl mən C++ dilini, sonra Python dilini öyrənməyə çalışdım – başım ağrıdı. Buna görə də məni istedadlı tərtibatçı adlandırmaq çətindir: əksinə.

MƏRHƏLƏ 1. Təlim

JavaRush-a şüurlu şəkildə gəldim: adekvat aylıq qiymət siyahısı, materialın aydın strukturu, çoxlu təcrübə və öz icmamın olması. Birinci nöqtə hər şey aydındır, lakin struktursuz bir dil öyrənmək olduqca çətindir və bu cür təlim, şübhəsiz ki, Java Core-da ciddi boşluqlar buraxacaq. Müsahibələrin və texniki spesifikasiyaların təcrübəsi göstərir ki, "əsas" haqqında suallar hər şey üçün istifadə edilə bilər: generiklərin bit istiqamətində dəyişdirilməsi və yayımlanmasından IO və serializasiyaya qədər. Təcrübə mütləq olmalıdır; Mən hələ də hər şeyi özüm yazsam, ancaq yarısını başa düşə və xatırlaya bilirəm. Yaxşı, cəmiyyət: problemi həll etdin - şərhlərdə bununla öyün; Qərar verməmisinizsə, suallar verə bilərsiniz, lakin çox güman ki, heç kim sizə hazır həll yolu verməyəcək. Kursu bitirdikdən sonra da pulsuz mövzularda xüsusi məqalələrə qayıtdım, orada başlamaq üçün çox yaxşı şeylər var (xüsusilə addım-addım nümunələrdən istifadə edən çərçivələrlə ilk təcrübə + müsahibələr üçün suallar). Ümumiyyətlə, aldığım baza üçün bu layihəyə minnətdaram, lakin mən təkcə JavaRush-a etibar etməzdim - eyni Şildt ən yaxşı şəkildə öyrənilən mövzuda "üst-üstə düşür" və tez-tez bəzi məqamları ortaya qoyur. Bəzən nəzəriyyədən irəli gələn və sizi Google-a məcbur edən vəzifələr haqqında rəylərdə artıq çox şey deyilib. Mənim üçün bu, mənfidən daha çox müsbətdir - və indi vəziyyətin oxuduğum zamanki kimi olduğu bir həqiqət deyil. Mənim kimi Java-ya “sıfırdan” daxil olanlara dərhal məsləhət : bəzi mərhələdə cansıxıcı və ya çətin ola bilərsiniz:
  1. Sıfırdan başlayan hər kəs üçün çətindir, Allah eləməsin, insanların cəmi 5%-i kursun sonuna çatır. Sizin vəzifəniz onlardan biri olmaqdır.

  2. Tapşırıqlar çətinləşən və maraqlı olandan bir-iki ay sonra maraqlandım. Səbirli olun.

  3. Əsas odur ki, həftəlik irəliləyiş var. İki həftəlik istirahətdən sonra geri qayıtmaq artıq çətindir və hamı bir neçə ay ardıcıl olaraq hər gün yaza bilmir. Həftə üçün özünüzə saat limiti verin - məsələn, 15. Siz həftənin hər günü 1,5 saat və hər iki həftə sonu başqa 3-4 saat kod yaza bilərsiniz və ya bir neçə axşam istirahət edə bilərsiniz, lakin "həftə sonu limiti" artırmaq. Beləliklə, cədvəl çevik, lakin müntəzəm olacaq. Əlbəttə ki, o zaman işi tapşırıqlar və layihələrlə ölçmək mümkün olacaq, lakin sintaksis və nüvə səviyyəsində saatlar olacaq.
Ümumiyyətlə, həm məzuniyyət, həm də qısa fasilələri ödəyə bildiyimə baxmayaraq, kursu tamamlamaq (staj keçməmişdən əvvəl) təxminən 5 ay çəkdi ; Yenə də, beş günlük iş həftəsi yalnız həftə sonları və həftə içi axşamlar 22-dən 00-a qədər pulsuzdur. Beləliklə, daha sərbəst cədvəl və ya daha sərt məşq rejimi ilə siz çox erkən öhdəsindən gələ bilərsiniz. Sonra təcrübə keçməyi planlaşdırdım, amma sonda alınmadı.

MƏRHƏLƏ 2. Özünütəhsil

Beləliklə, təcrübə keçmədim: qrupa işə qəbulun sonuna qədər texniki tələblər üzrə cəmi bir neçə gün qaldım və tələbləri anlamağa vaxtım olmadı - çox tanış olmayan sözlər var idi. Çünki Daha üç ay gözləmək istəmədim, özümü davam etdirmək qərarına gəldim. Xoşbəxtlikdən, bütün məşhur çərçivələr üçün təlimatlar və video dərsləri var. Sonrakı bir neçə ay ərzində Spring MVC, Spring Boot + Data, Spring Security, Hibernate, jUnit, Maven, Git, RDBMS ilə məşğul oldum, SQL-i mənimsədim və hamısını bir bütövlükdə birləşdirməyə çalışdım. Altı ay sonra, indi baxmaq qorxulu layihələrim var idi, lakin mən “böyüklər” çərçivələrindən və potensial işəgötürənin tələbi ilə göstərilə bilən GitHub-dan istifadədə praktiki təcrübə qazandım. məsləhət :
  1. .gitignore haqqında nə qədər tez öyrənsəniz, bir o qədər yaxşıdır. ;)

  2. Bir çox bələdçilərə eyni anda bir neçə çərçivə daxildir; bundan istifadə edin və özünüzü əlavə edin. Maven + Spring Boot + Data istifadə edərək onlayn mağaza yazdıq - icazə, vahid testləri və giriş əlavə edin.

  3. Veb layihələri üçün İnternetdən pulsuz frontend şablonları götürə bilərsiniz - onlarla işləmək daha xoşdur, Git-də README-də ekran görüntüləri kimi daha yaxşı görünürlər. Eyni zamanda, siz HTML və CSS-i yadda saxlaya biləcəksiniz - yəqin ki, üslubları və tərtibatı düzəltmək istəyəcəksiniz.

Özünüz üçün belə bir inkişaf planı yaratmağın ən asan yolu Junior\Middle Java Developer vakansiyaları üçün HH-dən keçmək və daha çox hansı texnologiya və çərçivələrin göstərildiyini görməkdir. Onları yazın, onlar üçün texniki spesifikasiyalar hazırlayın, həyata keçirmək üçün özünüzə son tarixlər təyin edin. Baxmayaraq ki, bəlkə də yerli təcrübə ilə başlasaydım, ev layihələrinə bir neçə ay sərf etməzdim.

Nə əskik idim (sonradan müsahibə zamanı yandım)

  1. Alqoritmlər. Səhvlərimdən qaçmaq üçün dərhal rus dilində “Grocking alqoritmləri” adlı qısa kitabı tövsiyə edirəm. Alqoritmlərin mürəkkəbliyi nədir, nədən ibarətdir, niyə sürətli çeşidləmə kifayət deyil, qrafik nəzəriyyəsinə giriş - hər şey orada və ən başa düşülən dildə.

  2. "Başlıq altında" kolleksiyaları. Bunun JavaRush-da olub-olmadığını xatırlamıram, lakin HashMap.get()-in necə işlədiyini və ya HashSet-in element sırasını qorumağa zəmanət verilmədiyini bilmək faydalıdır. Yenə də hansı kolleksiyalar təhlükəsizdir və niyə.

  3. SQL. Sizə ən azı JOIN-a ehtiyacınız var - onlar nədir, necə işləyirlər, kağız üzərində iki masaya SEÇİM yazmaq bacarığı. Mən www.sql-ex.ru saytını tövsiyə edirəm: o, sizi bir-iki günə istədiyiniz səviyyəyə çatdıracaq.

  4. Spring Core: hansı şərhlər var, kontekst nədir, lobya necə yaradılır, hansı Bean Scope iplə təhlükəsizdir və qarşılıqlı inyeksiyanı necə həll etmək olar - bütün müsahibə sualları. Səhifəni necə qaytarmalı, JSON-u necə qaytarmalı və s. Hazırda “Peşəkarlar üçün 5-ci bahar”ı rus dilində oxuyuram, amma ümumiyyətlə, “Fəaliyyətdə olan bahar”ı tövsiyə edirlər.

MƏRHƏLƏ 3. İş axtarışı

Əslində, ev layihələrini tamamladıqdan sonra ilk bir neçə ay ərzində mən müxtəlif Junior\Trainee vakansiyalarına (HH, LinkedIn, işə qəbul agentlikləri vasitəsilə) 30-a yaxın cavab göndərdim, nəticə sıfıra yaxındır. Mən yalnız təcrübəsi olmayan vakansiyalara diqqət yetirdim, səmimi olaraq mənə tanış olan yığını göstərdim və yüksək öyrənmə qabiliyyətim haqqında örtük məktublarında yazdım. Nəticə iki zəng oldu (onlardan biri dərhal mənim pre-intermediate ingiliscəmlə başa çatdı), daha iki şirkət texniki spesifikasiyalar göndərdi, yalnız bir "görüş" var idi və sonra mən tək bir kağız üzərində alqoritmlərlə bağlı problemləri həll etdim, bundan sonra HR sadəcə sənədləri götürdü və "Sənə zəng edəcəyik". Mən bir neçə təcrübə keçməyə çalışdım (ödənişsiz və şərti ödənişli): Texniki şərtləri yerinə yetirdim, lakin yekun sosial təminatdan kənara çıxmadım; amma indi deyə bilərəm ki, kursantlar mütləq T-Systems, CFT, Andersen və EPAM tərəfindən işə götürülür (onların qarışıq rəyləri var, özünüz qərar verin). Mənə gəlincə, bir neçə ay gəlirsiz oturmaq və ölməmək imkanınız varsa sahəyə girməyin yaxşı yoludur =) Ümumiyyətlə, bu təcrübədən sonra bir qədər depressiyaya düşdüm və bütün hekayəni axtarışa verdim. demək olar ki, altı ay - əvvəlki profil üzərində işləməyə davam etdim, sadəcə əylənmək üçün bəzi ərizələr yazdım, lakin onları Git-də belə yerləşdirmədim. Bir tanışımla tanış olana qədər, boş yerlərlə bağlı uğursuzluqlar barədə təsadüfən danışdım: o vaxt o, artıq orta inkişaf etdirici kimi işləyirdi, amma eyni şəkildə - özünü öyrənməyə başladı. Bir tanışım mənə bir-iki tövsiyə verdi , özü də onlardan istifadə etdi və gələcəkdə iş axtarışımda mənə çox kömək etdi. Onlara tabe olub-olmamağınız sizə bağlıdır, çünki... onlar, müəyyən mənada, tamamilə dürüst deyillər. Beləliklə, əlavə sitatlar:
  • İstənilən şəkildə CV-nizdə özünüzü 6+ aylıq kommersiya təcrübəsi ilə təmin edin: staj, məzun layihələri, sərbəst iş, uzaqdan iş - nə olursa olsun. Bu, HR tərəfindən CV-lərin ilkin yoxlanılması mərhələsində çox kömək edəcək;

  • CV-dən Junior və gözlənilən maaş sözünü çıxarın; sadəcə onu Java Developer olaraq buraxın və pulu hər bir şirkətlə fərdi şəkildə müzakirə edin;

  • Gözləntilərinizi qeyd etməzdən əvvəl HR-nin təklif olunan maaşın “çəngəlini” adlandırmasına çalışın. Əgər şirkət 80-120k təklif edirsə və siz 40k və ya daha çox pul axtarırsınızsa, bəzi seçicilər sizə hörmətsizliklə yanaşacaqlar;

  • 1-3 illik kommersiya təcrübəsi tələb olunsa belə, yığınınıza uyğun gələn bütün vakansiyalara müraciət edin.

Bütün bu tövsiyələrə əməl etdikdən sonra axtarış vəziyyəti xeyli yaxşılaşdı. Birincisi, təxminən 12 yeni cavabın yarısı demək olar ki, dərhal ya görüşdə, ya da Skype və ya TK ilə başa çatdı (bu, əvvəlki aylarda nəzərə alınmayandan çox fərqli idi). İkincisi, HR işçiləri mənə cavab vermədiyim mesajlaşmalarda, poçtda, LinkedIn-də yazmağa başladılar. Üçüncüsü, kommersiya təcrübəsi tələbləri həqiqətən də çox sərt olmadığı ortaya çıxdı - bir çox şirkət 1-3 illik korporativ təcrübənin müəyyən edilmiş diapazonuna düşməyən bir namizədlə ünsiyyət qurmağa hazır idi. Nəticədə - bir kiçik üçün bir təklif, bir sınaq müddəti ilə bir orta. Ümumilikdə axtarış iki ay çəkdi. məsləhət :
  1. CV-yə işlədiyiniz bütün dillər, texnologiyalar və çərçivələri daxil edin.

  2. LinkedIn-də qeydiyyatdan keçin - orada müxtəlif şirkətlərdən həqiqətən çoxlu HR işçiləri var. Profilinizi diqqətlə doldurun - əslində bu da sizin CV-dir. Əlaqələr şəbəkənizi inkişaf etdirmək üçün profilinizə uyğun LION-ları əlavə edin; onlar bütün istifadəçilərin sorğularını qəbul edirlər.

  3. Özünüzü pulsuz Java testlərində sınayın - onlar tez-tez Junior müsahibəsindən əvvəl kağız üzərində verilir. Əvvəlcədən hazırlamaq daha yaxşıdır.

Müsahibələr haqqında bir neçə kəlmə
  1. Onlar həmişə kolleksiyalar haqqında soruşurlar: hansılar var, necə fərqlənirlər, onlardan istifadə etmək üçün ən yaxşı vaxt nə vaxtdır.

  2. Həmişə mücərrəd siniflərdə və interfeyslərdə - onların metodları, sahələri ola bilərmi, hansılar, miras alına bilərmi və s.

  3. Demək olar ki, həmişə multithreading-də - işinizdə istifadə etdiyiniz açar sözlər, metodlar, util.concurrent ilə tanışsınız.

  4. Tez-tez yaddaşla işləyərkən - yığın, yığın və bu sətirlər bərabər olacaq və bu obyektlər, niyə.

  5. Bəzən alqoritmlər haqqında - hansıları bilirsiniz, hansı mürəkkəblik, niyə, indi alqoritm yaza bilərsiniz.

  6. Bəzən nümunələrə əsaslanaraq - hansını bilirsiniz, hansını istifadə edirsiniz, singleton və ya zavod yazın.

  7. Bəzən SQL-də - JOIN növləri, əməliyyat nədir, onu JDBC-də necə aparmaq olar, qısa sorğu yazın.

Əslində, hər şey şirkətdən çox asılıdır : kimsə Java Core haqqında bir sual vermir, lakin çərçivələr və SQL haqqında danışmağa 40 dəqiqə sərf edir; Bəzi insanlar populyar çərçivələrdən ümumiyyətlə istifadə etmir və yalnız alqoritmlər, növlər, kolleksiyalar və yaddaş haqqında soruşurlar. Görüşlərin təxminən yarısı testlərlə başladı - bəzən rus, bəzən ingilis (20-30 dəqiqə ərzində 20-30 sual); Adətən “kod budur, işləyəcək, yoxsa yox, yoxsa, hansı sətirdə” və ya “burada bir neçə obyekt var, N əməliyyatdan sonra bərabər olacaqmı” səviyyəsində suallar verilir. Texniki spesifikasiyalar haqqında bir neçə kəlmə : Ünsiyyətə başlayan şirkətlərin 70%-i görüşdən əvvəl və ya sonra mənə texniki spesifikasiyalar göndərdi. Adətən, tamamlama bir neçə gündən bir həftəyə qədər verilir, lakin çox vaxt son tarixlər bir az dəyişdirilə bilər. Hər şey texniki xüsusiyyətlər kimi istifadə edilə bilər. Etdiyim nümunələr bunlardır:
  • Redaktə və yeni qeydlər əlavə etməklə Salesforce profilinin biznes əlaqələri səhifəsi;

  • konsol idarəetməsi ilə Spring State Machine istifadə edərək, çoxmərtəbəli binada liftin simulyasiyası;

  • Düymə basıldığında hər simvol mətn çıxışı ilə LibGDX kitabxanasına əsaslanan Android proqramı;

  • HTTP sorğusu vasitəsilə müştərilərin əlavə edilməsi və JSON-un qaytarılması ilə avtomobil paylaşımının REST imitasiyası;

  • sərbəst xana vasitəsilə istiqamətləndirilməmiş qrafikin çeşidlənməsi məsələsi;

  • fayldan koordinatlardan istifadə edərək ikitərəfli üçbucaqları axtarın;

  • Stream API istifadə edərək hazır kodun refaktorinqi;

  • üçlü ifadələri dəstəkləyən UI kalkulyatoru;

  • nəticələrin fayla yazılması ilə mövzuların yarışı.

Bəzən hesablama üsullarının vahid testlərlə, sorğu metodlarının isə inteqrasiya testləri ilə əhatə olunması istənilir. məsləhət :
  1. Yalnız tapşırığı yerinə yetirməyə deyil, həm də kodun OOP prinsiplərinə uyğun olmasını təmin etməyə çalışın.

  2. Səmərəlilik üçün kodunuzu yoxlayın - bir dəfə rədd edildim, çünki başqa şeylər arasında BufferedWriter əvəzinə PrintStream istifadə etdim.

  3. İcra müddətinizi 50% marja ilə planlaşdırın - son tarixdə səhər saat səkkizdə git push etməkdən daha tez başlamaq və bitirmək daha yaxşıdır.

Yaxşı, istədiyim hər şeyi yazdım. Ən əsası odur ki, su daşları aşındırır. Java-da çox, çox yaza bilməzsən, sonra uzun, uzun müddət iş axtarırsan və sonunda heç nə tapmırsan. Əgər 30 yaşlı humanitar elmlər mütəxəssisi bunu çəkibsə, siz bunu daha yaxşı edə bilərsiniz. Əsas odur ki, ilk zənglərdən, texniki tapşırıqlardan və müsahibələrdən qorxma: hər bir uğursuz vaxtdan sonra mənə özüm üçün nəsə öyrənmək və onu təkmilləşdirməyə zəmanət verilirdi - nə qədər uzun olsa, bir o qədər inamlı olarsan. Bir yerdə xaotik çıxdısa və ya səhvlər varsa - əvvəlcədən üzr istəyirəm, yazın, düzəldəcəm. Ümid edirəm təcrübəm heç olmasa kiməsə kömək edəcək =)
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION