JavaRush /Java Blog /Random-ID /Bagaimana seorang humanis tua terjun ke IT
PieIsLie
Level 35
Санкт-Петербург

Bagaimana seorang humanis tua terjun ke IT

Dipublikasikan di grup Random-ID
Kembang api! Sebenarnya sudah lama saya memikirkan apa sebenarnya yang akan saya tulis di postingan ini dan apakah saya akan menulisnya atau tidak. Kebetulan dalam periode yang berbeda dalam dua tahun terakhir saya menilai peluang saya untuk mendapatkan posisi pengembang Java dengan cara yang berbeda: dari “cepat atau lambat - pasti” hingga “Saya tidak punya peluang di bidang TI.” Bagaimana seorang humanis tua terjun ke IT - 1Namun, hampir tepat dua tahun telah berlalu sejak saya mendaftar JavaRush. Beberapa bulan yang lalu saya menerima tawaran pertama saya, beberapa saat kemudian saya menerima tawaran kedua, dan kemudian saya memulai pekerjaan baru. Kisah sukses banyak membantu saya selama kursus, jadi saya memutuskan untuk memposting kisah saya sendiri. Karena kursus ini diadakan pada tahun '18, beberapa informasi mungkin tidak terkini. Saya akan segera mengatakan bahwa akan ada banyak teks, karena... Saya akan mencoba bercerita tentang pelatihan dan pencarian kerja (persyaratan, tanggapan, spesifikasi teknis, wawancara, dll). Saya juga akan menulis beberapa tip umum yang membantu saya secara pribadi dan mungkin membantu orang lain. Secara singkat tentang diri saya: 32 tahun, 10 tahun pengalaman di bidang manajemen dan penjualan, pendidikan seni liberal dan sama sekali tidak memiliki latar belakang teknis. Beberapa tahun yang lalu saya mencoba masuk ke C++, lalu ke Python - saya hanya mendapat sakit kepala. Oleh karena itu, sulit untuk menyebut saya seorang pengembang berbakat: malah sebaliknya.

TAHAP 1. Pelatihan

Saya datang ke JavaRush secara sadar: daftar harga bulanan yang memadai, struktur materi yang jelas, banyak latihan dan kehadiran komunitas saya sendiri. Poin pertama semuanya jelas, tetapi mempelajari bahasa tanpa struktur cukup sulit, dan pelatihan seperti itu pasti akan meninggalkan kesenjangan yang serius pada Java Core. Pengalaman wawancara dan spesifikasi teknis menunjukkan bahwa pertanyaan tentang “inti” dapat digunakan untuk apa saja: mulai dari pergeseran bitwise dan casting generik hingga IO dan serialisasi. Latihan adalah hal yang harus dimiliki; Saya masih hanya dapat memahami dan mengingat setengahnya jika saya menulisnya sendiri. Nah, komunitas: Anda memecahkan masalah - banggakan di komentar; Jika Anda belum memutuskan, Anda boleh mengajukan pertanyaan, tetapi kemungkinan besar tidak ada yang akan memberi Anda solusi siap pakai. Dan saya kembali ke artikel khusus tentang topik gratis bahkan setelah menyelesaikan kursus, ada banyak hal bagus untuk memulai (terutama pengalaman pertama dengan kerangka kerja menggunakan contoh langkah demi langkah + pertanyaan untuk wawancara). Secara umum, saya berterima kasih kepada proyek ini atas dasar yang saya terima, tetapi saya tidak akan hanya mengandalkan JavaRush - Shildt yang sama paling baik "tumpang tindih" dengan topik yang sedang dipelajari, dan sering kali mengungkapkan beberapa poin. Banyak yang telah dikatakan dalam ulasan tentang tugas-tugas yang terkadang melampaui teori dan memaksa Anda untuk menggunakan Google. Bagi saya, ini lebih merupakan nilai plus daripada minus - dan bukan fakta bahwa sekarang situasinya sama seperti saat saya masih belajar. Saran langsung bagi mereka yang, seperti saya, memasuki Java “dari awal” : pada tahap tertentu Anda mungkin merasa bosan atau kesulitan:
  1. Sulit bagi semua orang untuk memulai dari awal; Tuhan melarang, hanya 5% orang yang mencapai akhir kursus. Tugas Anda adalah menjadi salah satu dari mereka.

  2. Saya menjadi tertarik setelah satu atau dua bulan, ketika tugas menjadi lebih sulit dan menarik. Bersabarlah.

  3. Hal utama adalah kemajuan mingguan. Setelah dua minggu istirahat, sudah sulit untuk kembali, dan tidak semua orang bisa menulis setiap hari selama beberapa bulan berturut-turut. Beri diri Anda batas jam dalam seminggu - misalnya, 15. Anda dapat membuat kode selama 1,5 jam setiap hari kerja dan 3-4 jam lagi pada kedua akhir pekan, atau Anda dapat mengambil libur beberapa malam, namun “batas akhir pekan” akan menentukan meningkatkan. Dengan cara ini, jadwalnya akan fleksibel namun teratur. Tentu saja, pekerjaan dapat diukur berdasarkan tugas dan proyek, tetapi pada tingkat sintaksis dan kernel, jam sudah cukup.
Secara umum, saya membutuhkan waktu sekitar 5 bulan untuk menyelesaikan kursus (sebelum mengakses magang) , meskipun saya mampu membayar liburan dan istirahat sejenak; sekali lagi, bekerja selama lima hari seminggu hanya menyisakan akhir pekan dan malam hari kerja bebas dari pukul 22 hingga 00. Jadi, dengan jadwal yang lebih longgar atau pola pelatihan yang lebih kaku, Anda dapat mengatasinya lebih awal. Lalu saya berencana magang, tapi akhirnya tidak berhasil.

TAHAP 2. Pendidikan mandiri

Jadi, saya tidak mendapatkan magang: Saya hanya menyisakan beberapa hari untuk memenuhi persyaratan teknis hingga akhir perekrutan ke dalam grup dan tidak punya waktu untuk memikirkan persyaratannya - ada terlalu banyak kata asing. Karena Saya tidak ingin menunggu tiga bulan lagi, saya memutuskan untuk pindah sendiri. Untungnya, ada panduan dan tutorial video untuk semua framework populer. Selama beberapa bulan berikutnya, saya berurusan dengan Spring MVC, Spring Boot + Data, Spring Security, Hibernate, jUnit, Maven, Git, RDBMS, menguasai SQL dan mencoba menggabungkan semuanya menjadi satu kesatuan. Enam bulan kemudian, saya memiliki proyek yang sekarang menakutkan untuk dilihat, tetapi saya memperoleh pengalaman praktis dalam menggunakan kerangka kerja “dewasa” dan GitHub yang dapat ditampilkan atas permintaan calon pemberi kerja. Saran :
  1. Semakin cepat Anda mempelajari .gitignore, semakin baik. ;)

  2. Banyak panduan menyertakan beberapa kerangka kerja sekaligus; gunakan ini dan tambahkan milik Anda sendiri. Kami menulis toko online menggunakan Maven + Spring Boot + Data - tambahkan otorisasi, pengujian unit, dan logging.

  3. Untuk proyek web, Anda dapat mengambil templat frontend gratis dari Internet - templat ini lebih nyaman untuk digunakan, tampilannya lebih baik seperti tangkapan layar di README di Git. Pada saat yang sama, Anda akan dapat mengingat HTML dan CSS - Anda mungkin ingin memperbaiki gaya dan tata letaknya.

Cara termudah untuk membuat rencana pengembangan seperti itu untuk Anda sendiri adalah dengan mencari lowongan HH untuk Pengembang Junior\Jawa Tengah dan melihat teknologi dan kerangka kerja mana yang paling sering diindikasikan. Tuliskan, buat spesifikasi teknisnya, tentukan sendiri tenggat waktu implementasinya. Meskipun, mungkin jika saya memulai magang lokal, saya tidak perlu menghabiskan beberapa bulan untuk mengerjakan proyek rumah.

Apa yang saya lewatkan (kemudian saya terbakar saat wawancara)

  1. Algoritma. Untuk menghindari kesalahan saya, saya langsung merekomendasikan buku pendek dalam bahasa Rusia, “Grocking Algorithms.” Apa kompleksitas algoritma, terdiri dari apa, mengapa quicksort saja tidak cukup, pengantar teori grafik - semuanya ada dan dalam bahasa yang paling mudah dipahami.

  2. Koleksi "di bawah tenda". Saya tidak ingat apakah ini ada di JavaRush, tetapi berguna untuk mengetahui cara kerja HashMap.get() atau mengapa HashSet tidak dijamin menjaga urutan elemen. Sekali lagi, koleksi mana yang aman untuk thread dan alasannya.

  3. SQL. Anda memerlukan setidaknya hingga GABUNG - apa itu, cara kerjanya, kemampuan untuk menulis SELECT pada dua tabel di atas kertas dengan cepat. Saya merekomendasikan www.sql-ex.ru: ini akan membawa Anda ke level yang diinginkan dalam satu atau dua hari.

  4. Spring Core: anotasi apa yang ada di sana, apa konteksnya, bagaimana beans dibuat, Bean Scope mana yang aman untuk thread, dan bagaimana menyelesaikan mutual injection - semua pertanyaan wawancara. Cara mengembalikan halaman, cara mengembalikan JSON, dll. Saat ini saya sedang membaca “Spring 5 untuk Profesional” dalam bahasa Rusia, tetapi secara umum mereka merekomendasikan “Spring in Action”.

TAHAP 3. Pencarian pekerjaan

Sebenarnya, dalam beberapa bulan pertama setelah menyelesaikan proyek rumah, saya mengirimkan sekitar 30 tanggapan ke berbagai lowongan Junior\Trainee (melalui HH, LinkedIn, agen perekrutan), dengan hasil yang hampir nol. Saya hanya fokus pada lowongan tanpa pengalaman, dengan jujur ​​​​menunjukkan tumpukan yang saya kenal dan menulis tentang kemampuan belajar saya yang tinggi di surat lamaran. Hasilnya adalah dua panggilan (salah satunya langsung diakhiri dengan bahasa Inggris pra-menengah saya), dua perusahaan lagi mengirimkan spesifikasi teknis, hanya ada satu “pertemuan”, dan kemudian saya di sana sendirian memecahkan masalah algoritma di selembar kertas, setelah itu HR mengambil surat-surat itu dan "Kami akan menghubungi Anda." Saya mencoba untuk mendapatkan beberapa magang (tidak dibayar dan dibayar bersyarat): Saya melakukan spesifikasi teknis, tetapi tidak melampaui jaminan sosial akhir; tapi sekarang saya dapat mengatakan bahwa peserta pelatihan pasti direkrut oleh T-Systems, CFT, Andersen dan EPAM (mereka memiliki tinjauan yang beragam, putuskan sendiri). Bagi saya, ini adalah cara yang baik untuk memasuki lapangan jika Anda memiliki kesempatan untuk duduk tanpa penghasilan selama beberapa bulan dan tidak mati =) Secara umum, setelah pengalaman ini saya menjadi agak tertekan, dan menghentikan keseluruhan cerita dengan pencarian selama hampir enam bulan - saya terus mengerjakan profil sebelumnya, menulis beberapa aplikasi hanya untuk bersenang-senang, tetapi bahkan tidak mempostingnya di Git. Sampai saya bertemu dengan seorang kenalan yang dengan santai saya ceritakan tentang kegagalan lowongan: saat itu dia sudah bekerja sebagai pengembang menengah, tetapi dia memulai dengan cara yang sama - dengan belajar mandiri. Seorang kenalan memberi saya beberapa rekomendasi , yang dia gunakan sendiri dan sangat membantu saya dalam mencari pekerjaan di masa depan. Apakah Anda mengikuti mereka atau tidak, itu terserah Anda, karena... mereka, dalam beberapa hal, tidak sepenuhnya jujur. Jadi, kutipan selanjutnya:
  • Dengan cara apa pun, berikan diri Anda pengalaman komersial selama 6+ bulan di resume Anda: magang, proyek kelulusan, pekerja lepas, pekerjaan jarak jauh - apa pun. Hal ini akan sangat membantu pada tahap awal penyaringan resume oleh HR;

  • hapus kata Junior dan gaji yang diharapkan dari resume Anda; biarkan saja sebagai Pengembang Java, dan diskusikan uangnya secara individu dengan masing-masing perusahaan;

  • cobalah untuk meminta HR menyebutkan “garpu” dari gaji yang diusulkan sebelum Anda menyebutkan ekspektasi Anda. Jika sebuah perusahaan menawarkan 80-120rb, dan Anda mencari 40rb atau lebih, beberapa penyeleksi akan memperlakukan Anda dengan hina;

  • Lamar ke semua lowongan yang sesuai dengan tumpukan Anda, meskipun memerlukan 1-3 tahun pengalaman komersial.

Setelah saya mengikuti semua rekomendasi ini, situasi pencarian meningkat secara signifikan. Pertama, dari sekitar 12 tanggapan baru, separuhnya segera berakhir dengan rapat, atau Skype, atau TK (yang sudah sangat berbeda dengan diabaikan pada bulan-bulan sebelumnya). Kedua, orang-orang HR mulai menulis kepada saya, yang tidak saya balas - melalui pesan instan, melalui surat, di LinkedIn. Ketiga, persyaratan pengalaman komersial ternyata tidak terlalu ketat - banyak perusahaan siap berkomunikasi dengan kandidat yang tidak termasuk dalam kisaran 1-3 tahun praktik perusahaan yang ditentukan. Hasilnya - satu tawaran untuk junior, satu untuk menengah dengan masa percobaan. Total, pencarian memakan waktu dua bulan. Saran :
  1. Sertakan dalam resume Anda seluruh bahasa, teknologi, dan kerangka kerja yang pernah Anda gunakan.

  2. Daftar di LinkedIn - memang ada banyak sekali orang HR dari berbagai perusahaan di sana. Isi profil Anda dengan hati-hati - sebenarnya, ini juga resume Anda. Untuk mengembangkan jaringan kontak Anda, tambahkan LION yang relevan dengan profil Anda; mereka menerima permintaan dari semua pengguna.

  3. Cobalah sendiri tes Java gratis - tes tersebut sering kali diberikan di atas kertas sebelum wawancara Junior. Lebih baik mempersiapkannya terlebih dahulu.

Beberapa kata tentang wawancara
  1. Mereka selalu bertanya tentang koleksinya: apa saja yang ada, apa bedanya, kapan waktu terbaik untuk menggunakannya.

  2. Selalu menggunakan kelas dan antarmuka abstrak - dapatkah mereka memiliki metode, bidang, yang mana, dapatkah diwariskan, dll.

  3. Hampir selalu di multithreading - apa yang Anda gunakan dalam pekerjaan Anda, kata kunci, metode, apakah Anda familiar dengan util.concurrent.

  4. Seringkali ketika bekerja dengan memori - heap, stack, dan apakah string ini akan sama, dan objek-objek ini, mengapa.

  5. Terkadang tentang algoritma – yang mana yang anda ketahui, kompleksitasnya apa, kenapa, anda bisa menulis algoritma sekarang.

  6. Terkadang berdasarkan pola - mana yang Anda tahu, mana yang Anda gunakan, tulislah singleton atau pabrik.

  7. Terkadang di SQL - jenis GABUNG, apa transaksinya, bagaimana melakukannya di JDBC, tulis kueri singkat.

Faktanya, semuanya sangat bergantung pada perusahaan : seseorang tidak menanyakan satu pertanyaan pun tentang Java Core, tetapi menghabiskan 40 menit untuk membicarakan kerangka kerja dan SQL; Beberapa orang tidak menggunakan framework populer sama sekali dan hanya bertanya tentang algoritma, tipe, koleksi, dan memori. Sekitar setengah dari pertemuan dimulai dengan tes - terkadang dalam bahasa Rusia, terkadang dalam bahasa Inggris (20-30 pertanyaan selama 20-30 menit); Biasanya pertanyaan pada level “ini kodenya, apakah akan berjalan atau tidak, dan jika tidak, lalu pada baris apa” atau “ini ada beberapa objek, apakah akan sama setelah N operasi”. Beberapa kata tentang spesifikasi teknis : 70% perusahaan yang memulai komunikasi mengirimi saya spesifikasi teknis sebelum atau sesudah pertemuan. Biasanya penyelesaian diberikan dari beberapa hari hingga satu minggu, tetapi paling sering tenggat waktu dapat digeser sedikit. Apa pun bisa dijadikan spesifikasi teknis. Berikut adalah contoh yang saya lakukan:
  • Halaman kontak bisnis profil Salesforce dengan pengeditan dan penambahan catatan baru;

  • simulasi elevator di gedung bertingkat menggunakan Spring State Machine dengan kontrol konsol;

  • Aplikasi Android berdasarkan perpustakaan LibGDX dengan keluaran teks karakter demi karakter saat tombol ditekan;

  • REST meniru berbagi mobil, dengan menambahkan klien melalui permintaan HTTP dan mengembalikan JSON;

  • masalah pengurutan grafik tidak berarah melalui sel bebas;

  • mencari segitiga sama kaki menggunakan koordinat dari file;

  • pemfaktoran ulang kode yang sudah jadi menggunakan Stream API;

  • Kalkulator UI dengan dukungan untuk ekspresi terner;

  • perlombaan utas dengan menulis hasilnya ke file.

Terkadang metode perhitungan diminta untuk dibahas dengan pengujian unit, dan metode kueri diminta untuk dibahas dengan pengujian integrasi. Saran :
  1. Cobalah tidak hanya menyelesaikan tugas, tetapi juga memastikan bahwa kode tersebut mematuhi prinsip OOP.

  2. Periksa efisiensi kode Anda - Saya pernah ditolak karena, antara lain, saya menggunakan PrintStream alih-alih BufferedWriter.

  3. Rencanakan waktu eksekusi Anda dengan margin 50% - lebih baik memulai dan menyelesaikan lebih awal daripada melakukan git push pada jam delapan pagi dari tenggat waktu.

Yah, semua yang saya inginkan, saya rasa saya menulisnya. Yang paling penting adalah air mengikis batu. Anda tidak bisa menulis banyak-banyak di Java, lalu mencari pekerjaan dalam waktu yang sangat lama, dan pada akhirnya tidak menghasilkan apa-apa. Jika seorang spesialis humaniora berusia 30 tahun berhasil melakukannya, Anda dapat melakukannya dengan lebih baik lagi. Hal utama adalah jangan takut dengan panggilan pertama, tugas teknis, dan wawancara: setelah setiap kali gagal, saya dijamin akan mempelajari sesuatu untuk diri saya sendiri dan memperbaikinya - semakin lama, semakin Anda merasa percaya diri. Jika di suatu tempat ternyata kacau atau ada kesalahan - saya minta maaf sebelumnya, tulis, saya akan memperbaikinya. Saya harap pengalaman saya akan membantu setidaknya seseorang =)
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION