JavaRush /Java Blog /Random-TL /Paano napunta sa IT ang isang matandang humanist
PieIsLie
Antas
Санкт-Петербург

Paano napunta sa IT ang isang matandang humanist

Nai-publish sa grupo
Paputok! Actually, matagal ko ng iniisip kung ano nga ba ang isusulat ko sa post na ito at kung isusulat ko ba talaga. Nagkataon lang na sa iba't ibang panahon ng huling dalawang taon ay nasuri ko ang aking mga pagkakataong makakuha ng posisyon ng developer ng Java sa iba't ibang paraan: mula sa "maaga o huli - tiyak" hanggang sa "Wala akong pagkakataon sa IT." Paano napunta sa IT ang isang matandang humanist - 1Gayunpaman, halos eksaktong dalawang taon na ang lumipas mula noong nagparehistro ako sa JavaRush. Ilang buwan na ang nakalilipas natanggap ko ang aking unang alok, ilang sandali ay natanggap ko ang aking pangalawa, at pagkatapos ay nagsimula ako ng isang bagong trabaho. Malaki ang naitulong sa akin ng mga kwento ng tagumpay sa kurso, kaya nagpasya akong mag-post ng sarili ko. Dahil naganap ang kurso noong '18, maaaring hindi napapanahon ang ilang impormasyon. Sasabihin ko kaagad na magkakaroon ng maraming text, dahil... Susubukan kong sabihin sa iyo ang tungkol sa pagsasanay at paghahanap ng trabaho (mga kinakailangan, tugon, teknikal na detalye, panayam, atbp.). Magsusulat din ako ng ilang pangkalahatang tip na nakatulong sa akin nang personal at maaaring makatulong sa iba. Maikling tungkol sa aking sarili: 32 taong gulang, 10 taong karanasan sa pamamahala at pagbebenta, liberal arts education at ganap na walang teknikal na background. Ilang taon na ang nakalilipas sinubukan kong makapasok sa C++, pagkatapos ay sa Python - wala akong nakuha kundi sakit ng ulo. Samakatuwid, mahirap na tawagan akong isang mahuhusay na developer: sa halip ang kabaligtaran.

YUGTO 1. Pagsasanay

Nakarating ako sa JavaRush nang may kamalayan: isang sapat na buwanang listahan ng presyo, isang malinaw na istraktura ng materyal, maraming pagsasanay at pagkakaroon ng sarili kong komunidad. Ang unang punto ay malinaw sa lahat, ngunit ang pag-aaral ng isang wika na walang istraktura ay medyo mahirap, at ang gayong pagsasanay ay tiyak na mag-iiwan sa isang tao na may malubhang gaps sa Java Core. Ang karanasan ng mga panayam at teknikal na mga detalye ay nagpapakita na ang mga tanong tungkol sa "core" ay maaaring gamitin para sa lahat: mula sa bitwise shifting at cast ng generics sa IO at serialization. Practice ay isang dapat-may; Maiintindihan at maaalala ko lang ang kalahati ng mga bagay kung ako mismo ang sumulat nito. Buweno, ang komunidad: nalutas mo ang problema - ipagmalaki ito sa mga komento; Kung hindi ka pa nakapagpasya, maaari kang magtanong, ngunit malamang na walang magbibigay sa iyo ng isang handa na solusyon. At bumalik ako sa mga custom na artikulo sa mga libreng paksa kahit na matapos ang kurso, maraming magagandang bagay doon upang magsimula (lalo na ang unang karanasan sa mga balangkas gamit ang mga sunud-sunod na halimbawa + mga tanong para sa mga panayam). Sa pangkalahatan, nagpapasalamat ako sa proyektong ito para sa base na natanggap ko, ngunit hindi ako aasa lamang sa JavaRush - ang parehong Shildt na pinakamaganda sa lahat ay "nagpapatong" sa paksang pinag-aaralan, at kadalasang naghahayag ng ilang mga punto. Marami nang nasabi sa mga review tungkol sa mga gawain na minsan ay nauuna sa teorya at pinipilit kang pumunta sa Google. Para sa akin, ito ay higit pa sa isang plus kaysa sa isang minus - at ito ay hindi isang katotohanan na ngayon ang sitwasyon ay pareho noong ako ay nag-aaral. Agarang payo sa mga taong, tulad ko, pumasok sa Java "mula sa simula" : sa ilang yugto maaari kang maging nababato o mahirap:
  1. Mahirap para sa lahat na nagsisimula sa simula; huwag sana, 5% lang ng mga tao ang makakarating sa pagtatapos ng kurso. Ang iyong gawain ay maging isa sa kanila.

  2. Ang aking interes ay lumitaw pagkatapos ng isang buwan o dalawa, nang ang mga gawain ay naging mas mahirap at kawili-wili. Maging matiyaga.

  3. Ang pangunahing bagay ay lingguhang pag-unlad. Pagkatapos ng dalawang linggong pahinga, mahirap nang bumalik, at hindi lahat ay maaaring magsulat araw-araw sa loob ng ilang buwan nang sunud-sunod. Bigyan ang iyong sarili ng limitasyon ng mga oras para sa linggo - halimbawa, 15. Maaari kang mag-code ng 1.5 na oras tuwing weekday at isa pang 3-4 na oras sa parehong weekend, o maaari kang magpahinga ng ilang gabi, ngunit ang "limit sa katapusan ng linggo" ay pagtaas. Sa ganitong paraan, ang iskedyul ay magiging flexible, ngunit regular. Siyempre, posible na sukatin ang trabaho sa pamamagitan ng mga gawain at proyekto, ngunit sa antas ng syntax at kernel, magagawa ng mga oras.
Sa pangkalahatan, inabot ako ng humigit-kumulang 5 buwan upang makumpleto ang kurso (bago ma-access ang internship) , sa kabila ng katotohanan na kaya kong bayaran ang parehong bakasyon at maikling pahinga; muli, ang pagtatrabaho ng limang araw na linggo ay natitira na lamang sa katapusan ng linggo at mga gabi ng karaniwang araw na libre mula 22 hanggang 00. Kaya, sa isang mas maluwag na iskedyul o isang mas mahigpit na rehimen ng pagsasanay, maaari mong makayanan ang mas maaga. Pagkatapos ay nagplano akong kumuha ng internship, ngunit sa huli ay hindi ito gumana.

YUGTO 2. Edukasyon sa sarili

Kaya, hindi ako nakakuha ng internship: Nag-iwan lang ako ng ilang araw sa mga teknikal na kinakailangan hanggang sa katapusan ng recruitment sa grupo at wala akong oras upang malaman ang mga kinakailangan - napakaraming hindi pamilyar na mga salita. kasi Hindi ko nais na maghintay ng isa pang tatlong buwan, nagpasya akong mag-move on sa aking sarili. Sa kabutihang palad, may mga gabay at video tutorial para sa lahat ng sikat na frameworks. Sa susunod na ilang buwan, nakipag-usap ako sa Spring MVC, Spring Boot + Data, Spring Security, Hibernate, jUnit, Maven, Git, RDBMS, pinagkadalubhasaan ang SQL at sinubukang pagsama-samahin ang lahat sa iisang buo. Pagkalipas ng anim na buwan, mayroon akong mga proyekto na nakakatakot tingnan ngayon, ngunit nakakuha ako ng praktikal na karanasan sa paggamit ng mga framework na "pang-adulto" at isang GitHub na maaaring ipakita sa kahilingan ng isang potensyal na employer. Payo :
  1. Kung mas maaga kang matuto tungkol sa .gitignore, mas mabuti. ;)

  2. Maraming mga gabay ang may kasamang ilang mga balangkas nang sabay-sabay; gamitin ito at idagdag ang iyong sarili. Sumulat kami ng isang online na tindahan gamit ang Maven + Spring Boot + Data - magdagdag ng pahintulot, mga pagsubok sa yunit at pag-log.

  3. Para sa mga proyekto sa web, maaari kang kumuha ng mga libreng frontend na template mula sa Internet - mas kaaya-aya silang gamitin, mas maganda ang hitsura nila bilang mga screenshot sa README sa Git. Kasabay nito, maaalala mo ang HTML at CSS - malamang na gusto mong itama ang mga estilo at layout.

Ang pinakamadaling paraan upang gumawa ng ganoong plano sa pagpapaunlad para sa iyong sarili ay dumaan sa HH para sa mga bakanteng Junior\Middle Java Developer at tingnan kung aling mga teknolohiya at framework ang pinakamadalas na ipinahiwatig. Isulat ang mga ito, gumawa ng mga teknikal na detalye para sa kanila, itakda ang iyong sarili ng mga deadline para sa pagpapatupad. Bagaman, marahil kung nagsimula ako sa isang lokal na internship, hindi ko na kailangang gumastos ng ilang buwan sa mga proyekto sa bahay.

Ano ang nawawala sa akin (sa kalaunan ay nasunog ako sa isang panayam)

  1. Algorithm. Upang maiwasan ang aking mga pagkakamali, inirerekumenda ko kaagad ang isang maikling libro sa Russian, "Grocking Algorithms." Ano ang pagiging kumplikado ng mga algorithm, kung ano ang binubuo nito, bakit hindi sapat ang quicksort, isang panimula sa teorya ng graph - lahat ay naroroon at sa pinaka-naiintindihan na wika.

  2. Mga koleksyon "sa ilalim ng talukbong". Hindi ko maalala kung ito ay nasa JavaRush, ngunit kapaki-pakinabang na malaman kung paano gumagana ang HashMap.get() o kung bakit ang isang HashSet ay hindi ginagarantiyahan na mapanatili ang pagkakasunud-sunod ng elemento. Muli, aling mga koleksyon ang ligtas sa thread at bakit.

  3. SQL. Kailangan mo ng hindi bababa sa hanggang sa SUMALI - kung ano ang mga ito, kung paano gumagana ang mga ito, ang kakayahang magsulat ng isang PILI sa dalawang talahanayan sa papel sa mabilisang. Inirerekomenda ko ang www.sql-ex.ru: dadalhin ka nito sa nais na antas sa isang araw o dalawa.

  4. Spring Core: anong uri ng mga anotasyon ang naroroon, ano ang konteksto, kung paano nilikha ang mga bean, kung aling Bean Scope ang ligtas sa thread, at kung paano lutasin ang mutual injection - lahat ng mga tanong sa panayam. Paano ibalik ang isang pahina, kung paano ibalik ang JSON, atbp. Kasalukuyan akong nagbabasa ng "Spring 5 for Professionals" sa Russian, ngunit sa pangkalahatan ay inirerekomenda nila ang "Spring in Action".

YUGTO 3. Paghahanap ng trabaho

Sa totoo lang, sa unang dalawang buwan pagkatapos makumpleto ang mga proyekto sa bahay, nagpadala ako ng humigit-kumulang 30 tugon sa iba't ibang bakanteng Junior\Trainee (sa pamamagitan ng HH, LinkedIn, mga ahensya ng recruitment), na may halos zero na mga resulta. Nakatuon lang ako sa mga bakante na walang karanasan, tapat na nagpahiwatig ng isang stack na pamilyar sa akin at nagsulat tungkol sa aking mataas na kakayahan sa pag-aaral sa mga cover letter. Ang resulta ay dalawang tawag (ang isa ay agad na natapos sa aking pre-intermediate na Ingles), dalawa pang kumpanya ang nagpadala ng mga teknikal na pagtutukoy, mayroon lamang isang "pagpupulong", at pagkatapos ay naroon akong mag-isa sa paglutas ng mga problema sa mga algorithm sa isang piraso ng papel, tapos kinuha na lang ng HR yung mga papeles at "Tatawagan ka namin." Sinubukan kong kumuha ng ilang internship (hindi binayaran at may kondisyong binabayaran): Ginawa ko ang teknikal na detalye, ngunit hindi lumampas sa panghuling social security; pero ngayon masasabi ko na ang mga trainees ay tiyak na nire-recruit ng T-Systems, CFT, Andersen at EPAM (may halong review sila, magdesisyon para sa iyong sarili). Para sa akin, ito ay isang mahusay na paraan upang makapasok sa larangan kung mayroon kang pagkakataon na umupo nang walang kita sa loob ng ilang buwan at hindi mamatay =) Sa pangkalahatan, pagkatapos ng karanasang ito ay medyo nalulumbay ako, at inilagay ang buong kuwento sa paghahanap sa pause sa loob ng halos anim na buwan - Nagpatuloy ako sa paggawa sa nakaraang profile , nagsulat ng ilang application para lang sa kasiyahan, ngunit hindi man lang na-post ang mga ito sa Git. Hanggang sa nakilala ko ang isang kakilala, kung kanino ko kaswal na sinabi tungkol sa mga pagkabigo sa mga bakante: sa oras na iyon siya ay nagtatrabaho na bilang isang gitnang developer, ngunit nagsimula siya sa parehong paraan - sa pag-aaral sa sarili. Isang kakilala ang nagbigay sa akin ng ilang rekomendasyon , na ginamit niya mismo at nakatulong nang husto sa aking paghahanap ng trabaho sa hinaharap. Kung susundin mo sila o hindi, nasa iyo, dahil... sila, sa ilang paraan, ay hindi lubos na tapat. Kaya, karagdagang mga quote:
  • Sa anumang paraan, bigyan ang iyong sarili ng 6+ na buwan ng komersyal na karanasan sa iyong resume: mga internship, mga proyekto sa pagtatapos, freelancing, malayong trabaho - anuman. Malaki ang maitutulong nito sa yugto ng paunang screening ng mga resume ng HR;

  • tanggalin ang salitang Junior at inaasahang suweldo sa iyong resume; iwanan lamang ito bilang Java Developer, at talakayin ang pera nang paisa-isa sa bawat kumpanya;

  • subukan na pangalanan ng HR ang "tinidor" ng iminungkahing suweldo bago mo pangalanan ang iyong mga inaasahan. Kung nag-aalok ang isang kumpanya ng 80-120k, at naghahanap ka ng 40k o higit pa, hahamakin ka ng ilang mga pumipili;

  • Mag-apply sa lahat ng bakante na nababagay sa iyong stack, kahit na nangangailangan sila ng 1-3 taon ng komersyal na karanasan.

Pagkatapos kong sundin ang lahat ng mga rekomendasyong ito, ang sitwasyon sa paghahanap ay bumuti nang malaki. Una, sa humigit-kumulang 12 bagong tugon, kalahati ay halos agad na natapos sa alinman sa isang pulong, o Skype, o TK (na ibang-iba na sa hindi pinansin sa mga nakaraang buwan). Pangalawa, nagsimulang sumulat sa akin ang mga taong HR, na hindi ko sinagot - sa mga instant messenger, sa mail, sa LinkedIn. Pangatlo, ang mga kinakailangan sa komersyal na karanasan ay naging talagang hindi masyadong mahigpit - maraming mga kumpanya ang handa na makipag-ugnayan sa isang kandidato na hindi nahulog sa loob ng tinukoy na hanay ng 1-3 taon ng corporate practice. Bilang resulta - isang alok para sa isang junior, isa para sa gitna na may panahon ng pagsubok. Sa kabuuan, tumagal ng dalawang buwan ang paghahanap. Payo :
  1. Isama sa iyong resume ang buong stack ng mga wika, teknolohiya, at framework na ginamit mo.

  2. Magrehistro sa LinkedIn - marami talagang HR na tao mula sa iba't ibang kumpanya doon. Punan nang mabuti ang iyong profile - sa katunayan, ito rin ang iyong resume. Upang bumuo ng iyong network ng mga contact, magdagdag ng mga LION na may kaugnayan sa iyong profile; tumatanggap sila ng mga kahilingan mula sa lahat ng mga user.

  3. Subukan ang iyong sarili sa mga libreng pagsusulit sa Java - kadalasang ibinibigay ang mga ito sa papel bago ang panayam sa Junior. Mas mainam na maghanda nang maaga.

Ilang salita tungkol sa mga panayam
  1. Palagi silang nagtatanong tungkol sa mga koleksyon: alin ang naroroon, kung paano sila nagkakaiba, kailan ang pinakamagandang oras para gamitin ang mga ito.

  2. Palaging nasa abstract na mga klase at interface - maaari ba silang magkaroon ng mga pamamaraan, mga patlang, kung alin, maaari silang mamana, atbp.

  3. Halos palaging sa multithreading - kung ano ang ginamit mo sa iyong trabaho, mga keyword, pamamaraan, ay pamilyar ka sa util.concurrent.

  4. Kadalasan kapag nagtatrabaho sa memorya - ang heap, ang stack, at ang mga string na ito ay magiging pantay, at ang mga bagay na ito, bakit.

  5. Minsan tungkol sa mga algorithm - kung alin ang alam mo, kung anong kumplikado, bakit, maaari kang sumulat ng isang algorithm ngayon.

  6. Minsan batay sa mga pattern - kung alin ang alam mo, kung alin ang ginagamit mo, sumulat ng singleton o pabrika.

  7. Minsan sa SQL - mga uri ng JOIN, kung ano ang isang transaksyon, kung paano isagawa ito sa JDBC, magsulat ng isang maikling query.

Sa katunayan, ang lahat ay lubos na nakasalalay sa kumpanya : ang isang tao ay hindi nagtatanong ng isang tanong tungkol sa Java Core, ngunit gumugugol ng 40 minuto sa pakikipag-usap tungkol sa mga balangkas at SQL; Ang ilang mga tao ay hindi gumagamit ng mga sikat na framework at nagtatanong lamang tungkol sa mga algorithm, uri, koleksyon at memorya. Humigit-kumulang kalahati ng mga pagpupulong ay nagsimula sa mga pagsusulit - kung minsan sa Russian, kung minsan sa Ingles (20-30 mga tanong para sa 20-30 minuto); Karaniwan ang mga tanong sa antas ng "narito ang code, tatakbo ba ito o hindi, at kung hindi, kung gayon sa anong linya" o "narito ang ilang mga bagay, magiging pantay ba sila pagkatapos ng mga operasyon ng N". Ilang salita tungkol sa mga teknikal na detalye : 70% ng mga kumpanyang nagsisimula ng komunikasyon ay nagpadala sa akin ng mga teknikal na detalye bago o pagkatapos ng pulong. Karaniwan, ang pagkumpleto ay ibinibigay mula sa ilang araw hanggang isang linggo, ngunit kadalasan ang mga deadline ay maaaring ilipat nang kaunti. Maaaring gamitin ang anumang bagay bilang mga teknikal na pagtutukoy. Narito ang mga halimbawang ginawa ko:
  • Salesforce profile business contact page na may pag-edit at pagdaragdag ng mga bagong tala;

  • simulation ng elevator sa maraming palapag na gusali gamit ang Spring State Machine na may kontrol sa console;

  • Android application batay sa LibGDX library na may character-by-character na text output kapag pinindot ang isang button;

  • REST imitasyon ng pagbabahagi ng kotse, sa pagdaragdag ng mga kliyente sa pamamagitan ng HTTP na kahilingan at pagbabalik ng JSON;

  • problema sa pag-uuri ng isang hindi nakadirekta na graph sa pamamagitan ng isang libreng cell;

  • maghanap ng mga isosceles triangle gamit ang mga coordinate mula sa isang file;

  • refactoring ng tapos na code gamit ang Stream API;

  • UI calculator na may suporta para sa mga ternary expression;

  • lahi ng mga thread sa pagsusulat ng mga resulta sa isang file.

Minsan ang mga paraan ng pagkalkula ay hinihiling na saklawin ng mga unit test, at ang mga pamamaraan ng query ay hinihiling na sakupin ng mga integration test. Payo :
  1. Subukan hindi lamang upang makumpleto ang gawain, ngunit pati na rin upang matiyak na ang code ay sumusunod sa mga prinsipyo ng OOP.

  2. Suriin ang iyong code para sa kahusayan - minsan akong tinanggihan dahil, bukod sa iba pang mga bagay, ginamit ko ang PrintStream sa halip na BufferedWriter.

  3. Planuhin ang iyong oras ng pagpapatupad na may 50% na margin - mas mahusay na magsimula at matapos nang mas maaga kaysa gumawa ng git push sa alas-otso ng umaga ng deadline.

Well, lahat ng gusto ko, isinulat ko yata. Ang pinakamahalagang bagay ay ang tubig ay nag-aalis ng mga bato. Hindi ka maaaring magsulat ng marami, marami sa Java, pagkatapos ay maghanap ng trabaho sa mahabang panahon, at sa huli ay wala kang makukuha. Kung kinuha ito ng isang 30 taong gulang na espesyalista sa humanities, magagawa mo ito nang mas mahusay. Ang pangunahing bagay ay huwag matakot sa mga unang tawag, teknikal na takdang-aralin at mga panayam: pagkatapos ng bawat nabigong oras, ginagarantiyahan akong matututo ng isang bagay para sa aking sarili at pagbutihin ito - kung mas mahaba, mas tiwala ka. Kung sa isang lugar ay naging magulo o may mga pagkakamali - humihingi ako ng paumanhin nang maaga, sumulat, itatama ko ito. Umaasa ako na ang aking karanasan ay makakatulong kahit isang tao =)
Mga komento
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION