Mengapa sebagian besar tawaran pekerjaan untuk pengembang <bahasa di sini>, bukan pengembang pada umumnya? [Tutup]

10

Di dunia yang ideal:

Dalam sebuah artikel yang luar biasa, Jangan Menelepon Diri Anda Programmer, Dan Nasihat Karir Lainnya , Patrick McKenzie menjelaskan, antara lain, bahwa bahasa tidak masalah:

  • Pengembang adalah orang yang memecahkan masalah, secara umum. Pengembang bukan orang yang menulis kode dalam bahasa tertentu.

  • Bisnis tidak peduli dengan bahasa yang Anda tahu. Jika mereka perlu menyewa pengembang untuk proyek yang ditulis dalam bahasa tertentu, dan mereka memiliki kandidat yang sangat berpengalaman tetapi tidak pernah menulis garis kode dalam bahasa ini, ia masih akan dipekerjakan.

Menurut pengalaman saya baik sebagai pengembang maupun sebagai orang yang harus merekrut pengembang lain, pengamatannya sangat mirip:

  • Pengalaman N tahun di Jawa atau pengalaman N tahun di C # tidak masalah. Yang penting adalah bahwa kandidat tahu bagaimana menyelesaikan masalah, tahu perbedaan antara kode spaghetti dan kode bersih dengan arsitektur yang dipikirkan dengan matang, dll.

  • Saya tidak peduli dengan bahasa yang Anda gunakan sebelumnya. Untuk proyek C #, saya lebih suka menyewa pengembang profesional yang menghabiskan hidupnya menulis kode Java, Python dan Ruby on Rails daripada seorang pemula yang hanya tahu C #, dan sangat mengetahuinya.

  • Pengetahuan dan pengalaman yang Anda peroleh menggunakan satu bahasa sebagian besar dapat digunakan kembali dalam bahasa lain.

    Pengembang berpengalaman yang menggunakan Ruby on Rails untuk pengembangan web dan menghabiskan sisa karirnya menulis aplikasi Java desktop menggunakan Oracle sangat cocok untuk proyek ASP.NET MVC menggunakan Microsoft SQL Server. Karena orang ini sudah mengetahui semua yang dia butuhkan untuk pekerjaan ini , selain beberapa hal khusus dan perbedaan sintaksis.

    Di sisi lain, seseorang yang hanya melakukan beberapa situs web kecil ASP.NET MVC tidak cocok sama sekali, karena dia mungkin tidak sepenuhnya memahami arsitektur MVC, mungkin tahu tahu apa itu profil SQL, dan mungkin kekurangan beberapa hal penting lainnya. pengetahuan.

    Jangan bilang bahwa saya tidak dapat memperbaiki masalah kecil dengan situs web PHP yang menggunakan CodeIgniter hanya karena saya tidak pernah menggunakan CodeIgniter sebelumnya.

Dalam praktek:

Dalam praktiknya, ketika saya mencari pekerjaan lepas dan ketika saya melihat penawaran pekerjaan secara umum, mereka sangat spesifik dalam bahasa.

Beberapa akan mencari pengembang PHP dengan pengalaman dua tahun di Magento. Orang lain akan mencari seseorang dengan pengalaman VB.NET setidaknya tiga tahun, dan jika Anda mengirim mereka resume yang menyebutkan bahwa Anda telah melakukan pengembangan C # selama enam tahun, tetapi tanpa menyebutkan VB.NET, mereka tidak akan repot-repot untuk menjawab. Jika mereka meminta orang yang berpengalaman dengan Firebird, mereka tidak akan mendengarkan pengalaman sepuluh tahun Anda dengan Oracle.

Mengapa ada perbedaan antara teori dan apa yang saya dan Patrick McKenzie gambarkan sebagai akal sehat, dan dunia nyata dari tawaran pekerjaan?

Arseni Mourzenko
sumber
12
Don't tell me that I'm unable to fix a small problem with a PHP website which uses CodeIgniter just because I never used CodeIgniter before.Meskipun Anda benar-benar mampu memperbaiki masalah, jika akar penyebabnya adalah CodeIgniter (salah satu dari beberapa quirks kerangka kerja, atau salah satu dari banyak bug terbuka), maka itu akan membawa Anda lebih banyak waktu untuk memperbaiki masalah.
yannis
12
Anda lupa beberapa tag: <rant>...</rant>. Serius, apakah ada pertanyaan nyata di sini?
Cyclops
6
"Saya tidak peduli dengan bahasa yang Anda gunakan sebelumnya. Untuk proyek C #, saya lebih suka mempekerjakan pengembang profesional yang menghabiskan hidupnya menulis kode Java, Python dan Ruby on Rails daripada seorang pemula yang hanya tahu C #, dan tahu itu sangat buruk. " - Ambil strawman itu! Ini adalah dikotomi yang salah. Kata-kata kasar Anda benar untuk pemula, tetapi BUKAN untuk posisi yang membutuhkan pengetahuan mendalam tentang platform tertentu.
Jim In Texas
1
Seseorang yang memiliki pengalaman dalam bahasa akan melakukan pekerjaan lebih cepat dan lebih bersih, berpikir sebaliknya hanya khayalan.
Thomas Bonini
Ketika saya adalah orang yang mempekerjakan, saya menjadi orang yang memiliki daftar panjang "Harus menggunakan Technobabble Ketentuan X, Y, dan Z". Dan jika saya dapat menemukan orang itu, saya dapat mempekerjakan mereka. Ketika saya adalah orang yang mencari pekerjaan, saya mungkin membenci mereka karena tidak menatap saya karena saya hanya memiliki jumlah besar sekali otak, dan bukan pengalaman persis yang mereka inginkan, tetapi jika saya memiliki hal yang tepat yang mereka inginkan, saya harapkan untuk disewa, di tempat. Jadi pada akhirnya, itu panggilan mereka, dan memang sudah seharusnya.
Warren P

Jawaban:

16

Karena banyak perusahaan memiliki drone SDM melakukan perekrutan yang tidak tahu tentang hal itu. Ketika HR mengatakan "Kualifikasi apa yang dibutuhkan kandidat?" jauh lebih mudah untuk mengatakan "Enam tahun C #" daripada mengatakan "Menulis kode yang baik". Drone itu tidak tahu seperti apa "Menulis kode yang baik" atau bagaimana memfilter resume dengan apakah mereka dapat menulis kode yang baik atau tidak. Namun, mereka dapat dengan cepat membaca resume dan melihat "Lima dan tiga perempat tahun C #" dan membuangnya.

DeadMG
sumber
3
Persis. non-pengembang dan manajemen mungkin melihat Anda miring jika Anda mengatakan Anda sedang mencari seseorang dengan keterampilan yang sama tetapi perlu belajar sedikit (misalnya sintaksis spesifik, bukan konsep) pada awalnya di pekerjaan kecuali mereka setuju dengan itu.
Michael Durrant
Saya pikir mereka disebut monyet SDM ... Saya sepenuhnya setuju, namun itu ide yang baik untuk memiliki guru <bahasa di sini> di tim.
Lukasz Madon
3
Menempatkan "menulis kode yang baik" dalam iklan adalah omong kosong. Semua orang berpikir mereka menulis kode yang bagus. Dan orang-orang yang paling dihukum karena keterampilan menulis kode unggul mereka biasanya adalah orang-orang yang menulis kode terburuk.
nikie
1
@nikie: Ini penyederhanaan. Anda tentu saja tidak akan memasukkannya ke iklan.
DeadMG
3
Saya tidak berpikir ini adalah alasan utama, karena startup kecil tanpa departemen SDM melakukan hal yang sama.
J. Maes
22

Saya pikir sudah waktunya untuk meletakkan mitos ini bahwa pengembang dengan pengalaman X tahun dalam bahasa Y dapat dengan mudah mentransfer ke bahasa Y2. Ini bukan cara kerjanya.

Jika Anda memperlakukan bahasa hanya sebagai sintaks dan pola umum kemudian mengetahui, katakanlah, Java akan memberi Anda awal yang sangat besar ketika pindah ke C #. Namun itu tidak akan mempersiapkan Anda untuk WCF, WPF, Klik Sekali, berbagai pustaka threading, Linq, dan tentu saja tidak akan mempersiapkan Anda untuk hal-hal yang dikatakan brosur berfungsi, tetapi dalam praktiknya tidak.

Anda lihat Anda tidak berbicara tentang bahasa, Anda biasanya berbicara tentang platform. Dan di mana platform, .NET adalah contoh yang baik, mendukung banyak bahasa, orang cenderung berkumpul pada pilihan yang lebih disukai.

Jadi ketika saya meminta pengembang C #, saya sebenarnya beriklan untuk pengembang platform .NET yang pengalamannya ada di proyek C #. Mereka cenderung proyek .net server, winforms / proyek WPF.

Ian
sumber
Saya setuju. Tentu saja mungkin, tetapi sulit. Sintaks keluarga C mudah ditransfer, tetapi pemahaman nyata tentang platform lengkap dan set alat membutuhkan banyak waktu untuk melakukan grok. Saran saya kepada pengembang / programmer / analis / coders yang lebih muda adalah melompat pada teknologi baru pada waktu Anda sendiri sementara semua orang masih pemula. Orang-orang yang terjun ke dalam pengembangan HTML5, iOS dan Android dua atau tiga tahun lalu dalam kondisi yang baik sekarang. Tentu saja, mungkin saja menebak yang salah (tanyakan padaku tentang Flex), tetapi ini bukan akhir dari dunia.
Jim In Texas
Ini sebagian besar karena Java -> C # mirip dengan C -> C ++ - mereka dapat dibangun di atas fondasi yang sama, secara teknis, tetapi C # mencakup lebih banyak fitur yang sebenarnya ingin Anda gunakan. Transformasi terbalik akan jauh lebih mudah, pergi dari C # ke Jawa.
DeadMG
11

Saya dapat memikirkan beberapa alasan:

  1. Karyawan vs. Konsultan - Jika saya menyewa seorang konsultan, saya ingin dia sudah mencapai kecepatan pada tumpukan teknologi yang kita gunakan. Konsultan diharapkan menjadi efisien dengan sangat cepat karena mereka tidak berada di sana selama melakukan amortisasi pembelajaran.
  2. Penawaran / permintaan - Seperti yang dikatakan Doc, jika saya akan memilih kandidat yang paling berpengalaman, saya bisa untuk pekerjaan itu. Dan tumpukan teknologi penting di sana untuk teknologi yang sudah ada. Jika saya mencari seseorang untuk dikembangkan di Go (memilih bahasa yang diketahui oleh sedikit orang), hampir tidak ada yang memiliki pengalaman dengannya dan saya kembali ke skillset sebagai pengembang pada umumnya.
Jeanne Boyarsky
sumber
4

Tidak semua pekerjaan pemrograman sama. Pekerjaan saya saat ini tentu cocok dengan model Anda. Ini melibatkan banyak analisis data ad hoc dan kami mengambil dan meletakkan alat sesuai kebutuhan. Saya dipekerjakan sebagian karena saya memiliki rekam jejak untuk dapat dengan cepat menjadi produktif dengan alat-alat baru.

Di sisi lain ada pekerjaan di mana Anda sedang mencari keahlian teknis tertentu. Kembali di tahun 90-an saya bekerja untuk sebuah toko perangkat lunak kecil, dan kami perlu dengan cepat mengembangkan keahlian dalam C ++. Meskipun secara eksplisit meminta keahlian dalam C ++ dalam iklan kami, sebagian besar pelamar tahu lebih sedikit C ++ daripada saya. "Tapi aku bisa belajar C ++ dengan cepat!" kata mereka semua. Ya, saya yakin Anda bisa, tetapi saya juga bisa, dan begitu juga orang-orang lain yang sudah ada di sana. Kami sedang mencari seseorang yang sudah benar-benar tahu C ++, jadi kami akan memiliki sumber keahlian sendiri saat kami semua datang dengan cepat. Memiliki pemula lain di tim benar-benar tidak akan membantu.

Charles E. Grant
sumber
1
+1: TIM dapat membuat sebagian atau bahkan sebagian besar pengembang menjadi baru dalam bahasa ini, tetapi sangat membantu jika ada pakar bahasa yang dapat mengajar orang lain.
POHON
3

Bisnis tidak peduli dengan bahasa yang Anda tahu. Jika mereka perlu menyewa seorang pengembang untuk proyek yang ditulis dalam bahasa tertentu, dan mereka memiliki seorang kandidat yang sangat berpengalaman tetapi tidak pernah menulis satu baris kode pun dalam bahasa ini, ia masih akan dipekerjakan.

Katakanlah, Anda mencari kandidat untuk pekerjaan .NET / C #. Jika Anda memiliki dua kandidat untuk pekerjaan itu, keduanya tampaknya sama-sama sangat berpengalaman, tetapi yang pertama mendapatkan pengalamannya di ekosistem Jawa, yang kedua di ekosistem .NET - yang mana favorit Anda?

Orang lain akan mencari seseorang dengan pengalaman VB.NET setidaknya tiga tahun, dan jika Anda mengirim mereka resume yang menyebutkan bahwa Anda telah melakukan pengembangan C # selama enam tahun, tetapi tanpa menyebutkan VB.NET, mereka tidak akan repot-repot untuk menjawab.

Siapa yang bisa mengatakan mengapa Anda tidak mendapatkan jawaban? Mungkin ada cukup berpengalaman VB.NET pengembang melamar pekerjaan? Mungkin departemen sumber daya manusia menggunakan pengalaman bahasa pemrograman sebagai filter untuk mengurangi jumlah lamaran pekerjaan dari 100 menjadi 10. Mungkin Anda baru saja berbicara dengan perusahaan yang salah (saya kira di perusahaan saya, kami akan mengirim jawaban dalam contoh kasus Anda dijelaskan di atas).

Doc Brown
sumber
2

Dalam sebagian besar pekerjaan berdasarkan hasil proyek diperlukan dengan cepat dan orang-orang perlu menghasilkan keuntungan sesegera mungkin.

Orang yang mampu memenuhi kebutuhan ini dan tidak terikat dengan bahasa tertentu sangat langka dan akibatnya terlalu mahal. Orang-orang ini hanya disewa oleh perusahaan besar yang meminta keterampilan luar biasa.

Orang yang mampu menyelesaikan masalah tetapi tidak dapat mempelajari bahasa tertentu dengan cepat kurang langka. Mereka masih membutuhkan banyak uang, dan mereka memiliki biaya waktu tambahan yang diperlukan untuk mempelajari bahasa tertentu.

Biaya waktu tambahan ini dikurangi dengan meminta programmer khusus bahasa. Dia telah mempelajari keterampilan yang diperlukan dan dapat memberikan hasil dengan cepat.

Singkatnya, sebuah proyek yang perlu dilakukan di JAWA tidak memerlukan pengembang perangkat lunak yang luar biasa mahal, juga tidak memerlukan pengembang .net rata-rata yang akan membutuhkan waktu untuk mempelajari bahasa / kerangka kerja. Dibutuhkan hasil langsung dengan jumlah uang paling sedikit, yang dikirimkan oleh orang yang sudah memiliki pengalaman dengan JAVA dan memiliki keterampilan pemecahan masalah yang relatif baik.

Seperti biasa, ini tentang uang, dan mendapatkan hasil terbaik dari investasi

J. Maes
sumber
2

Saya pikir Anda salah menafsirkan frasa standar "<language here> developer". Perusahaan tidak memasukkan frasa itu dalam iklan untuk menghalangi pengembang yang memiliki pengalaman dalam bahasa lain. Mengapa mereka ingin menghalangi pengembang yang cakap? Dari sudut pandang majikan, semakin banyak kandidat, semakin baik. Mereka selalu tidak dapat mengundang orang yang tidak mereka minati.

Maksud sebenarnya dari frasa ini adalah untuk memberi tahu Anda, pembaca, apa yang akan ditawarkan oleh tawaran pekerjaan itu. Dan itu masuk akal, IMHO. Apakah Anda akan melamar pekerjaan di mana Anda berkembang dalam bahasa assembly Z80? Atau COBOL? Atau Fortran?

Dan, jelas, jika perusahaan memiliki dua kandidat yang tampaknya sama pintarnya, maka yang memiliki pengalaman dalam <bahasa di sini> menang. Tidak lebih, tidak kurang. (Ada kasus khusus, di mana orang disewa hanya untuk satu proyek, atau untuk proyek yang sudah terlambat, atau untuk proyek pertama perusahaan berkembang dalam <bahasa di sini>, di mana Anda benar - benar membutuhkan pengalaman dalam bahasa itu dari awal, tapi saya tidak berpikir itu aturannya.

Kebetulan, perusahaan saya pernah menulis iklan seperti yang Anda sarankan ( sepertinya masuk akal, setelah semua). Hasilnya sangat menghancurkan. Orang-orang yang sangat peduli dengan pekerjaan mereka hanya melewatkan iklan. Hanya yang putus asa, yang melamar posisi terbuka yang diterapkan. Kami tidak pernah mencobanya lagi.

nikie
sumber
1

Mundur dan pikirkan premisnya. Anda ingin seseorang melakukan pekerjaan .net. Anda memasukkannya ke dalam deskripsi pekerjaan Anda dan mencari kandidat dengan keterampilan itu! Ini hanya akal sehat.

Saya tentu saja setuju dengan filosofi Anda yang lebih terperinci tentang mengapa itu mungkin bukan ide yang baik, tetapi kebanyakan orang hanya akan beriklan, meminta dan mencari kandidat dengan keterampilan yang mereka butuhkan sekarang. Sederhana saja, jadi saya pikir ini menjawab judul pertanyaan Anda mengapa.

Jika mereka tidak mendapatkan kandidat sama sekali, atau melalui beberapa kandidat yang buruk, maka mereka mungkin belajar sedikit dan lebih setuju dengan item yang Anda detailkan. Bahkan di area tempat saya berada (Ruby on Rails) ada BANYAK iklan yang mengatakan "tidak diperlukan pengalaman, kami akan melatih Anda", dll. Dan pada kenyataannya beberapa organisasi Ruby on Rails teratas adalah sangat terbuka untuk kandidat "tanpa kebiasaan buruk" yang dapat mereka latih. Jadi pendekatan yang tepat ada di luar sana oleh beberapa organisasi.

Ingat juga bahwa sebagian besar iklan dilakukan oleh perekrut eksternal atau perekrut internal non-teknis yang hanya tidak memiliki pengetahuan untuk "berjalan ke samping" seperti yang Anda gambarkan.

Michael Durrant
sumber