Saya pergi ke "bursa kerja" baru-baru ini dan saya terkejut melihat betapa banyak penekanan tempat kerja tampaknya pada bahasa pemrograman kandidat yang akrab dengan.
Dari pengalaman saya (memang diakui terbatas), walaupun benar-benar menguasai bahasa pemrograman mungkin memakan waktu bertahun-tahun, mempelajarinya ke tingkat yang wajar adalah urusan yang cukup sederhana bagi seseorang yang sudah memiliki pengalaman dengan bahasa lain, dan pasti bisa masuk dalam jangka waktu yang biasanya dialokasikan oleh pengusaha untuk peningkatan awal.
Saya pikir majikan akan lebih peduli tentang berapa banyak bahasa / paradigma yang saya kenal, atau apa pengalaman desain algoritmik / perangkat lunak saya, yang bertentangan dengan teknologi spesifik yang saya miliki saat ini.
Katakanlah saya sudah tahu Java, C ++, Smalltalk dan Prolog ... haruskah tempat kerja yang bergantung pada Objective-C benar-benar menganggap saya tidak memenuhi syarat karena saya kurang berpengalaman dalam bahasa itu? Apakah ini cacat dalam metodologi perekrutan, dan jika ya, apa yang dapat saya lakukan untuk meyakinkan tempat kerja bahwa kurangnya pengalaman saya dengan Objective-C seharusnya tidak menjadi masalah? Saya bertanya secara hipotesis, tidak secara khusus tentang bahasa pemrograman yang disebutkan.
Atau, pengalaman saya terbatas dan saya akui saya mungkin kehilangan sesuatu. Apakah pengalaman sebelumnya dengan bahasa pemrograman lebih penting daripada apa yang saya pikirkan? Apakah ada bedanya jika itu posisi junior atau senior? Haruskah itu membuat perbedaan?
Jawaban:
Berlawanan dengan siaran pers, ini adalah pasar perusahaan saat ini.
Itu berarti mereka hanya bisa pilih-pilih tentang apa persyaratan mereka. Ini berarti mereka dapat menuntut pengalaman .NET 4.0, dan bukan hanya 3,5 pengalaman ... Itu berarti mereka dapat menuntut pengalaman dengan Django, dan bukan hanya Tiang, dll ...
Tentu, Anda dapat mempelajari semua yang perlu Anda ketahui tentang Ruby dalam beberapa minggu, dan Rails mungkin membutuhkan waktu beberapa bulan (hanya menebak) untuk menjadi mahir dengan ...
Tetapi majikan dapat memilih resume dari orang-orang yang sudah mahir dengan Ruby & Rails.
TL; DR: Econ 101 ... Jangan percaya hype tentang kekurangan programmer .
sumber
Masalah utamanya adalah tidak ada yang benar-benar tahu cara merekrut programmer yang baik. Masalah kedua adalah bahwa pekerjaan pemrograman menarik banyak pelamar.
Mengingat banyak resume, akan sangat bagus untuk dapat menyisirnya dan memilih programmer yang baik, tetapi tidak ada yang tahu bagaimana melakukannya. Cara sebagian besar perusahaan bekerja, jenis awal biasanya oleh HR. Orang SDM tidak tahu apa-apa tentang Smalltalk atau C ++, kecuali seperti yang tercantum pada daftar persyaratan, tidak seperti orang perangkat lunak yang mungkin berpikir "C ++ DAN Smalltalk - orang ini tidak akan memiliki masalah dengan Objective-C".
Bahkan ketika tumpukan pergi ke manajer perekrutan, sangat mungkin terlalu tebal untuk mewawancarai semua orang, sehingga manajer perekrutan harus membuang resume untuk beberapa alasan. Jika itu adalah pekerjaan C ++, dan ada lebih banyak orang dengan 5+ tahun C ++ daripada yang praktis untuk diwawancarai oleh manajer, manajer mungkin akan melemparkan semua resume yang tidak memiliki C ++ pada mereka. Ini bukan cara untuk mendapatkan orang-orang terbaik, tetapi tidak ada yang tahu bagaimana merekrut orang-orang terbaik, dan jika Anda terbatas dalam pengambilan keputusan oleh apa yang ada di resume, orang-orang dengan pengalaman C ++ setidaknya sedikit lebih baik taruhan.
sumber
Mari kita balikkan - jika Anda tahu tujuan C, apakah Anda akan digunakan sebagai programmer C ++? Saya akan mengatakan, tidak, Anda tidak akan, bahasanya terlalu berbeda. Bahkan untuk bahasa sederhana seperti C, saya ingin melihat pengalaman 6 bulan sebelum saya mempekerjakan seseorang, untuk C ++ beberapa tahun.
Beberapa tahun yang lalu, saya belajar sendiri PHP. Saya akan mengatakan itu beberapa bulan sebelum saya berhasil, bisa menemukan jalan saya di perpustakaan, memahami idiom umum dll. Dan saya sudah tahu banyak bahasa.
sumber
Itu tergantung pada berbagai aspek konteks. Tidak hanya tingkat peran, tetapi juga keadaan proyek dan perusahaan.
Pada tingkat yang paling sederhana, bahasa imperatif penjepit keriting apapun hampir sama dengan yang lain.
Jika Anda bisa kode dalam imperatif, Anda bisa kode dalam imperatif. Baik itu Java, C #, C, C ++, atau bahkan javascript. Diberi buku referensi yang layak (dan mungkin sedikit boilerplate), Anda harus bisa merobohkan program kecil di salah satu yang lain di sore hari.
Apa pun riwayat Anda, Anda tahu tentang loop cabang dan fungsi, dan sintaksisnya hampir sama untuk semuanya. Jika riwayat Anda adalah OO, Anda juga tahu tentang objek, kelas, dan antarmuka.
Namun, saya telah melihat terlalu banyak programmer imperatif-satunya berjuang untuk menulis program sederhana dalam bahasa deklaratif atau fungsional. Jika saya menjalankan toko Erlang, saya akan lebih suka seseorang dengan Erlang, atau setidaknya Prolog, pengalaman daripada seseorang dengan C ++.
Bagaimana itu tergantung pada tingkat peran:
Merekrut untuk peran junior:
Jika saya memilih seorang programmer untuk pekerjaan C ++, ada beberapa jebakan yang saya ingin cukup yakin kandidat mampu menghindari, seperti kebutuhan untuk memperhatikan memori atau panjang array, hanya agar mereka tidak bisa menembak diri sendiri (dan saya) di kaki. Jika mereka belum pernah melakukan C atau C ++, maka saya harus menyelesaikannya dalam wawancara.
Dan untuk peran senior:
Salah satu kunci pemrograman secara efisien adalah mengetahui apa yang tidak boleh Anda tulis sendiri. Kunci untuk itu, adalah perpustakaan standar (dan standar de-facto). Kunci untuk itu, adalah pengalaman. Anda tidak bisa hanya duduk dengan "Teach yourself Java" selama seminggu, dan langsung mengubah diri Anda dari seorang programmer C ++ 10 tahun menjadi programmer Java 10 tahun.
Bagaimana itu tergantung pada keadaan proyek / perusahaan
Diberikan proyek Java yang cukup bersih. Saya ingin karyawan senior yang baru memiliki banyak pengetahuan tentang ekosistem Jawa, dan dapat memberi saran tentang berbagai teknologi yang tersedia.
Diberikan proyek Java yang matang, saya dengan senang hati mempertimbangkan pengembang C ++ yang berpengalaman, dengan sedikit atau tanpa pengalaman Java untuk peran Java senior. Sebagian besar keputusan ekosistem akan telah diselesaikan, dan karyawan baru akan dapat memperoleh pengalaman dengan perpustakaan Java sementara perusahaan memanfaatkan pengalaman programmer dalam pengembangan perangkat lunak OO.
sumber
Itu tergantung pada tempat kerja. Jika mereka sangat sibuk, mereka mungkin tidak punya waktu untuk menunggu Anda untuk mengejar titik di mana Anda dapat berfungsi di Objective-C - mereka mungkin ingin seseorang yang bisa berlari.
Beberapa tempat kerja mungkin bersedia mengambil risiko pada Anda jika mereka melihat Anda terbiasa dengan bahasa lain, serta memiliki dasar-dasar yang kuat, dan pengetahuan tentang domain bisnis. Itu akan sangat tergantung pada seberapa terbuka mereka, dan seberapa baik Anda meyakinkan perekrut untuk mengambil risiko itu.
sumber
Mempekerjakan itu sulit; mempekerjakan orang baik bahkan lebih sulit. Saya telah melakukan perekrutan di mana saya dihadapkan dengan setumpuk lebih dari 500 resume. Tentu saja kami menyaring orang-orang dengan pengalaman paling sedikit dalam apa yang kami inginkan untuk mendapatkan tumpukan ke ukuran yang masuk akal. Apakah itu adil bagi kandidat hebat yang kebetulan tidak tahu bahasa itu, mungkin tidak. Tetapi jika saya dapat menemukan 100 orang yang memiliki kualifikasi yang saya cari, saya benar-benar tidak akan menghabiskan banyak waktu untuk 400 orang yang tidak - tidak peduli seberapa bagus mereka.
Sekarang dalam perekrutan, saya mungkin memiliki daftar persyaratan yang panjang, tetapi biasanya hanya satu atau dua saja yang bisa menyelesaikan transaksi. Dan jika Anda tidak menemukan orang dengan daftar kualifikasi awal yang ingin Anda wawancarai (atau nanti jika semuanya gagal dalam wawancara yang saya lihat terjadi), maka biasanya mereka akan kembali dan melihat orang-orang yang kehilangan beberapa dari kualifikasi yang kurang kritis atau orang yang memiliki sesuatu yang serupa tetapi tidak sama. Dalam kasus-kasus itu Anda sering mencari sesuatu tentang pengalaman orang itu yang akan membuat mereka lebih baik untuk pekerjaan Anda daripada seseorang dengan semua kualifikasi teknis. Sebagai contoh, saya akan mempertimbangkan seorang analis data dengan pengalaman dalam database perusahaan yang berbeda jika dia memiliki pengalaman dalam domain bisnis saya (pada kenyataannya orang itu mungkin akan membuat potongan pertama saya jika saya melihat semua resume). Hal yang sama dengan sesuatu seperti C # dan Java. Jika orang tersebut melakukan pekerjaan dengan tingkat kompleksitas yang sama dan terutama dalam domain bisnis yang serupa, mereka mungkin menjadi kandidat yang sangat baik bahkan jika mereka memiliki bahasa lain.
Namun, kecuali saya memiliki program pelatihan yang cukup formal untuk orang-orang entry level, saya akan cenderung tidak mempekerjakan orang-orang yang tidak memenuhi keterampilan minimum bahasa saya. Dan hampir tidak pernah dari kelompok yang tidak memiliki hal-hal yang saya cari. Orang yang tidak memiliki pengalaman memiliki lebih sedikit untuk dibawa ke meja dalam hal kualifikasi penyeimbangan dan kurang dari rekam jejak untuk membuktikan mereka dapat melakukan pekerjaan tingkat profesional dalam bahasa apa pun. Mereka cukup belajar dengan pertunjukan profesional pertama mereka tanpa memahami bahasa terpenting yang kami gunakan. Dan mempekerjakan mereka lebih merupakan risiko bahwa mungkin berbulan-bulan sebelum Anda bisa mendapatkan pekerjaan yang bermanfaat dari mereka.
Poin lebih lanjut mulai berlaku jika petugas perekrutan memindahkan tim ke teknologi baru. Jika tidak ada seorang pun di tim yang benar-benar ahli dalam teknologi dan saya harus mempekerjakan seseorang yang baru juga, saya akan mencari seseorang yang memiliki keahlian sebanyak yang dapat saya temukan dalam teknologi itu karena mereka memiliki gagasan di mana "ranjau darat" "Untuk menghindari adalah.
Akhirnya, melamar pekerjaan yang Anda minati bahkan jika Anda tidak memenuhi semua persyaratan yang disebutkan (tetapi cobalah untuk memenuhi beberapa, mempekerjakan pegawai tidak suka membuang-buang waktu mereka pada orang-orang yang tidak akan pernah dipekerjakan). Anda tidak pernah tahu kompetisi apa yang akan Anda miliki untuk suatu pekerjaan atau apa yang paling mengesankan orang-orang yang menyaring resume atau melakukan wawancara. Apa yang mungkin membuat Anda diwawancarai di perusahaan A mungkin justru menghalangi Anda untuk mendapatkan wawancara di perusahaan B bahkan jika mereka memiliki persyaratan yang sama di atas kertas. Selanjutnya, mereka mungkin memiliki pekerjaan yang lebih baik memenuhi kualifikasi Anda yang belum mereka iklankan. Tetapi Anda tidak akan pernah dipertimbangkan untuk pekerjaan itu jika mereka tidak tahu tentang Anda.
sumber
Haruskah itu Tidak Apakah itu? Ya, sayangnya. Ini adalah sindrom "tupai ungu": Perusahaan ingin memiliki kue mereka dan memakannya juga, dan mendapatkan kandidat yang dapat melakukan segalanya di bawah matahari yang mereka butuhkan atau mungkin butuhkan. Seringkali, tetapi tidak selalu ini karena mereka juga A) Tidak memiliki petunjuk apa pengembangan sebenarnya dan anggap seseorang memenuhi semua kriteria mereka dapat melakukan pekerjaan, B) Mereka pilih-pilih karena mereka bisa lolos begitu saja, atau C) Mereka berencana untuk mengajukan H-1B / Green Card / Promosikan dari dalam tetapi harus membuatnya terlihat seperti mereka mengiklankan pekerjaan nyata.
sumber
Jika Anda memiliki 20+ tahun pengalaman dalam 3 atau 4 bahasa yang memiliki fitur serupa dengan Objective-C maka saya mungkin akan mempekerjakan Anda untuk melakukan Objective-C dan berharap Anda menjadi produktif dalam 6 - 8 minggu. (ini berdasarkan pengalaman pribadi saya dengan belajar Objective-C beberapa tahun yang lalu).
Jika Anda benar-benar keluar dari sekolah tanpa pengalaman praktis nyata yang nyata dalam hal apa pun, maka Anda mungkin tidak akan dipekerjakan untuk melakukan sesuatu yang sama sekali tidak Anda kenal.
Objective-C adalah pria jerami yang menarik di sini. Ini mengharuskan Anda tahu C dengan sangat baik, itu mengharuskan Anda tahu Analisis dan Desain Berorientasi Objek dengan sangat baik, dalam banyak kasus mengharuskan Anda untuk mengetahui C ++ sampai batas non-sepele karena ada perpustakaan C ++ yang mungkin ingin Anda temui.
Ini mengharuskan Anda untuk memahami manajemen memori manual serta cara kerja manajemen memori / pengumpulan sampah otomatis dan kapan harus menggunakan setiap teknik dalam program yang sama.
Bukan hanya Objective-C yang perlu Anda ketahui juga tentang Kakao dan POSIX, karena hadapi itu Objective-C adalah untuk semua tujuan praktis yang tidak berguna di luar lingkungan Apple dan Anda juga harus mengenal Kakao.
Dan ketika Cocoa gagal Anda, Anda harus dapat mengetahui API POSIX mana yang digunakan ketika Anda tidak dapat melakukan apa yang Anda inginkan dengan pembungkus Kakao.
Ini juga menyiratkan bahwa Anda harus mengenal Unix sampai batas tertentu juga.
sumber
Tergantung pada bahasa / individu.
Jika saya seorang C # place dan seseorang dengan pengalaman JAVA / J2EE berlaku, saya akan mencobanya. Sintaksis antara C # & JAVA tidak berbeda. Coding adalah pengkodean dan saya pikir begitu mereka terbiasa dengan beberapa perbedaan mereka akan baik-baik saja.
Sama halnya dengan JAVA -> C #.
Sekarang, jika Anda adalah orang C # dan Anda melamar pekerjaan C ++ saya ingin melihat pengalaman. Ada terlalu banyak perbedaan.
Jadi ya, itu tergantung situasi
sumber
Sementara saya pikir OP sudah mati tentang bagaimana seorang programmer yang berpengalaman dengan banyak paradigma dapat dengan mudah menambahkan satu, itu semua bermuara pada keengganan majikan terhadap risiko. Seorang calon karyawan yang tidak terbiasa dengan alat-alat mereka adalah kartu liar; mereka bisa benar-benar hebat, tetapi mereka juga bisa gagal, dan akan lebih sulit dari biasanya bagi pewawancara untuk mengatakan perbedaannya jika mereka tidak bisa bertanya secara mendalam tentang teknologi yang mereka gunakan.
Saya jelas tidak mengatakan ini adalah cara yang benar untuk melihat ini, tetapi itulah yang dilakukan beberapa majikan. Yang pintar mengeksploitasi ini dan mengambil programmer luar biasa dengan pengalaman 30 tahun di C ++, sedangkan yang bodoh menolaknya karena mereka tidak membutuhkan pengalaman Ruby on Rails 15 tahun. Pemrogram dapat mengeksploitasi ini juga, dengan menghindari pekerjaan dengan majikan yang kurang informasi. Lagi pula, siapa yang ingin bekerja di tempat yang secara sistematis membuat keputusan perekrutan yang buruk?
sumber
Pada bagian ini adalah tentang HR melemparkan kata kunci ke dalam deskripsi pekerjaan karena mereka tidak benar-benar memahami peran. Itu sebabnya Anda kadang-kadang akan menghadapi situasi lucu dari deskripsi pekerjaan yang menetapkan 3 tahun pengalaman dalam teknologi yang hanya ada selama 6 bulan.
Apakah harus membuat perbedaan atau tidak , itu benar-benar tergantung pada peran dan individu yang terlibat. Hampir semua manajer yang melakukan perekrutan (tentu saja semua yang pintar) akan memerintahkan SDM untuk meloloskan mereka kandidat yang memiliki banyak kekuatan di sebagian besar wilayah bahkan jika mereka kekurangan satu atau dua poin dalam deskripsi pekerjaan. Namun itu umumnya tidak berlaku untuk lulusan baru; Saya berbicara tentang seperti orang-orang dengan banyak pengalaman kerja hebat berinteraksi dengan klien atau tim terkemuka atau sesuatu.
sumber
Apakah Anda pernah melihat semua elemen yang membentuk tumpukan pengembangan Anda? Misalnya, apa IDE, kerangka kerja pengujian, integrasi berkelanjutan, kontrol versi, metodologi pengembangan, dan paradigma kode yang membentuk lingkungan yang digunakan seseorang untuk membuat perangkat lunak. Ini bisa menjadi sejumlah alat yang beberapa perusahaan mungkin ingin seseorang sudah tahu daripada harus mengambil dari awal. Poin ironcode tentang pasar majikan adalah faktor lain di sini karena mungkin ada beberapa kasus di mana ada banyak persaingan untuk suatu posisi dan sehingga perusahaan dapat membidik langit dan mungkin mendapatkannya.
Hanya untuk memberikan contoh yang lebih konkret tentang lingkungan itu, inilah yang saya miliki di tempat saya bekerja: Visual Studio 2008 melakukan ASP.Net menggunakan C # kebanyakan, nUnit, Cruise Control.Net, Subversion, Agile / Scrum, dengan perpaduan prosedural, OO , dan fungsional tergantung di mana orang mencari. Jika saya ingin beralih ke Jawa, ini mungkin berarti membiasakan diri dengan alat-alat baru untuk banyak fungsi-fungsi ini yang mungkin bukan apa yang ingin diserap majikan sebagai biaya mempekerjakan saya dalam peran itu. Mungkin juga ada beberapa poin rumit bahwa mereka yang berpengalaman dalam versi itu mungkin lebih tahu daripada yang lain dan menghindari beberapa jebakan yang mungkin membuat seseorang pergi, "Mengapa mereka membangunnya seperti itu?"
sumber
Tidak, lihat. Persyaratan ini tidak disatukan oleh orang-orang IT. Mereka disatukan oleh orang-orang SDM. Dan cara orang-orang SDM mendapatkan persyaratan adalah dengan meneriakkan pertanyaan kepada orang-orang IT saat mereka berjalan terhuyung-huyung ke mesin kopi.
Jadi mereka berkata, "Apa yang kamu butuhkan?" dan si brengsek acak yang akhirnya menjawab berkata, "Seorang programmer. Butuh beberapa tahun pengalaman. Seperti, aku tidak tahu, 4? Dan itu akan baik jika dia tahu. Net." Respons yang masuk akal.
Tapi itu akan diterjemahkan menjadi "4 tahun pengalaman dalam. Net 4" dan itu. Net 4 karena, ketika Anda Google. Net, tautan pertama akan membawa Anda ke halaman yang membicarakan tentang. Net 4.
Ada juga kemungkinan, dan saya sudah mengalami beberapa kali, bahwa mereka memiliki persyaratan bahasa tertentu karena mereka ingin bergerak ke arah itu, dan mereka pikir itu akan lebih lancar jika mereka memiliki staf yang berpengalaman.
sumber