JavaRush /Blog Java /Random-MS /Bagaimana seorang humanis lama pergi ke IT
PieIsLie
Tahap
Санкт-Петербург

Bagaimana seorang humanis lama pergi ke IT

Diterbitkan dalam kumpulan
Bunga api! Sebenarnya, untuk masa yang lama saya berfikir tentang apa sebenarnya yang akan saya tulis dalam catatan ini dan sama ada saya akan menulisnya sama sekali. Kebetulan dalam tempoh berbeza dalam dua tahun lepas saya menilai peluang saya untuk mendapatkan kedudukan pembangun Java dengan cara yang berbeza: daripada "cepat atau lambat - pasti" kepada "Saya tiada peluang dalam IT." Bagaimana seorang humanis lama pergi ke IT - 1Walau bagaimanapun, hampir tepat dua tahun telah berlalu sejak saya mendaftar dengan JavaRush. Beberapa bulan lalu saya menerima tawaran pertama saya, tidak lama kemudian saya menerima tawaran kedua saya, dan kemudian saya memulakan pekerjaan baru. Kisah kejayaan banyak membantu saya semasa kursus, jadi saya memutuskan untuk menyiarkan sendiri. Memandangkan kursus itu berlangsung pada '18, sesetengah maklumat mungkin tidak terkini. Saya akan katakan dengan segera bahawa akan ada banyak teks, kerana... Saya akan cuba memberitahu anda tentang latihan dan pencarian kerja (keperluan, respons, spesifikasi teknikal, temu duga, dsb.). Saya juga akan menulis beberapa petua umum yang membantu saya secara peribadi dan mungkin membantu orang lain. Secara ringkas tentang diri saya: 32 tahun, 10 tahun pengalaman dalam pengurusan dan jualan, pendidikan seni liberal dan langsung tiada latar belakang teknikal. Beberapa tahun yang lalu saya cuba masuk ke C++, kemudian ke Python - saya tidak mendapat apa-apa selain sakit kepala. Oleh itu, sukar untuk memanggil saya pembangun berbakat: sebaliknya.

PERINGKAT 1. Latihan

Saya datang ke JavaRush secara sedar: senarai harga bulanan yang mencukupi, struktur bahan yang jelas, banyak amalan dan kehadiran komuniti saya sendiri. Perkara pertama semuanya jelas, tetapi mempelajari bahasa tanpa struktur agak sukar, dan latihan sedemikian pastinya akan meninggalkan seseorang dengan jurang yang serius dalam Java Core. Pengalaman temu bual dan spesifikasi teknikal menunjukkan bahawa soalan tentang "teras" boleh digunakan untuk segala-galanya: daripada peralihan bitwise dan pemutus generik kepada IO dan bersiri. Amalan mesti ada; Saya masih hanya boleh memahami dan mengingati separuh daripada perkara itu jika saya menulisnya sendiri. Nah, komuniti: anda menyelesaikan masalah itu - bercakap besar tentangnya dalam ulasan; Jika anda belum membuat keputusan, anda dialu-alukan untuk bertanya, tetapi kemungkinan besar tiada siapa yang akan memberi anda penyelesaian siap sedia. Dan saya kembali ke artikel tersuai mengenai topik percuma walaupun selepas menamatkan kursus, terdapat banyak perkara yang baik untuk dimulakan (terutamanya pengalaman pertama dengan rangka kerja menggunakan contoh langkah demi langkah + soalan untuk temu duga). Secara umum, saya berterima kasih kepada projek ini untuk pangkalan yang saya terima, tetapi saya tidak akan bergantung hanya pada JavaRush - Shildt yang sama yang terbaik adalah "bertindih" pada topik yang sedang dikaji, dan sering mendedahkan beberapa perkara. Banyak yang telah diperkatakan dalam ulasan tentang tugasan yang kadangkala mendahului teori dan memaksa anda ke Google. Bagi saya, ini lebih kepada tambah daripada tolak - dan bukan fakta bahawa sekarang keadaannya sama seperti semasa saya belajar. Nasihat segera kepada mereka yang, seperti saya, memasuki Java "dari awal" : pada satu peringkat anda mungkin menjadi bosan atau sukar:
  1. Sukar untuk semua orang bermula dari awal; Insya-Allah, hanya 5% orang yang mencapai penghujung kursus. Tugas anda adalah untuk menjadi salah seorang daripada mereka.

  2. Minat saya muncul selepas sebulan atau dua, apabila tugas menjadi lebih sukar dan menarik. Bersabarlah.

  3. Perkara utama ialah kemajuan mingguan. Selepas dua minggu berehat, sudah sukar untuk kembali, dan tidak semua orang boleh menulis setiap hari selama beberapa bulan berturut-turut. Beri diri anda had masa untuk seminggu - contohnya, 15. Anda boleh kod selama 1.5 jam setiap hari bekerja dan 3-4 jam lagi pada kedua-dua hujung minggu, atau anda boleh mengambil cuti beberapa malam, tetapi "had hujung minggu" akan meningkat. Dengan cara ini, jadual akan menjadi fleksibel, tetapi tetap. Sudah tentu, maka ia akan menjadi mungkin untuk mengukur kerja dengan tugas dan projek, tetapi pada tahap sintaks dan kernel, jam akan dilakukan.
Secara umum, saya mengambil masa kira-kira 5 bulan untuk menyelesaikan kursus (sebelum mengakses latihan) , walaupun pada hakikatnya saya mampu untuk bercuti dan rehat pendek; sekali lagi, bekerja selama lima hari seminggu hanya meninggalkan hujung minggu dan malam hari bekerja percuma dari 22 hingga 00. Jadi, dengan jadual yang lebih longgar atau rejim latihan yang lebih tegar, anda boleh mengatasi lebih awal. Kemudian saya merancang untuk mendapatkan latihan, tetapi akhirnya ia tidak menjadi.

PERINGKAT 2. Pendidikan kendiri

Jadi, saya tidak mendapat latihan: Saya hanya meninggalkan beberapa hari untuk keperluan teknikal sehingga tamat pengambilan ke dalam kumpulan dan tidak mempunyai masa untuk memikirkan keperluan - terdapat terlalu banyak perkataan yang tidak dikenali. Kerana Saya tidak mahu menunggu tiga bulan lagi, saya memutuskan untuk meneruskan diri sendiri. Nasib baik, terdapat panduan dan tutorial video untuk semua rangka kerja yang popular. Dalam beberapa bulan akan datang, saya berurusan dengan Spring MVC, Spring Boot + Data, Spring Security, Hibernate, jUnit, Maven, Git, RDBMS, menguasai SQL dan cuba menggabungkan semuanya menjadi satu keseluruhan. Enam bulan kemudian, saya mempunyai projek yang menakutkan untuk dilihat sekarang, tetapi saya memperoleh pengalaman praktikal dalam menggunakan rangka kerja "dewasa" dan GitHub yang boleh ditunjukkan atas permintaan bakal majikan. Nasihat :
  1. Lebih cepat anda belajar tentang .gitignore, lebih baik. ;)

  2. Banyak panduan termasuk beberapa rangka kerja sekaligus; gunakan ini dan tambah sendiri. Kami menulis kedai dalam talian menggunakan Maven + Spring Boot + Data - tambah kebenaran, ujian unit dan pengelogan.

  3. Untuk projek web, anda boleh mengambil templat frontend percuma dari Internet - ia lebih senang digunakan, ia kelihatan lebih baik sebagai tangkapan skrin dalam README pada Git. Pada masa yang sama, anda akan dapat mengingati HTML dan CSS - anda mungkin mahu membetulkan gaya dan reka letak.

Cara paling mudah untuk membuat pelan pembangunan sedemikian untuk diri sendiri ialah melalui HH untuk jawatan kosong Pembangun Junior\Middle Java dan melihat teknologi dan rangka kerja yang paling kerap ditunjukkan. Tuliskannya, buat spesifikasi teknikal untuknya, tetapkan tarikh akhir untuk pelaksanaan. Walaupun, mungkin jika saya bermula dengan latihan tempatan, saya tidak perlu menghabiskan beberapa bulan untuk projek rumah.

Perkara yang saya hilang (kemudian saya terbakar semasa temu duga)

  1. Algoritma. Untuk mengelakkan kesilapan saya, saya segera mengesyorkan buku pendek dalam bahasa Rusia, “Grocking Algorithm.” Apakah kerumitan algoritma, apa yang terdiri daripadanya, mengapa quicksort tidak mencukupi, pengenalan kepada teori graf - semuanya ada dan dalam bahasa yang paling mudah difahami.

  2. Koleksi "di bawah tudung". Saya tidak ingat sama ada ini dalam JavaRush, tetapi adalah berguna untuk mengetahui cara HashMap.get() berfungsi atau mengapa HashSet tidak dijamin untuk mengekalkan susunan elemen. Sekali lagi - koleksi manakah yang selamat dan sebabnya.

  3. SQL. Anda memerlukan sekurang-kurangnya sehingga JOIN - apakah itu, cara kerjanya, keupayaan untuk menulis SELECT pada dua meja di atas kertas dengan cepat. Saya cadangkan www.sql-ex.ru: ia akan membawa anda ke tahap yang diingini dalam satu atau dua hari.

  4. Spring Core: apakah anotasi yang ada, apakah konteksnya, cara kacang dicipta, Skop Kacang yang mana selamat untuk benang, dan cara menyelesaikan suntikan bersama - semua soalan temu bual. Cara mengembalikan halaman, cara mengembalikan JSON, dsb. Saya sedang membaca "Spring 5 for Professionals" dalam bahasa Rusia, tetapi secara umum mereka mengesyorkan "Spring in Action".

PERINGKAT 3. Pencarian kerja

Sebenarnya, dalam beberapa bulan pertama selepas menyiapkan projek rumah, saya menghantar kira-kira 30 jawapan kepada pelbagai jawatan kosong Junior\Trainee (melalui HH, LinkedIn, agensi pengambilan), dengan keputusan hampir sifar. Saya hanya menumpukan pada kekosongan tanpa pengalaman, dengan jujur ​​menunjukkan timbunan yang saya kenali dan menulis tentang keupayaan pembelajaran tinggi saya dalam surat lamaran. Hasilnya ialah dua panggilan (satu daripadanya serta-merta berakhir dalam bahasa Inggeris pra-perantaraan saya), dua lagi syarikat menghantar spesifikasi teknikal, hanya terdapat satu "pertemuan", dan kemudian saya berada di sana sendirian menyelesaikan masalah pada algoritma pada sehelai kertas, selepas itu HR hanya mengambil kertas dan "Kami akan menghubungi anda." Saya cuba mendapatkan beberapa latihan amali (tidak berbayar dan berbayar bersyarat): Saya melakukan spesifikasi teknikal, tetapi tidak melangkaui keselamatan sosial terakhir; tetapi sekarang saya boleh katakan bahawa pelatih pasti direkrut oleh T-Systems, CFT, Andersen dan EPAM (mereka mempunyai ulasan bercampur-campur, tentukan sendiri). Bagi saya, ia adalah cara yang baik untuk memasuki bidang jika anda mempunyai peluang untuk duduk tanpa pendapatan selama beberapa bulan dan tidak mati =) Secara umum, selepas pengalaman ini saya menjadi agak tertekan, dan meletakkan keseluruhan cerita dengan carian di jeda selama hampir enam bulan - saya terus bekerja pada profil sebelumnya, menulis beberapa aplikasi hanya untuk keseronokan, tetapi tidak menyiarkannya di Git. Sehingga saya bertemu dengan seorang kenalan, yang saya ceritakan secara santai tentang kegagalan dengan kekosongan: pada masa itu dia sudah bekerja sebagai pemaju pertengahan, tetapi dia bermula dengan cara yang sama - dengan belajar sendiri. Seorang kenalan memberi saya beberapa cadangan , yang dia gunakan sendiri dan yang sangat membantu saya dalam pencarian kerja saya pada masa hadapan. Sama ada anda mengikuti mereka atau tidak, terpulang kepada anda, kerana... mereka, dalam beberapa cara, tidak sepenuhnya jujur. Jadi, petikan lanjut:
  • Walau apa pun, berikan diri anda pengalaman komersial selama 6+ bulan dalam resume anda: latihan amali, projek pengijazahan, kerja bebas, kerja jauh - apa sahaja. Ini akan sangat membantu pada peringkat saringan awal resume oleh HR;

  • keluarkan perkataan Junior dan gaji yang dijangkakan daripada resume anda; biarkan sahaja ia sebagai Pembangun Java, dan bincangkan wang secara individu dengan setiap syarikat;

  • cuba minta HR menamakan "garpu" gaji yang dicadangkan sebelum anda menamakan jangkaan anda. Jika syarikat menawarkan 80-120k, dan anda sedang mencari 40k atau lebih, sesetengah pemilih akan memperlakukan anda dengan penghinaan;

  • Mohon untuk semua kekosongan yang sesuai dengan timbunan anda, walaupun ia memerlukan 1-3 tahun pengalaman komersial.

Selepas saya mengikuti semua pengesyoran ini, keadaan carian bertambah baik dengan ketara. Pertama, daripada kira-kira 12 respons baharu, separuh hampir serta-merta berakhir sama ada dalam mesyuarat, atau Skype, atau TK (yang sudah sangat berbeza daripada diabaikan pada bulan-bulan sebelumnya). Kedua, orang HR mula menulis kepada saya, yang saya tidak membalasnya - dalam messenger segera, dalam mel, dalam LinkedIn. Ketiga, keperluan pengalaman komersil ternyata benar-benar tidak terlalu ketat - banyak syarikat bersedia untuk berkomunikasi dengan calon yang tidak termasuk dalam julat yang ditetapkan 1-3 tahun amalan korporat. Akibatnya - satu tawaran untuk junior, satu untuk pertengahan dengan tempoh percubaan. Secara keseluruhan, pencarian mengambil masa dua bulan. Nasihat :
  1. Sertakan dalam resume anda keseluruhan timbunan bahasa, teknologi dan rangka kerja yang telah anda gunakan.

  2. Daftar di LinkedIn - terdapat ramai orang HR dari syarikat yang berbeza di sana. Isi profil anda dengan teliti - sebenarnya, ini juga resume anda. Untuk membangunkan rangkaian kenalan anda, tambah LION yang berkaitan dengan profil anda; mereka menerima permintaan daripada semua pengguna.

  3. Cuba sendiri dalam ujian Java percuma - ia sering diberikan di atas kertas sebelum temu duga Junior. Lebih baik buat persediaan awal.

Sedikit perkataan mengenai temuduga
  1. Mereka sentiasa bertanya tentang koleksi: yang mana ada, bagaimana ia berbeza, bila masa terbaik untuk menggunakannya.

  2. Sentiasa pada kelas abstrak dan antara muka - bolehkah mereka mempunyai kaedah, medan, yang mana, bolehkah mereka diwarisi, dsb.

  3. Hampir selalu pada multithreading - perkara yang anda gunakan dalam kerja anda, kata kunci, kaedah, anda biasa dengan util.concurrent.

  4. Selalunya apabila bekerja dengan ingatan - timbunan, timbunan, dan adakah rentetan ini akan sama, dan objek ini, mengapa.

  5. Kadang-kadang mengenai algoritma - mana yang anda tahu, kerumitan apa, mengapa, bolehkah anda menulis algoritma sekarang.

  6. Kadangkala berdasarkan corak - mana yang anda tahu, mana yang anda gunakan, tulis singleton atau kilang.

  7. Kadang-kadang dalam SQL - jenis JOIN, apakah transaksi, bagaimana untuk menjalankannya dalam JDBC, tulis pertanyaan ringkas.

Sebenarnya, segala-galanya sangat bergantung kepada syarikat : seseorang tidak bertanya satu soalan pun tentang Java Core, tetapi menghabiskan 40 minit bercakap tentang rangka kerja dan SQL; Sesetengah orang tidak menggunakan rangka kerja yang popular sama sekali dan hanya bertanya tentang algoritma, jenis, koleksi dan ingatan. Kira-kira separuh daripada mesyuarat bermula dengan ujian - kadang-kadang dalam bahasa Rusia, kadang-kadang dalam bahasa Inggeris (20-30 soalan selama 20-30 minit); Biasanya soalan pada tahap "ini adalah kod, adakah ia akan dijalankan atau tidak, dan jika tidak, maka pada baris apa" atau "di sini terdapat beberapa objek, adakah ia akan sama selepas operasi N." Sedikit perkataan tentang spesifikasi teknikal : 70% syarikat yang memulakan komunikasi menghantar spesifikasi teknikal kepada saya sebelum atau selepas mesyuarat. Biasanya, penyiapan diberikan dari beberapa hari hingga seminggu, tetapi selalunya tarikh akhir boleh dialihkan sedikit. Apa-apa sahaja boleh digunakan sebagai spesifikasi teknikal. Berikut adalah contoh yang saya lakukan:
  • Halaman kenalan perniagaan profil Salesforce dengan mengedit dan menambah rekod baharu;

  • simulasi lif dalam bangunan berbilang tingkat menggunakan Mesin Spring State dengan kawalan konsol;

  • Aplikasi Android berdasarkan perpustakaan LibGDX dengan output teks aksara demi aksara apabila butang ditekan;

  • REST tiruan perkongsian kereta, dengan menambah pelanggan melalui permintaan HTTP dan mengembalikan JSON;

  • masalah menyusun graf tidak terarah melalui sel bebas;

  • cari segi tiga sama kaki menggunakan koordinat daripada fail;

  • pemfaktoran semula kod siap menggunakan Stream API;

  • Kalkulator UI dengan sokongan untuk ungkapan ternary;

  • perlumbaan benang dengan menulis keputusan ke fail.

Kadangkala kaedah pengiraan diminta untuk diliputi dengan ujian unit, dan kaedah pertanyaan diminta untuk diliputi dengan ujian penyepaduan. Nasihat :
  1. Cuba bukan sahaja untuk menyelesaikan tugas, tetapi juga untuk memastikan bahawa kod mematuhi prinsip OOP.

  2. Semak kod anda untuk kecekapan - Saya pernah ditolak kerana, antara lain, saya menggunakan PrintStream dan bukannya BufferedWriter.

  3. Rancang masa pelaksanaan anda dengan margin 50% - lebih baik untuk memulakan dan menyelesaikan lebih awal daripada melakukan git push pada pukul lapan pagi tarikh akhir.

Nah, semua yang saya mahukan, saya rasa saya menulis. Perkara yang paling penting ialah air menghanguskan batu. Anda tidak boleh menulis banyak, banyak dalam Java, kemudian mencari kerja untuk masa yang lama, lama, dan akhirnya tidak mendapat apa-apa. Jika pakar kemanusiaan berusia 30 tahun melakukannya, anda boleh melakukannya dengan lebih baik. Perkara utama ialah jangan takut dengan panggilan pertama, tugasan teknikal dan temu duga: selepas setiap kali gagal, saya dijamin untuk mempelajari sesuatu untuk diri saya sendiri dan memperbaikinya - semakin lama, semakin yakin anda. Jika di suatu tempat ia menjadi huru-hara atau terdapat kesilapan - saya mohon maaf terlebih dahulu, tulis, saya akan membetulkannya. Saya harap pengalaman saya akan membantu sekurang-kurangnya seseorang =)
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION