Pertama, beberapa latar belakang pada saya. Saya memiliki gelar PhD di CS dan memiliki pekerjaan sebagai insinyur perangkat lunak dan sebagai ilmuwan riset R&D, keduanya di Perusahaan Sangat Besar, Anda Tahu Sangat Baik. Saya baru saja berganti pekerjaan dan mewawancarai untuk kedua jenis posisi (seperti yang telah saya lakukan di masa lalu).
Pengamatan saya: Wawancara pekerjaan insinyur SW adalah cara, jauh lebih sulit daripada wawancara pekerjaan peneliti CS, tetapi pekerjaan peneliti lebih tinggi bayarannya, lebih kompetitif, lebih bermanfaat, lebih menarik, dan memiliki sisi atas yang lebih tinggi.
Berikut ini lingkaran wawancara khas untuk peneliti:
- Wawancara telepon untuk melihat apakah penelitian saya sejalan dengan penelitian laboratorium
- Secara langsung: berikan presentasi tentang penelitian terakhir saya selama satu jam (yang mungkin mewakili pekerjaan selama 9 bulan) dan jawab pertanyaan dari audiens
- Wawancara tatap muka langsung dengan sekitar 5 peneliti, di mana mereka mengajukan pertanyaan yang sangat masuk akal pada pekerjaan / publikasi / paten saya, termasuk: pertanyaan teknis, di mana pekerjaan saya cocok dengan pekerjaan terkait, dan bagaimana saya dapat memperluas pekerjaan saya ke area baru
Inilah loop wawancara tipikal untuk insinyur SW:
- Wawancara telepon di mana saya ditanya pertanyaan tentang algoritma dan mungkin melakukan pengkodean. Cukup standar.
- Wawancara langsung di papan tulis tempat mereka mengebor F *** keluar dari Anda dengan minutia C ++ esoterik (mis. Bagaimana cara kerja panggilan fungsi virtual polimorfik), algoritme (membuat algoritma jalur semua-pasangan-terpendek bekerja untuk simpul 1B) , desain sistem (desain penyeimbang beban basis data), dll. Ini berlangsung selama enam atau tujuh wawancara. Konyol.
Mengapa ada orang yang mau tahan dengan ini? Apa gunanya bertanya tentang C ++ trivia atau menulis kode untuk membuktikan diri Anda? Mengapa tidak menjadikan wawancara SE lebih seperti wawancara peneliti tempat Anda memberikan ceramah tentang apa yang telah Anda lakukan?
Bagaimana wawancara kerja teknis untuk bidang lain, seperti fisika, kimia, teknik sipil, teknik mesin?
Jawaban:
Hal ini relatif mudah dilakukan jika Anda secara teknis cukup kompeten untuk melakukan penelitian - Anda memiliki publikasi yang dapat dibaca oleh manajer perekrutan dan publikasi tersebut mungkin mengisyaratkan pada orang lain yang dapat mereka ajak bicara untuk memeriksa Anda.
Rekayasa perangkat lunak, di sisi lain, adalah suatu disiplin yang dipenuhi dengan pemborosan ruang yang tidak perlu untuk dilakukan dengan uji tuntas yang memastikan bahwa orang yang Anda pekerjakan sebenarnya dapat menulis kode yang Anda rencanakan untuk mempekerjakannya untuk menulis.
sumber
Akan mengambil risiko di sini.
Sebagai seorang peneliti dengan gelar PhD, Anda telah membuktikan kepada beberapa organisasi yang diakui nilai dan kualitas minimum Anda sebagai seorang peneliti. Anda berhasil mempertahankan tesis di depan dewan rekan-rekan Anda dan telah meyakinkan setidaknya satu publikasi peer-review untuk menerbitkan karya Anda.
Pengembangan perangkat lunak, di sisi lain, tidak memiliki standar kualifikasi. Orang-orang secara rutin mengembang basis pengetahuan mereka. Akibatnya, wawancara pengembangan perangkat lunak harus melakukan semua pekerjaan yang pertahanan PhD dan peer review dilakukan di dunia akademis. Mereka membuat Anda membuktikan bahwa Anda benar-benar tahu apa yang Anda bicarakan.
sumber
Pertimbangkan ini sejenak.
Jika saya mencoba melamar pekerjaan peneliti CS ini, saya tidak akan melihat CV / Resume saya. Saya tidak akan memulai wawancara. Saya akan mendapatkan surat standar "tanpa gelar lanjutan" yang memberi tahu saya bahwa saya bahkan tidak memenuhi syarat untuk melihat CV saya.
Pertanyaan saya adalah ini: "Mengapa begitu sulit untuk mendapatkan gelar PhD?" Dan "Mengapa saya perlu PhD untuk menjadi peneliti CS?" "Mengapa begitu banyak penghalang dan rintangan?"
Mengapa ada orang yang mau tahan dengan ini?
Apa gunanya melakukan semua pekerjaan kursus itu dan membuat penelitian dicetak dalam jurnal dan konferensi? Mengapa saya tidak bisa melakukan riset saja dan mendapat bayaran lebih dari yang saya lakukan untuk teknik?
Mengapa mengandalkan sekolah pascasarjana dan publikasi untuk membangun kredensial? Mengapa tidak menjadikan wawancara penelitian lebih seperti wawancara SE di mana semuanya tergantung pada apa yang dapat Anda ingat saat wawancara?
sumber
Saya punya teori. Penelitian biasanya dibayar dengan hibah, sehingga persediaan uang tunai tinggi. Mereka memiliki seember uang untuk dibelanjakan, dan mereka hanya perlu menemukan seseorang untuk dibelanjakan. Apakah Anda benar-benar mencapai sesuatu dalam posisi itu atau tidak, perusahaan / institusi tidak mencatat kerugian bersih karena itu hanya merupakan pengeluaran-biar bagaimanapun. Ada sedikit risiko dalam merekrut orang yang salah. Skenario kasus terburuk adalah mereka membuang semua yang Anda lakukan.
Di sisi lain, keberhasilan atau kegagalan produk yang ada ada di pundak pengembang sehari-hari. Khususnya jika Anda dalam pengembangan produk, Anda adalah pusat laba untuk perusahaan. Pengembang yang baik atau buruk memiliki dampak besar yang jauh melampaui biaya gaji mereka. Pengembang yang buruk sebenarnya menyebabkan kerusakan. Mereka dapat mengatur kembali tim, peluncuran produk, dll. Konsekuensi mempekerjakan insinyur SW yang buruk jauh lebih tinggi.
sumber
Perusahaan kami juga "mengajukan banyak pertanyaan sulit" dan saya akan menjelaskan alasannya. Kami peduli apakah Anda benar-benar tahu bagaimana panggilan fungsi virtual dilakukan, tetapi bukan karena itu sangat diperlukan untuk pekerjaan yang akan Anda lakukan.
Sebaliknya, kami peduli karena kami perlu tahu seberapa cepat Anda dapat mempelajari hal-hal mendasar. Anda mengklaim pengalaman X tahun? Oke, kami akan mengajukan pertanyaan sulit untuk menemukan apakah Anda memiliki pengetahuan yang kuat.
Anda tidak tahu bagaimana panggilan fungsi virtual dibuat di bawah tenda, tetapi tahu segalanya tentang pembuatan profil dan optimalisasi? Bagus, kami kemungkinan akan mempekerjakan Anda - Anda telah memperoleh pengetahuan yang kuat di satu bidang dan karenanya Anda pasti akan mendapatkan pengetahuan yang kuat di bidang lain.
Anda mengklaim X tahun pengalaman "mengembangkan, men-debug dan memperbaiki kode C ++" dan tidak dapat menjelaskan dengan kata-kata sederhana bagaimana penunjuk menunjuk ke suatu objek? Maaf, kami tidak dapat mempekerjakan Anda - jika Anda tidak dapat melakukannya bagaimana Anda akan menjelaskan masalah yang lebih sulit ketika kami perlu membuat keputusan teknis yang rumit?
sumber
Jawaban singkat: ada banyak orang di pasaran yang mengaku tahu pemrograman, tetapi tidak bisa memprogram.
Komentar sampingan: Saya terkejut bahwa tidak ada yang memposting tautan ke esai FizzBuzz .
sumber
Saya akan mengambil rute yang berbeda dan mengatakan bahwa masalahnya mungkin tidak terlalu banyak sehingga wawancara rekayasa perangkat lunak secara inheren lebih sulit, tetapi sektor yang berbeda mencari hal-hal berbeda yang menunjukkan gaya wawancara mereka.
Saya telah mewawancarai berbagai sektor yang cukup luas (misalnya perusahaan pemula, perusahaan kecil, perusahaan besar, departemen TI internal, perusahaan perangkat lunak, organisasi penelitian) dan mereka semua memiliki cara wawancara yang berbeda yang menurut saya biasanya cenderung ikuti pola berikut:
Sekarang, saya lupa menyebutkan perusahaan perangkat lunak (yaitu Google, Microsoft) karena mereka cenderung melakukan hal-hal mereka sendiri dan tergantung pada seberapa matang perusahaan itu dan kelompok apa yang Anda wawancarai, mereka mencari hal-hal yang berbeda.
Namun pada akhirnya dan seperti kebanyakan hal dalam hidup, semuanya tergantung. Secara pribadi saya telah menemukan bahwa beberapa perusahaan sangat fokus pada "pengetahuan buku" yang mungkin datang dengan mengorbankan kemampuan untuk benar-benar menyelesaikan masalah tingkat yang lebih tinggi di mana sebagai perusahaan lain tampaknya sangat peduli dengan seberapa baik Anda menangani masalah tingkat yang lebih tinggi (yaitu Anda dapat merancang skema untuk x ) dan beroperasi dengan asumsi bahwa mereka bersedia berinvestasi tiga hingga enam bulan untuk membuat Anda sepenuhnya mempercepat sebelum Anda menjadi sepenuhnya produktif.
sumber
Saya seorang pengembang perangkat lunak (c / c ++) dengan lebih dari 20 tahun di bidangnya. Jenis wawancara yang secara rutin kita lihat sekarang (permainan asah otak, penerapan struktur data, algoritma pencarian, dll. Di papan tulis) tidak biasa terjadi banyak kecuali untuk lulusan baru. Jika seseorang bekerja di perusahaan terkemuka untuk jangka waktu yang wajar, itu dianggap sebagai bukti kemampuan seseorang untuk menulis kode. Sekarang menjadi sangat sekolah dan saya tidak yakin mengapa. Sungguh, hal-hal khas yang mereka minta Anda kode, BISA dihafal begitu melakukannya di papan tulis benar-benar tidak membuktikan apa-apa. Pada proyek kerja, Anda akan menggunakan internet untuk meneliti sesuatu dan Anda tidak akan menulis btrees atau daftar yang ditautkan dari awal.
Saya pikir ini adalah mode manajemen lain - seperti scrum - dengan yang ini mungkin dimulai oleh google, amazon dan microsoft. Semua orang disalin sama seperti yang mereka lakukan dengan pangkat dan tarik Jack Welch ... ingat GE?
Jika Anda seorang manajer perekrutan yang membaca komentar saya, apa yang HARUS Anda tanyakan kepada kandidat adalah BAGAIMANA mereka akan menyelesaikan masalah tertentu. Alih-alih meminta mereka untuk membuat kode tabel hash, beri mereka masalah yang melibatkan tabel hash dan tanyakan bagaimana mereka akan menyelesaikannya.
Saya juga setuju dengan pengembang di atas posting ini yang mengatakan "memberi mereka masalah dunia nyata yang harus diselesaikan perusahaan"!
"tapi saya cenderung mengebom pertanyaan OOP / Warisan. Mengapa? Karena begitu dukungan untuk templat ditambahkan, saya telah menggunakan C ++ hampir secara eksklusif untuk Generic Programming."
Saya juga setuju dengan yang di atas. Ketika Anda bekerja untuk sebuah perusahaan, Anda menulis kode dengan cara MEREKA. Saya kadang-kadang masih berjuang untuk mengingat panggilan C ++ dengan sintaks referensi dari atas kepala saya karena arsitek senior di perusahaan tempat saya bekerja selama 15 tahun, lebih suka menggunakan pointer, bukan referensi. Dia adalah seorang programmer C lama. Jadi itulah yang kita semua gunakan.
sumber
Sekali lagi, wawancara teknologi sewenang-wenang dan berubah-ubah.
Ada perbedaan besar antara memanggang seseorang di minutiae vs melihat apakah mereka tahu CS mereka. Seperti yang saya katakan di atas, saya memiliki lebih dari satu dekade pengalaman dengan C ++, tapi saya cenderung mengebom pertanyaan OOP / Warisan. Mengapa? Karena begitu dukungan untuk templat ditambahkan, saya telah menggunakan C ++ hampir secara eksklusif untuk Pemrograman Generik .
Saya telah mewawancarai beberapa perusahaan BigHouseHoldNameTech di Bay area & Seattle, dan salah satu wawancara terbaik melibatkan pertanyaan nyata yang harus mereka tangani saat bekerja, melibatkan struktur data dan algoritma [yaitu: Anda memiliki 300 miliar titik data terdiri dari XYZ. Bagaimana Anda menyimpan & mencari secara efisien? ]
Itu cukup banyak membuat Anda tahu bagaimana seorang kandidat bisa masuk dan membantu memecahkan masalah nyata yang Anda hadapi. Yang lebih buruk juga dengan perusahaan BigHouseHoldNameTech yang lain, tetapi mereka mengajukan pertanyaan berjam-jam yang sangat luar biasa sehingga Anda benar-benar harus mencari di manual [ yaitu menggambarkan perbedaan utama antara PCB di windows vs Linux - dan ini bukan t untuk posisi level kernel ]
Hedge fund adalah aneh dengan niat mereka untuk menyiksa ... berharap 8 jam menyelesaikan masalah tipe ransel di papan tulis.
sumber