Apakah "Mempekerjakan Hanya yang Terbaik" adalah saran yang sangat praktis untuk pemrograman aplikasi desktop biasa? [Tutup]

61

Untuk latar belakang, kami melakukan aplikasi rekayasa desktop, dengan AutoCAD seperti UI, sesuatu yang mirip dengan etab .

Satu hal yang benar-benar mengganggu saya adalah, apakah perlu mempekerjakan pengembang terbaik? Sebagai permulaan, kami mengalami kesulitan besar dalam perekrutan; kebanyakan resume yang kita lihat sedang melakukan aplikasi CRUD sederhana, atau kustomisasi SharePoint yang saya pikir tidak melibatkan banyak program hardcore. Bahkan mereka yang kami panggil untuk wawancara, sebagian besar tidak dapat melakukan urutan Fibonacci dan pencarian biner sederhana, dan kami cukup ramah untuk memberikan petunjuk dan menguraikan masalah secara eksplisit sehingga para kandidat tidak perlu mencari kamus untuk memeriksa Apa arti "Urutan Fibonacci"?

Ini membuat saya berpikir: Ya, kita memang memerlukan beberapa tingkat kecakapan pemrograman ketika melakukan hal-hal pemrograman geometri / linier komputasi, dan kita memang memerlukan beberapa tingkat kecakapan pemrograman ketika merancang arsitektur perangkat lunak / atau memutuskan pola perangkat lunak mana yang akan digunakan, tetapi di luar itu , banyak kode kami hanya kode ledeng (saya pikir), yang dapat dilakukan oleh seseorang yang terbiasa dengan pemrograman.

Mengingat bahwa kita benar-benar membutuhkan bakat pemrograman sekarang, dan mengingat mempekerjakan pengembang superstar sangat sulit, saya ingin menurunkan standar saya dan hanya mempekerjakan yang biasa-biasa saja, yang bertentangan langsung dengan apa yang diberitakan Joel .

Bagaimana menurut anda?

Sunting: Anda tidak perlu menulis ulang seluruh pustaka geometri / pemrograman linier komputasi; semua yang perlu Anda lakukan, sejauh aplikasi saya yang bersangkutan, adalah untuk dapat mengetahui cara melemparkan masalah ke dalam istilah pemrograman geometris / linear komputasi yang tepat dan tahu kapan / bagaimana menggunakan perpustakaan yang ada. Jadi tidak sesulit kelihatannya.

Graviton
sumber
53
Jawaban standar: mungkin Anda menawarkan gaji terlalu rendah dan pengembang yang lebih baik tidak tertarik bekerja untuk Anda? Lagi pula, jika Anda memiliki masalah dengan orang-orang yang tidak dapat melakukan pencarian biner, daripada itu bukan masalah dengan kurangnya bintang, seorang pembuat kode run-of-the-mill biasa harus dapat melakukannya.
quant_dev
15
Kapitalisasi judul Anda membuat saya membacanya sebagai PANDA :)
cthom06
13
Mereka tidak bisa menulis urutan Fibonacci? Itu sama sekali tidak sulit ... orang-orang ini sebenarnya tidak bisa menjadi programmer.
Ben B.
6
Graviton, semuanya tergantung pada gaji. Jika (misalnya) Anda menawarkan nilai pasar tiga kali lipat untuk gaji, maka Anda akan meminta orang-orang untuk meninggalkan pekerjaan mereka agar bekerja untuk Anda. Saya tidak menyarankan agar Anda menawarkan banyak hal, tetapi itu menggambarkan maksudnya. Jika Anda ingin resume yang bagus, maka Anda harus membayarnya.
riwalk
7
@ user1525 karena itu adalah sesuatu yang sepele, pengembang biasanya tidak memiliki masalah dalam mengimplementasikannya (rekursi atau tidak ada rekursi)
Darknight

Jawaban:

110

Saya sarankan Anda berhenti membaca Joel terlalu banyak. Apa yang ia tulis di blognya bertolak belakang dengan tanggapannya di situs ini, jadi aku tidak akan terlalu banyak mengambil kata-katanya.

Apa yang membuat seorang superstar dan mengapa perlu memiliki satu membuka diskusi yang panjang dan tidak ada tempat. Ini adalah elitisme dan tidak praktis.

Yang Anda butuhkan adalah orang yang:

  1. Ingin sekali melakukan apa yang Anda lakukan
  2. Akan menjadi programmer yang bersemangat
  3. Akan memiliki potensi untuk mempelajari apa yang diperlukan untuk melakukan pekerjaan Anda dengan benar

Sisanya tidak penting.

Anda tidak akan percaya berapa banyak lulusan muda di luar sana yang tidak menginginkan hal lain selain terjun ke dalam proyek CS-kuat semacam ini dan tidak pernah melihat pengkodean aplikasi CRUD. Beberapa waktu yang lalu saya adalah salah satu dari mereka, saya praktis bermimpi bergabung dengan sebuah proyek seputar pengembangan kompiler tetapi tidak dapat menemukannya. Mengapa tidak memberi kesempatan kepada salah satu dari mereka?

Saya tidak percaya AutoCAD ditulis oleh supermen. Sebagian besar proyek sukses dilakukan oleh orang-orang yang hanya ingin menyelesaikan pekerjaan dan mereka benar-benar menginginkannya.


kebanyakan resume yang kita lihat sedang melakukan aplikasi CRUD sederhana, atau kustomisasi SharePoint

Apa yang diharapkan jika sebagian besar pekerjaan hanya membutuhkan itu? Orang-orang mungkin telah mempelajari CS di universitas dan bahkan sangat pandai dalam hal itu, tetapi Anda tidak dapat mengharapkan mereka mengingatnya jika mereka tidak pernah menggunakannya dalam pemrograman praktis dalam 10 tahun. Jelas tidak ada yang akan membaca buku-buku CS lama setiap tahun hanya agar tetap segar jika pengetahuan ini tidak digunakan di mana pun.

user8685
sumber
11
Jawaban yang luar biasa!
33
Ya baik-baik saja, tapi saya sudah bekerja dengan orang-orang antusias yang bersemangat yang tidak punya petunjuk. Mereka sangat berat, dan Anda tidak ingin mereka berada di organisasi Anda. Jadi beberapa tes kemampuan BASIC untuk menyingkirkan schmucks yang benar-benar bodoh adalah hal yang sangat baik untuk dilakukan.
cepat,
3
Paragraf terakhir menjelaskan saya ke tee.
ozz
20
Melihat banyak "tes bakat" yang sama sekali tidak berguna, bahkan memiliki kesalahan mencolok (dan menunjukkannya membuat Anda gagal dalam tes, ketika menemukan dan menunjukkan kesalahan adalah bagian dari pekerjaan kami sebagai pengembang ...).
jwenting
2
@Developer Art, mungkin itu beruntung untukmu? Jika Anda tidak bisa meyakinkan mereka tentang kesalahan pertanyaan wawancara, bayangkan masalah apa yang akan Anda hadapi dalam pekerjaan.
Mark Ransom
41

Sebuah buku yang sangat saya sukai adalah Pertama melanggar semua aturan . Ini memiliki banyak informasi tentang perbedaan antara manajer rata-rata dan manajer yang baik. Salah satu wawasan kunci yang dikatakan berulang kali oleh manajer yang baik dirangkum oleh salah satu dari mereka dalam kalimat, saya tidak pernah menunggu terlalu lama untuk menemukan karyawan yang tepat, dan saya tidak pernah memecat karyawan yang salah dengan cukup cepat. Ya, memang menyebalkan membutuhkan waktu lama untuk disewa, tetapi perlu waktu lama.

Poin kedua yang harus Anda ingat adalah bahwa ketika diukur pada throughput proyek, ada puncak produktivitas untuk tim yang terdiri dari 5-8 orang. Anda tidak akan kembali ke produktivitas yang sama sampai Anda memiliki tim lebih dari 20 orang. Menjadi sangat, sangat berhati-hati tentang menumbuhkan tim melewati ukuran di mana dinamika tim kecil bekerja. Dan jika Anda akan tetap di bawah ambang itu, maka Anda benar-benar ingin 5-8 orang itu menjadi baik.

Kedua poin tersebut berbicara dengan tegas untuk mempertahankan persewaan yang tepat.

btilly
sumber
2
+1 untuk kutipan itu. Itu mencerminkan dengan sempurna apa yang saya sadari selama beberapa tahun terakhir.
Kris
Apa yang menarik dengan puncak 5-8, adalah bahwa begitu Anda mendapatkan 10 orang, Anda bisa berpisah :) Tentu saja, pekerjaan perlu dibelah juga, dan lebih disukai tidak secara acak ...
Matthieu M.
@ mattieu-m: Banyak orang memiliki teori itu. Jika kedua kelompok benar-benar perlu berinteraksi dengan banyak, maka itu tidak berhasil. Jika mereka dapat diberikan perhatian yang benar-benar terpisah, maka itu bekerja dengan baik.
btilly
26

Semua orang mengklaim "merekrut hanya 1 persen". Jika itu benar, 100% dari orang-orang yang dipekerjakan semuanya akan berada dalam "persentil 1 teratas" dari semua orang, jadi 99% dari semua orang akan menganggur (dalam bidang apa pun). Karena ini jelas bukan masalahnya, dan kita semua pernah mengalami orang-orang yang jelas-jelas tidak ada dalam kelompok itu (mengapa Anda menanyakan pertanyaan ini sama sekali ...) kita tahu ini tidak benar.

Bahkan organisasi yang hanya terdiri dari orang-orang seperti itu akan sangat tidak stabil. Terlalu banyak ego, terlalu banyak ide yang saling bertentangan. Itu bisa berantakan ketika semua orang melakukan hal sendiri, rawa dalam tidak pernah mengakhiri diskusi teoritis tentang manfaat relatif dari segalanya, atau berkembang menjadi pertandingan berteriak konstan ketika sentimen menyala ketika keputusan harus dibuat.

jwenting
sumber
13
Masalahnya adalah, hanya karena Anda hanya merekrut 1% kandidat teratas yang berlaku untuk Anda , tidak berarti Anda merekrut 1% pengembang teratas. 8 ') Sejauh * pahlawan super pergi, mereka sering dianggap sebagai masalah bagi anggota tim lainnya. Satu orang bekerja dengan 200% tetapi mengurangi 5 orang menjadi 50% bukanlah keuntungan bersih.
Mark Booth
2
+1: Secara statistik, kebanyakan orang berada dalam beberapa poin persentase dari rata-rata. Siapa pun yang tidak menghargai itu hidup di dunia mimpi. Dan Anda benar sekali: orang-orang yang terlalu jauh dari rata-rata mengganggu, apakah mereka kemampuannya di atas atau di bawah rata-rata.
Satanicpuppy
5
@ Setanpuppy: Secara statistik, diberi distribusi normal sekitar dua pertiga orang berada dalam satu standar deviasi dari rata-rata, dan sekitar 98% berada dalam dua standar deviasi. Ini tidak mengatakan apa-apa tentang standar deviasi, atau bahkan jika ada distribusi sewenang-wenang yang normal. Kemampuan pemrograman di antara programmer jelas miring, dan bahkan bisa menjadi ekor yang tepat dari distribusi normal.
David Thornley
11
Alasan utama mengapa bakat pemrograman di antara programmer mungkin miring dan / atau ekor yang tepat dari distribusi normal adalah jika bakat pemrograman pada manusia didistribusikan secara normal. Sub-sampel manusia yang menjadi programmer adalah sampel yang bias dari distribusi itu; yaitu, orang-orang yang rata-rata atau lebih buruk dalam pemrograman jarang menjadi programmer. Ini bisa membuat programmer "rata-rata" memiliki talenta di atas rata-rata relatif terhadap populasi pada umumnya, dan itu juga bisa membuat talenta distribusi programmer terlihat seperti ekor kanan dari distribusi normal.
Michael McGowan
2
@david: "Tidak ada yang bisa jauh di bawah rata-rata"? Saya berharap saya bekerja di tempat Anda bekerja.
Satanicpuppy
25

Hal pertama yang perlu Anda tanyakan adalah mengapa Anda mendapatkan resume yang tidak memenuhi standar yang Anda inginkan. Saya sudah bekerja dengan banyak orang baik, jadi mereka ada di luar sana, dan aplikasinya terdengar sangat menarik bagi saya. Jika Anda tidak dapat membuat orang yang dapat melakukan urutan Fibonacci dan pencarian biner (yang lebih sulit daripada yang tampaknya; menurut Knuth itu beberapa tahun antara publikasi pertamanya dan publikasi yang benar pertama), Anda melakukan sesuatu untuk mendorong yang bagus pergi.

Apakah Anda meminta lebih banyak keterampilan daripada yang Anda bayarkan? Apakah Anda beriklan di tempat yang salah? Apakah perusahaan Anda tidak menarik berdasarkan lokasi atau reputasi? Ini adalah masalah Anda yang pertama dan paling mendasar, dan yang harus segera Anda selesaikan. Anda dan kolega Anda tentu mengenal beberapa orang baik yang tidak bekerja untuk Anda. Tunjukkan pada mereka apa yang Anda miliki, dan tanyakan kepada mereka apakah mereka akan tergoda, dan jika tidak mengapa tidak. Anda mungkin terlalu dekat dengan masalah untuk memahaminya tanpa bantuan.

Jangan mempekerjakan orang karena merekalah yang terbaik. Pekerjakan orang karena mereka akan dapat melakukan sesuatu yang ingin Anda lakukan. Jika Anda mempekerjakan orang biasa-biasa saja karena itu yang berlaku, maka Anda perlahan-lahan akan kehilangan orang-orang baik, dan Anda akan berakhir dengan orang-orang yang aljabarnya goyah mencoba melakukan sesuatu dengan geometri komputasi. (Mempekerjakan orang biasa-biasa saja karena Anda memiliki pekerjaan untuk beberapa pemrogram biasa-biasa saja adalah hal lain, tetapi Anda harus dapat merekrut orang-orang berkualitas di mana Anda membutuhkannya.)

David Thornley
sumber
7
Karena departemen SDM sangat tidak kompeten dalam menyaring kandidat perangkat lunak. Persyaratan: 10 tahun dalam skrip kopi, 40 tahun pemrograman PHP, pendidikan: BS / BA
Incognito
1
@ user1525: Ini bisa jadi ketidakmampuan SDM, tetapi poin pentingnya adalah mencari tahu mengapa dan bagaimana cara memperbaikinya (atau menemukan bahwa itu tidak dapat diperbaiki, jadi sudah jelas bahwa sudah waktunya untuk melompat kapal). Saya tidak akan langsung mengambil kesimpulan. Jawaban Anda memang menyarankan pendekatan lain: minta orang-orang baik mengirimkan resume dan lihat apa yang HR lakukan dengan mereka.
David Thornley
18

"sebagian besar tidak dapat melakukan urutan Fibonacci dan pencarian biner sederhana"

Kriteria Anda tentu salah. Dalam kelompok saya, kita semua adalah fisikawan atau insinyur. Saya yakin tidak ada yang bisa melakukan pencarian biner karena kami tidak menghadiri kursus CS dan dalam kehidupan nyata kami menggunakan perpustakaan untuk itu. Saya bahkan akan mengatakan: seseorang yang menulis binsearch sendiri tidak tahu bagaimana fokus pada hal-hal penting.

Ini jauh lebih penting, jika kandidat cerdas dan cocok dengan kelompok. Jika Anda ingin memeriksa bakat pemrogramannya, beri dia pekerjaan untuk dilakukan di rumah. Catat berapa lama dia dan diskusikan hasilnya untuk mencari tahu apakah itu adalah karya asli para kandidat.

michael
sumber
3
Mungkin tidak diharapkan bahwa pemohon mendapatkan pencarian biner dengan tepat, tetapi jika Anda dapat memberikan beberapa petunjuk kepada pemohon, ia harus bisa mendekat. IMO, itu lebih menarik untuk melihat bagaimana orang mencoba untuk memecahkan tantangan yang disajikan kepada mereka daripada bagi mereka untuk memiliki ensiklopedia di kepala mereka.
DPK
11
Saya seorang ahli fisika dengan pelatihan dan saya dapat melakukan pencarian biner dengan mata tertutup dan dengan satu tangan terikat di belakang saya. Maaf, tetapi tidak tahu bagaimana menulis implementasi pencarian biner sederhana ... buruk. Tidak ada kata lain untuk menggambarkannya, hanya miskin.
quant_dev
ya kamu benar. Pencarian biner, setidaknya ide dasar, memang bisa dilakukan. Saya bisa melakukannya juga.
michael
... setidaknya ide dasar (walaupun saya tidak bisa melakukan Fibonacci tanpa terlebih dahulu mencari tahu apa itu). Tetapi tes seperti ini menempatkan orang dalam keuntungan yang baru saja menghadiri kelas cs atau hanya menyiapkan pertanyaan secara tidak sengaja. Lebih bermanfaat untuk memberikan kandidat contoh pemrograman dunia nyata. Ini menunjukkan bagaimana mereka memecahkan masalah yang lebih kompleks tanpa tekanan langsung dan mungkin juga menunjukkan kepada para kandidat, pekerjaan seperti apa yang Anda harapkan dari mereka (pilih contoh yang baik). Jauh lebih berguna daripada pertanyaan buku teks IMHO.
michael
2
Tidak mengetahui definisi deret Fibonacci dari atas kepala mereka tidak mengkhawatirkan. TETAPI, karena tidak dapat menulis program untuk menghitungnya setelah dijelaskan itu mengkhawatirkan (bahkan jika yang Anda harapkan dari mereka adalah menghitung subtotal dalam aplikasi CRUD yang sederhana!).
Stephen C. Steel
13

Saya pikir "merekrut yang terbaik" menjadi terlalu berlebihan.

Sebagian besar pekerjaan pemrograman adalah rutin dan tidak kreatif. Bahkan ketika mengerjakan proyek baru yang benar-benar kreatif. Sebagian besar adalah membosankan, dan sering didasarkan pada pola. ini terutama berlaku untuk UI.

Kebanyakan sistem modern juga mengharuskan begitu banyak orang untuk menulisnya, yang pada dasarnya, mereka semua tidak bisa menjadi yang terbaik. Kebanyakan orang rata-rata, bahkan jika tidak, mereka masih harus melakukan banyak tugas "rata-rata" seseorang.

Karena itu, menuntut kompetensi dasar dan persyaratan minimum yang masuk akal bukanlah tidak masuk akal dan bukan sesuatu yang harus Anda kompromikan.

Pikirkan tentang pembedahan rutin: Bergantung pada toleransi risiko Anda, Anda mungkin lebih suka meminta dokter biasa melakukan itu daripada menunggu 10 tahun agar Dekan sekolah kedokteran memiliki waktu untuk melakukannya. Itu tidak berarti Anda harus membiarkan tertib melakukan operasi.

Uri
sumber
Bukan untuk berdalih ... tetapi dokter "rata-rata", yang telah melakukan ratusan atau ribuan jenis pembedahan itu mungkin lebih disukai bagi Dekan fakultas kedokteran yang mungkin memiliki lebih banyak pengetahuan tetapi hampir tidak berpengalaman
JoelFan
8

"Mempekerjakan yang terbaik" cenderung berarti "merekrut yang terbaik yang saat ini tersedia secara kasar di tempat kita", dan berarti hal yang berbeda untuk perusahaan yang berbeda. Beberapa menginginkan codstar rockstar, yang lain menginginkan insinyur perangkat lunak yang teliti dan yang berikutnya menghendaki pengrajin perangkat lunak yang berpengalaman. Tidak ada "universal terbaik", jadi ingatlah itu, dan mungkin spec pekerjaan Anda menyarankan Anda mencari satu jenis programmer dan wawancara mengatakan Anda sedang mencari programmer tipe lain. Tiba-tiba, Anda tidak mendapatkan korek api.

Yang mengatakan, saya tidak suka bekerja dengan programmer begitu-begitu. So-so tidak ada hubungannya dengan pengalaman (mereka mungkin telah pemrograman selama 20 tahun dan masih tidak terlalu baik), tetapi semuanya harus dilakukan dengan bakat dan antusiasme. Jika hal-hal tersebut mempengaruhi salah satu dari keduanya, Anda memiliki masalah. Juga tidak ada gunanya mempekerjakan seseorang yang kontribusinya perlu dikerjakan ulang oleh anggota tim lainnya karena kode mereka tidak cukup baik. Semakin banyak gelandangan di kursi tidak selalu ada dalam jawaban, sayangnya lebih banyak gelandangan di kursi juga dapat berarti lebih banyak pekerjaan untuk anggota tim yang lebih baik karena mereka berusaha melakukan pekerjaan mereka dan membersihkan kekacauan yang begitu-begitu telah disampaikan oleh programmer. .

Beberapa orang tidak tampil sebagai bintang rock, tetapi adalah programmer tingkat menengah yang solid. Mereka bagus untuk ada di tim dan bukan itu yang saya maksud dengan "programmer begitu-begitu". Yang terakhir adalah seseorang yang hampir tidak menghindari dipecat setiap tahun pada waktu tinjauan kinerja.

Timo Geusch
sumber
1
huh, bahkan istilah "programmer rockstar" membuat saya ingin muntah.
ozz
6

Sebagai tipe Manajer, saya setuju mempekerjakan "1% teratas" tidak praktis, dan tidak perlu. Saran saya adalah menyewa tim yang tepat untuk membangun dan memelihara produk Anda (mungkin dua tim yang sangat berbeda, karena build vs maintain sangat berbeda dalam kebutuhan mereka)

Saya sangat menyarankan Anda mengidentifikasi orang-orang yang saat ini Anda miliki di tim Anda yang merupakan "orang-orang kunci" (mis. Menyelesaikan pekerjaan, memiliki sikap yang baik, dapat bekerja dengan ketidakpastian / persyaratan tingkat tinggi dengan baik, dll.) Dan kemudian mempekerjakan orang yang mereka miliki bekerja dengan di masa lalu (dan rasa hormat, jelas). Ini menghilangkan banyak ketidakpastian di sekitar proses wawancara, dan membantu membentuk tim.

Juga, lebih banyak "jangka panjang" - berinvestasi besar-besaran dalam program magang. Jika tim pemrograman Anda adalah 20 orang, dapatkan 5 pekerja magang setahun dan beri mereka pekerjaan nyata. Kembalikan satu atau dua yang Anda sukai setiap tahun dan bawa 5 variabel lebih acak. Ini mungkin cara terbaik untuk menjaga tim Anda diisi dengan programmer yang baik. Anda kemudian dapat menyewa di luar secara oportunis, dan meningkatkan standar bagi kandidat tersebut.

Seperti yang telah disebutkan, perhatikan proses wawancara Anda. Buat kandidat menulis kode (atau lebih baik, berjalan melalui solusi mereka untuk masalah "1 jam dibawa pulang") membuat mereka makan siang bersama tim. Kenali keterampilan teknis dan interpersonal mereka. Dan jangan pernah takut untuk mengatakan "tidak" bahkan ketika Anda putus asa untuk 20 orang lagi untuk proyek besar yang dimulai minggu depan.

Al Biglan
sumber
6

Dalam pengalaman saya, Prinsip Paretto juga berlaku untuk pemrograman: 80% pekerjaan diselesaikan oleh 20% pengembang dan sebaliknya. OK jumlahnya mungkin berlebihan. Pada kenyataannya, Anda akan memiliki sekitar 20% karyawan yang melakukan 50% pekerjaan (dengan pekerjaan yang saya maksud adalah pekerjaan yang baik, bukan hanya baris kode). Ini sebenarnya lebih mirip kurva lonceng. Jadi dalam tim 10, Anda akan memiliki 1 pahlawan, 2 orang hebat, 4 rata-rata dan 2-3 yang menyedihkan.

Banyak perusahaan menggunakan kurva Bell untuk menimbang penilaian. Begitu banyak tidak peduli seberapa cerah kandidat Anda, mereka akan jatuh ke level mereka. Anda tidak dapat memiliki tim di mana semua orang berada di level yang sama. Tidak terjadi

Burhan Ali
sumber
2
+1, saya setuju. Tapi saya pikir pertanyaannya adalah: Apakah Anda memerlukan "yang menyedihkan" (misalnya untuk semangat tim atau apa pun) atau apakah tim akan melakukan hal yang baik tanpa mereka? Dan bisakah Anda mengenali mereka dalam wawancara kerja?
nikie
10
Tentukan menyedihkan. Jika mereka adalah tukang kebun yang baik yang melakukan pekerjaan kasar yang membosankan tetapi tidak dapat menemukan lompatan keajaiban, Anda tetaplah mereka. Tetapi jika mereka hanya putus asa dan tidak dapat melakukan apa-apa, maka mereka adalah buang-buang ruang.
cepat,
Satu-satunya alasan untuk mempertahankan yang menyedihkan adalah karena Anda tidak dapat membuat seseorang lebih baik untuk menggantikannya. Mereka melakukan apa yang kita sebut "pekerjaan keledai": perubahan kecil atau besar yang tidak perlu banyak dipikirkan.
DPD
1
Apakah mungkin menemukan mereka dalam wawancara. Ya tergantung pada keterampilan pewawancara. Saya membiarkan mereka menangani beberapa program dan masalah texbook. Jika mereka melewati level ini saya memberi mereka beberapa masalah yang lebih kompleks untuk menilai apakah mereka dapat berpikir. Yang menyedihkan mungkin bagus dalam sintaksis tetapi hanya karena mereka mempelajarinya dengan menghafal tanpa benar-benar memahaminya. Mereka akan gagal dalam pemecahan masalah. Beberapa akan cukup banyak memberi tahu Anda bahwa mereka tidak dapat berpikir sendiri dan hanya dapat bekerja dalam Ctrl + C, Ctrl + V bahasa
DPD
4
Drone kerja keledai setidaknya bekerja. Ketika mereka ingin menulis ulang 10 tahun hal-hal yang dikembangkan di Haskell dengan beberapa tautan ke OCaml, dalam 3 minggu, dan segala sesuatu yang mereka sentuh berubah menjadi cr * p. Maka Anda BENAR-BENAR TIDAK INGIN MEREKA!
quick_now
4

Sudah ada banyak jawaban di sini tapi saya pikir masih ada satu hal yang perlu dibahas: dampak yang mempekerjakan orang-orang begitu-begitu pada kualitas perangkat lunak Anda dan bagaimana hal itu membuat hidup Anda sebagai seorang manajer jauh lebih sulit.

Jawaban untuk "apakah ada kebutuhan untuk mempekerjakan pengembang terbaik?" selalu YA gemuk besar. Tentu saja dalam kenyataan, ini tidak selalu memungkinkan. Kesalahan berbahaya yang saya pikir Anda lakukan dengan mempertimbangkan pertanyaan ini adalah berpikir "perangkat lunak kami sangat sederhana bahkan orang biasa bisa melakukannya". Ini salah.

Perangkat lunak Anda akan selesai, jangan ragu itu, tetapi mengharapkan hasil yang sangat berbeda dari tim yang sangat baik daripada dari tim yang begitu-begitu. Anda akan memiliki lebih banyak bug, lebih banyak masalah kinerja, lebih banyak masalah pemeliharaan dan skalabilitas, dan sebagainya. Anda harus mengasuh teman-teman Anda melalui masalah yang lebih rumit. Anda harus mengasuh orang-orang begitu-begitu melalui keputusan arsitektur yang tepat.

Jika Anda menerima ini, dan siap untuk mengelola ini, tidak apa-apa. Bersiaplah untuk proses dan hasil.

hbatista
sumber
+1. Iya. Gagasan bahwa Anda dapat mempekerjakan orang-orang yang bahkan tidak dapat menulis pencarian biner dengan bantuan dan meminta mereka menjadi apa pun selain bobot mati murni - mungkin produsen negatif neto - benar-benar menggelikan.
Tom Anderson
3

Saya pikir itu bukan masalah untuk mempekerjakan pengembang yang hebat. Tantangan sebenarnya adalah membuat mereka ingin bekerja untuk Anda.

Apakah perlu menyewa yang terbaik?
Saya percaya begitu. Pengembang hebat bukan hanya pengembang yang menyelesaikan semuanya tepat waktu. Tidak hanya individu seperti itu yang jauh lebih produktif daripada yang lain. Pengembang hebat juga memimpin dengan memberi contoh dan memberi inspirasi bagi anggota tim lainnya. Lainnya bisa sangat maju saat bekerja dengan mereka.

Oke, jadi Anda akan menurunkan standar Anda. Itu keren, mungkin Anda akan berubah pikiran setelah Anda mempekerjakan seseorang yang benar-benar buruk. Pertanyaan yang akan menjawab semua pertanyaan CS Anda dengan sempurna tetapi tidak dapat benar-benar menulis satu baris kode produksi. Semoga beruntung dengan itu :)

Paweł Dyda
sumber
3

Mari kita mundur selangkah.

Apa yang kita coba lakukan? Menulis perangkat lunak.

Mengapa kita pikir kita perlu menyewa yang terbaik? Karena anak Arnold yang aneh itu tidak bisa meretas jalan keluar dari kantong kertas basah dan sekarang semua SQL kacau dan saya tidak bisa masuk.

Oke, jadi apa yang terbaik ? Saya tidak tahu, dia mungkin seseorang yang menginginkan banyak uang dan memiliki resume enam kaki panjang dengan portofolio yang bagus dan bekerja di google atau sesuatu. Dia harus memiliki gelar, dan mungkin beberapa huruf di akhir namanya. Ya, itu kedengarannya yang terbaik bagiku, dan yang terbaik, maksudku seseorang yang bukan bocah Arnold. Oh, dan dia harus tahu cara melakukan omong kosong yang sangat keras yang saya dengar di sekolah seperti "menulis semacam gelembung" atau apa pun namanya. Saya akan meminta salah satu dari mereka untuk menyebutkan beberapa hal rumit yang harus mereka lakukan di sekolah, ya.

Kedengarannya seperti kamu tidak ingin anak Arnold yang aneh itu? Maukah kamu? Saya lelah memiliki kode kereta, hal-hal yang membutuhkan waktu lama untuk diselesaikan, dan orang-orang baru yang saya wawancarai memberi tahu saya bahwa saya harus menulis ulang semuanya!

Benar, jadi apa yang Anda minta anak Arnold lakukan? Buat situs web PHP, tulis beberapa jQuery, minta PHP melakukan beberapa CRUD dasar dengan MSSQL, dan ubah warna latar belakangnya.

Apakah itu terdengar seperti tugas yang cocok hanya untuk yang terbaik? Saya yakin yang terbaik bisa melakukannya, tetapi mungkin siapa saja yang memiliki keahlian yang tepat yang cocok dengan ini bisa melakukan ini.

Jadi, Anda tidak perlu yang terbaik? Benar, saya hanya perlu seseorang dengan skillet yang memenuhi tujuan saya.

Oh Ya.

Penyamaran
sumber
@ user1525, ini bukan aplikasi CRUD. Ini perangkat lunak teknik.
Graviton
Tidak selalu. Banyak pekerjaan di luar sana tidak memerlukan pengetahuan tentang struktur data, algoritma, atau kompleksitas komputasi. Tentu, itu bukan pekerjaan di pencarian google, tapi ada permintaan besar untuk itu. Lihat saja sebagian besar postingan di papan pekerjaan, "Saya perlu plugin jquery" atau "beri saya aplikasi iphone yang mirip dengan psd ini". Orang-orang menginginkan yang terbaik atau yang termurah.
Incognito
3

Judul pertanyaan Anda menyebutkan "Aplikasi Desktop Normal", tetapi teks Anda berbicara tentang perlunya menerapkan pengetahuan tentang komputasi geometri dan pemrograman linier. Itu adalah area aplikasi yang telah melahirkan program penelitian multi-dekade yang sangat besar dengan konsekuensi sosial yang besar dari setiap kemajuan (ingat, pemrograman linier, alokasi sumber daya abstrak ). Akibatnya, ada banyak pendekatan canggih untuk memecahkan masalah di bidang ini yang bekerja dengan sangat baik.

Sewa yang buruk

  • mungkin bahkan belum pernah mendengar tentang kelas masalah ini,
  • mungkin tidak terbiasa dengan solusi umum,
  • mungkin tidak akan tahu tentang hal-hal yang lebih baik yang ada di luar sana (petunjuk: kebanyakan undergrads tidak pernah mendengar tentang hal-hal mewah, jika mereka mendengar tentang masalah sama sekali), dan
  • hampir pasti akan membutuhkan waktu lama untuk mengimplementasikan hal-hal seperti itu (mengingat bahwa saya telah melihat beberapa dari mereka memberikan seminar pascasarjana yang lengkap tentang struktur data, termasuk profesor).

Dengan kata lain, pikirkan apakah Anda benar-benar mengerjakan sesuatu untuk pejalan kaki. Jika Anda, hebat, mempekerjakan harus jauh lebih mudah. Jika tidak, bertahanlah untuk seseorang yang dapat melakukan apa yang Anda butuhkan.

Phil Miller
sumber
Anda tidak perlu menulis ulang seluruh pustaka pemrograman geometri / linear komputasi; semua yang perlu Anda lakukan, sejauh aplikasi saya yang bersangkutan, adalah untuk dapat mengetahui cara melemparkan masalah ke dalam istilah pemrograman geometris / linear komputasi yang tepat dan tahu kapan / bagaimana menggunakan perpustakaan yang ada.
Graviton
2

Tentunya saya bukan programmer superstar menurut standar Joel. Meskipun demikian saya telah menulis beberapa proyek yang sukses dalam 20 tahun karir saya sebagai pengembang. Saya bisa menyelesaikan pertanyaan Anda. Tetapi kurang dari pengalaman saya di tempat kerja, di mana sebenarnya banyak pekerjaan yang lebih rumit dilakukan dengan meminta database Anda atau fungsi perpustakaan untuk melakukannya.

Tetapi jika Anda memutuskan untuk mempekerjakan orang yang kurang berpengalaman, Anda harus mempertimbangkan menggunakan teknologi yang mudah ditangani. Misalnya jika Anda berencana untuk menggunakan C ++ untuk keseluruhan proyek, maka batasi bagian C ++ ke pustaka yang ditulis oleh orang-orang terbaik Anda dan biarkan yang lain mengimplementasikan antarmuka pengguna dalam Visual Basic.

thorsten müller
sumber
2

Tuliskan nilai-nilai yang Anda cari di seorang karyawan yang akan bergabung dengan peringkat Anda.

Ketika satu-satunya nilai yang dihargai adalah kompetensi pemrograman, Anda akan menemukan diri Anda dikelilingi oleh orang-orang yang menghargai hal itu. Karena sebagian besar programmer yang benar-benar kompeten memiliki sistem nilai yang lebih rumit, mereka tidak akan bergabung dengan tim Anda.

Namun, kemungkinan besar Anda mencari orang yang inovatif, kreatif, dapat dipercaya, terpelajar, penasaran, belajar mandiri, ramah, kompeten dan berdedikasi. Tunjukkan bahwa perusahaan Anda memahami dan menghormati nilai-nilai ini dan bersedia membantu karyawannya mengembangkannya lebih lanjut.

Memahami dan merangkul nilai-nilai karyawan Anda saat ini dan mengkomunikasikannya dalam aplikasi pekerjaan Anda. Perusahaan yang baik, dengan sistem nilai yang berkelanjutan, menarik karyawan yang baik.

Dibbeke
sumber
-1: jika Anda mengatakan (dan OP berbicara tentang) uang tentu saja itu masuk akal. Saya tidak mengerti bagaimana jawaban ini akan membantunya. Anda pada dasarnya mengatakan bahwa dia tidak memasukkan cukup pemasaran dalam aplikasinya jika saya mengerti benar? Yah, mungkin itu akan membantu sedikit tetapi saya biasanya tidak melihat banyak orang yang sangat kompeten tidak menempatkan setidaknya jumlah nilai yang masuk akal pada .. ya .. kompetensi? .. seperti yang saya katakan, ganti "kompetensi pemrograman" dengan uang dan jawaban Anda sangat masuk akal tapi maaf saya tidak mengerti.
n1ckp
Jika Anda tidak mengerti komentar saya, mungkin Anda tidak boleh mengecilkannya. Bagaimanapun, apa yang saya maksud cukup sederhana. Seiring waktu, saya bertemu dengan beberapa programmer yang sangat baik. Mereka tahu bahasa, algoritma, matematika, fisika ... Namun, yang membuat mereka hebat pada awalnya adalah ketertarikan pada lebih dari sekadar keahlian. Mereka sering menghargai keingintahuan dalam diri mereka sendiri dan orang lain. Mereka melihat pengetahuan independen sebagai sifat penting (atau nilai) atau mereka terinspirasi oleh orang-orang di sekitar mereka yang kreatif. Seringkali, nilai-nilai ini lebih penting daripada pendapatan mereka.
Dibbeke
@ Dbekbeke: baik saya mengundurkannya juga sebagian karena saya tidak melihat bagaimana ini terkait dengan pertanyaan. Kata-kata kasar yang bagus dan saya tidak setuju dengan komentar terakhir Anda (meskipun jawaban Anda adalah sesuatu yang lain) tetapi saya masih gagal melihat bagaimana itu akan membantu OP atau menjawab pertanyaan yang sebenarnya.
n1ckp
@ n1ck Ketika Anda mengatakan pemasaran, saya mulai bertanya-tanya apakah mendasarkan proses perekrutan pada nilai-nilai dasar benar-benar sama. Saya tidak tahu, tetapi saya menyadari bahwa membangun jejaring sosial kepercayaan dan rasa hormat sangat dipengaruhi olehnya. Ini pada gilirannya mempengaruhi reputasi perusahaan Anda dan membantu Anda menarik pengembang perangkat lunak terkemuka itu.
Dibbeke
@ Dbekbeke: tidak yakin apakah saya mendapatkan komentar terakhir Anda, tetapi saya rasa saya setuju setidaknya dengan Anda. Tetapi sekali lagi, saya tidak yakin ini membantu OP (walaupun saya melihat lebih banyak bagaimana hal itu terkait dengan pertanyaan sekarang). Apa yang membuat saya mengatakan bahwa ia tidak pernah membicarakan apa pun tentang perusahaannya, jadi ya mungkin itu bisa menjadi penyebab bahwa perusahaannya memiliki reputasi buruk, tetapi saya pikir Anda langsung mengambil kesimpulan ..
n1ckp
1

Di organisasi mana pun Anda memiliki orang-orang dengan pengalaman lebih banyak dan orang-orang dengan kurang. Bukan hanya itu, tetapi seorang ahli dalam satu bidang bisa menjadi pemula di bidang lain. Tentu saja seorang amatir yang antusias dapat melakukan lebih banyak kerusakan daripada kebaikan bagi basis kode, tetapi itulah cara mereka belajar - dari memperbaiki kesalahan mereka dan mendiskusikan pengalaman mereka dengan kolega mereka yang lebih berpengalaman.

Saran saya adalah bahwa daripada mencoba mempekerjakan bintang, Anda mencoba untuk merekrut orang-orang yang cukup cerdas, akan cocok dengan budaya perusahaan Anda, tertarik untuk belajar dan menghargai keterbatasan mereka sendiri.

Mark Booth
sumber
1

Tentu saja Anda harus bercita-cita untuk mempekerjakan hanya yang terbaik. Itu tidak secara otomatis berarti Anda akan berhasil dalam hal itu - hanya ada begitu banyak "yang terbaik" untuk berkeliling, dan akan ada pemenang dan pecundang dalam pertempuran untuk menarik mereka. Sebagian besar akan datang dari bakat dan kemauan Anda untuk bekerja keras pada masalah, dan sumber daya yang tersedia untuk Anda.

Menyerah sebelum Anda mulai adalah cara paling pasti untuk kalah.

Mark tebusan
sumber
1

Pencarian biner adalah masalah yang menarik karena diketahui bahwa sebagian besar programmer akan benar-benar berjuang untuk menulisnya dengan benar ( Bently menulis tentang hal itu dalam Pemrograman Mutiara ). Mungkin tidak terlalu buruk untuk mengujinya asalkan Anda tidak mengesampingkan kandidat berdasarkan kegagalan mereka untuk menyelesaikannya. Jika mereka menyelesaikannya dengan cepat dan benar maka setidaknya itu mengisyaratkan pada tipe programmer apa mereka sehingga Anda memiliki lebih banyak informasi dalam kasus tertentu.

Segera
sumber
1

Anda perlu menyewa yang terbaik. tetapi istilah ini telah dikutip di luar konteks beberapa kali. Anda perlu menemukan kandidat terbaik dengan keterampilan yang diperlukan untuk posisi itu, dan bukan programmer terbaik secara keseluruhan. Pengembangan perangkat lunak luas dan tidak setiap posisi membutuhkan pengetahuan teknis yang sama.

Tanyakan kepada diri Anda pertanyaan ini (Anda sudah melakukannya ..): Jika Anda memiliki insinyur lain di posisi yang sama selama 5 tahun, apakah Anda berharap dia akan mengingat seri fibonanci dan pencarian biner?

jika jawabannya tidak, ubah pola wawancara Anda. Mungkin Anda perlu mengetahui selusin algoritma pencarian jika Anda ingin bekerja pada aplikasi pencarian seperti google atau bing. Semua orang hanya menggunakan map.get ("");

targetkan wawancara Anda dengan posisi yang dibutuhkan, bukan programmer yang baik untuk buku teks-generik.

Wah
sumber
1

Jika Anda benar-benar tidak peduli dengan kualitas maka saya sarankan menggunakan salah satu situs web outsourcing dan mulai dengan proyek-proyek kecil. Kemudian Anda dapat membayar mereka jika mereka dapat melakukan pekerjaan itu, dan memiliki cara mudah untuk memberikan jaminan jika mereka tidak bisa.

Namun, saya mempertanyakan apakah benar-benar ada banyak pengkodean rutin dalam aplikasi rekayasa desktop. Mereka bisa sangat kompleks, dan sebagian besar programmer tidak begitu pandai mengelola kompleksitas. Anda dapat dengan mudah membuat banyak kode lawas instan yang akan mengikat tim Anda selama bertahun-tahun yang akan datang. Secara umum, perekrutan pertama untuk proyek baru adalah yang paling penting dan akan mengatur nada untuk seluruh proyek.

Brian Slesinsky
sumber
0

Saya setuju sepenuhnya dengan sebagian besar komentar di atas yang merujuk pada menyesuaikan seseorang dengan suatu masalah. Ini biasanya menghasilkan hubungan jangka panjang daripada menyewa seorang superstar untuk mengerjakan masalah biasa - yang hanya akan membuatnya frustrasi untuk pergi dengan cepat.
Karena itu, Anda harus selalu mencoba mempekerjakan untuk perusahaan Anda daripada posisi tertentu. Karena pria yang sama ini akan beralih antar tim cepat atau lambat dengan kontak pribadi dll. Dan dia mungkin berubah menjadi bobot mati di tempat lain. Pastikan perusahaan Anda memiliki pedoman transfer internal yang sangat ketat dan bahwa Anda memiliki gambaran yang jelas tentang apa yang akan Anda lakukan di tim Anda selama beberapa tahun ke depan sebelum mempekerjakan seseorang yang Anda pikir mungkin tidak memenuhi standar perusahaan (tetapi akan menyelesaikan masalah saat ini) ). Saya telah melihat terlalu banyak kasus di mana mediokritas dalam pengembang telah membuat tim bekerja ekstra keras untuk menyesuaikan diri dengan mereka.

Subu Sankara Subramanian
sumber