Seperti apa "contoh kode" saya terlihat? [Tutup]

24

Saya baru saja melakukan wawancara telepon yang cukup baik (untuk posisi terkait CakePHP, bukan karena itu penting untuk pertanyaan). Pewawancara sepertinya terkesan dengan resume dan kepribadian saya. Namun, pada akhirnya, dia meminta saya untuk mengirim email kepadanya contoh kode dari proyek kerja saya yang sudah ada, "untuk memeriksa Anda tidak diam-diam seorang programmer yang mengerikan, ha ha!"

Saya tidak terlalu khawatir bahwa kode saya tidak dapat berdiri sendiri, tetapi saya sangat banyak programmer menengah daripada seorang ahli. Apa jebakan jelas yang harus saya pastikan sampel kode saya tidak jatuh ke dalam, jika mereka mengesampingkan saya di tempat? Kedua, dan ini mungkin bagian yang lebih sulit dari pertanyaan untuk dijawab, fitur apa dalam contoh kode yang akan sangat mengesankan sehingga mereka akan langsung membuat Anda lebih condong ke arah programmer?

Semua ide atau saran disambut!

pengaturan arus
sumber
2
Apakah ada persyaratan pada sampel kode untuk dikirim? Sepertinya tidak ada gunanya, siapa pun dapat menyalin / menempelkan kode yang indah dari web. Kecuali mereka berusaha menyingkirkan orang-orang yang bahkan tidak bisa melakukan hal itu dengan benar ...
FrustratedWithFormsDesigner
5
Hanya untuk iseng, Anda dapat mengirim skrip Perl yang dalam bentuk namanya ...;)
FrustratedWithFormsDesigner
2
@thesunneversets: Jadi saya kira kode sumber yang benar-benar cantik dari proyek pribadi Anda keluar ...;) Serius, ini bisa dengan mudah dipalsukan. Dan apakah perusahaan Anda saat ini baik-baik saja dengan memberikan sampel yang representatif dari kode sumber Anda? Apakah boleh jika beberapa kode ditulis oleh rekan kerja (mungkin file bolak-balik antara beberapa orang dari waktu ke waktu)?
FrustratedWithFormsDesigner
2
Implikasi etisnya sedikit mengkhawatirkan ... tetapi hanya sedikit. Saya tidak berpikir saya jatuh ke dalam perangkap spionase industri. Sedangkan untuk rekan kerja, sayangnya hanya dua orang yang mendapatkan basis kode ini, dan kode orang lain berantakan, jadi saya sendiri! :)
thesunneversets
4
@thesunneversets, memberikan kode atasan Anda bukan hanya tidak etis, di banyak tempat itu ilegal. Jangan lakukan itu.
HLGEM

Jawaban:

17

Saya ingin melihat kode Bersihkan :

Clean code : Kode perangkat lunak yang diformat dengan benar dan secara terorganisir sehingga pembuat kode lain dapat dengan mudah membaca atau memodifikasinya.

Itu berarti:

  • Fungsionalitas - Beberapa fungsionalitas sederhana yang non-sepele (sekelompok getter / setter tidak akan menunjukkan bahwa Anda tahu apa-apa)
  • Konsisten, gaya bersih - Gaya casing populer, atau paling tidak umum , lekukan, jarak dan braket
  • Penamaan Bagus - Nama berkualitas - jangan gunakan ikecuali itu satu-satunya nilai kenaikan. Jangan gunakan nama variabel yang tidak masuk akal.
  • Atribut lain dari kode Bersih - Praktik yang baik pada pemeriksaan kesalahan, kondisi, loop, metode kenyamanan atau metode utilitas, dan pemisahan yang baik (antara metode). Dan ini adalah waktu yang tepat untuk menjadi 100% KERING - tidak ada pengulangan!

Anda ingin mengirim mereka sesuatu yang cukup kompleks untuk menjadi menarik tetapi cukup bersih sehingga pengembang yang baik dapat segera memahami apa yang dilakukannya.

Beberapa komentar di atas tampaknya berkaitan dengan betapa mudahnya memalsukan ini. * Jika Anda ingin melindungi dari hal ini, maka mungkin kirimkan deskripsi cepat mengenai tujuan dan riwayat kode dalam email.


* Paling tidak jika pewawancara bertanya tentang proyek-proyek sebelumnya di muka, kemudian meminta Anda untuk sampel dari proyek ini, dan bertanya apa yang mengharuskan Anda untuk menulisnya atau bagaimana berevolusi, saya pikir prosesnya akan cukup pembohong-bukti. Saya pikir sebagian besar kandidat yang akan berbohong akan menunjukkan masalah di bidang lain.

Nicole
sumber
Jika Anda meminta orang tersebut untuk menjelaskan kode dan mereka tidak dapat mereka tidak menulisnya atau mereka menyesuaikan kode orang lain dalam pemeliharaan tanpa repot-repot memahaminya terlebih dahulu. Luar biasa bagi saya berapa banyak orang yang telah saya wawancarai selama bertahun-tahun yang tidak dapat menjelaskan sampel mereka sendiri.
HLGEM
Tambahkan beberapa komentar jika penanda Anda membenci kode bersih.
Ewan
9

Ketika saya sedang mencari pekerjaan, saya memecahkan banyak pertanyaan kontes pemrograman ACM, dalam beberapa bahasa yang berbeda, dan menggunakannya untuk contoh kode sejak saat itu. Saya pikir mereka membuat contoh kode yang baik karena:

  • Mereka memecahkan masalah yang menantang
  • Masalahnya tidak memerlukan banyak konteks, ditambah mudahnya mendapatkan pertanyaan
  • Kode yang ditulis tidak memiliki risiko IP yang terkait dengannya.
  • Setiap masalah dapat secara wajar ada dalam satu file, dan seringkali tidak terlalu lama, sehingga harus mudah bagi siapa saja untuk dikompilasi, dan menguji solusi Anda, dan dapat menggunakan data uji dari pertanyaan.
  • Menunjukkan bahwa Anda dapat memecah masalah yang kompleks menjadi potongan-potongan kecil.
  • Jika Anda ditanya tentang bagaimana aspek-aspek dari solusi Anda bekerja, itu memberi Anda peluang besar untuk menunjukkan Anda tahu apa yang Anda bicarakan, terutama jadi jika sudah bertahun-tahun tetapi Anda dapat dengan cepat menguraikan apa yang sedang terjadi.

Dan kemudian, kode yang Anda buat harus jelas, konsisten, mudah dibaca, dan mudah dimengerti.

Dan terakhir:

  • Ada baiknya memecahkannya hanya untuk bersenang-senang, dan merupakan latihan yang bagus.
Apa namanya
sumber
Ini solusi hebat. Saya akan melakukan ini. Apakah ada pertanyaan spesifik yang paling Anda sukai?
zkent
1
Sebagai komentar dari saya, saya pikir memiliki sampel kode file tunggal belum tentu merupakan ide bagus kecuali Anda melamar posisi untuk mengoptimalkan kode atau algoritma. Kode tentu tidak boleh besar, tetapi harus agak mewakili apa yang sebenarnya dapat Anda capai (misalnya, jika Anda dapat menulis kode OO yang baik dan memecah kode menjadi modul secara wajar, itu harus menunjukkan hal itu).
Namey
6
  • Ini harus mengkompilasi / menafsirkan kesalahan dan peringatan gratis pada tingkat keketatan tertinggi.
  • Seharusnya bukan kode boilerplate yang Anda tulis setiap hari. Jadikan unik dan menarik sehingga jelas Anda tidak menyalin / menempelnya.
  • Seharusnya ada beberapa keputusan desain yang menarik dengan komentar yang menjelaskan bagaimana / mengapa Anda membuatnya.
  • Usahakan tidak lebih dari 2-3 halaman yang dicetak.
  • Itu harus dalam bahasa yang Anda lamar.
  • Seharusnya tidak membuat otakku sakit ketika aku membacanya pertama kali. Mintalah seorang teman memeriksanya, atau memposting di codereview.
Karl Bielefeldt
sumber
3

Nah, jika saya mewawancarai Anda, saya ingin melihat kode Anda .

Bersih itu baik, pemecahan masalah itu baik, tetapi kode sebenarnya lebih baik. Seorang programmer yang baik tahu kapan dia di-scammed oleh programmer lain, sehingga kepercayaan diri bisa turun.

Membaca kode orang lain seperti menari berhubungan seks: Anda tahu kapan itu hal yang nyata, dan jika orang lain berpura-pura, pada akhirnya bencana akan terjadi. (Baru sadar kutu buku nyata tidak tahu bagaimana menari)

Percayalah pada diri sendiri dan kemampuan coding Anda . Kecuali jika Anda benar-benar mengenal pewawancara Anda, Anda tidak dapat mengantisipasi apa yang dia harapkan dari gaya pengkodean Anda.

Machado
sumber
10
Saya suka bahwa Anda tidak berpikir kutu buku bisa menari tetapi Anda yakin akan kehebatan seksual mereka! : D
thesunneversets
Nah, saya hanya melihat terlalu banyak bencana sendiri ... :)
Machado
Di sekolah saya, satu-satunya orang yang muncul untuk kelas / bola dansa sosial adalah jurusan teknik.
Eva
Anda harus mengganti seks dengan beberapa referensi game agar lebih akurat :)
zkent
2

Juga sangat berhati-hati bahwa itu BUKAN kode dari atasan Anda saat ini (Mereka memilikinya, Anda tidak dan saya jamin mereka tidak akan suka Anda membagikannya.). Ambil sesuatu yang Anda banggakan dan kerjakan sendiri agar tidak menjadi spesifik bagi perusahaan (singkirkan referensi apa pun ke tabel basis data atau nama server mereka, dll.). Apa pun yang Anda lakukan jangan mengirimkan kode yang memiliki kesalahan atau teknik yang buruk untuk jenis kode itu (saya mungkin akan menolak seseorang yang mengirimkan kursor ketika operasi berbasis set akan lebih sederhana dan berkinerja lebih baik ketika meninjau kode SQL. Ada teknik serupa untuk bahasa lain yang ada di sana untuk menyelesaikan satu masalah masalah yang relatif jarang yang dapat digunakan untuk masalah lain yang lebih umum tetapi bukan pilihan terbaik untuk masalah lainnya. Apakah kalimat itu masuk akal?)

HLGEM
sumber
Saya setuju, benar-benar mengolahnya lagi sehingga tidak lagi berisi informasi spesifik perusahaan sepertinya ide yang bagus. Etika itu penting - terima kasih atas tipnya!
theunneversets
0

Saya akan posting kedua dari Renesis tentang kode bersih, tetapi akan menambah daftar memasok tes unit kualitas dan didokumentasikan dengan baik untuk kode yang Anda kirimkan. Seorang programmer yang baik harus menulis unit test untuk kode mereka.

Chris Knight
sumber
0

Sebagai satu pendapat dari seseorang yang meminta sampel kode ketika mengevaluasi kandidat, ada beberapa fitur tingkat tinggi (isi kode) dan beberapa fitur tingkat rendah (struktur kode). Fitur tingkat tinggi:

  1. Identity : Rasa kode. Jika Anda menyebut diri Anda sebagai pembuat kode UI / HCI, saya ingin melihat tampilan / perasaan untuk sesuatu yang visual ketika saya menjalankannya. Jika Anda seorang pembuat DB, saya ingin melihat sesuatu yang menarik dengan representasi atau analisis data. Sampel harus menjadi sesuatu yang Anda banggakan . Jika Anda tidak memiliki setidaknya satu dari itu, Anda tidak memiliki identitas.
  2. Kedewasaan : Apakah Anda mengubah strategi untuk masalah yang berbeda? Apakah Anda memecahkan masalah yang menarik? Apakah kode atau pendekatan mudah diperluas ke masalah yang sama? Di sisi lain, apakah saya merasa seperti sedang melihat anggota komune kultus kargo?
  3. Komunikasi : Apakah kode dengan mudah menjelaskan apa yang dilakukannya dan mengapa? Ini tidak berarti kodenya harus sederhana. Sebenarnya, ini adalah bonus untuk membuat kode rumit mudah dimengerti.

Aspek tingkat rendah lebih sederhana:

  1. Gaya : Kode harus bersih, konsisten (mengikuti beberapa pedoman yang ditetapkan), dan didokumentasikan dengan baik.
  2. Pengemasan : Harus ada minimum readme pendek, versi runnable, dan tes runnable. Readme harus memberi tahu saya cara menjalankan dua yang terakhir, serta mengapa Anda menunjukkan contoh kode khusus ini.
  3. Bahasa : Saya biasanya meminta seseorang untuk mengambil sampel dalam bahasa tersebut untuk posisi tersebut, serta yang mereka rasa paling kuat. Memberi ide bagus tentang langit-langit seseorang saat ini.

Untuk kandidat yang baik, saya berharap sampel menjadi: A) Sampel kecil antipeluru atau B) Bagian yang baik dari proyek menarik yang lebih besar (misalnya, modul dari repo pribadi Github). Saya berharap mereka menjadi proyek pribadi atau proyek akademik. Jika mereka mengirim satu dari proyek berbayar, saya berharap catatan bahwa mereka diberi izin untuk menggunakannya. Jika saya tidak mendapatkan catatan itu, saya akan memotong mereka dari kandidat (kandidat yang lemah) atau bertanya kepada mereka tentang hal itu selama wawancara (kandidat kuat). Tidak memiliki izin akan menjadi bendera merah besar (mungkin tidak dapat diatasi). Untuk kandidat yang maju, saya berharap penafian mencatat bahwa beberapa sampel sumber terbaik mereka tidak dapat ditampilkan karena dilakukan sebagai bagian dari pekerjaan mereka. Namun, saya kemudian mengharapkan kesaksian yang memancar tentang mengapa mereka bangga dengan desain yang tidak dapat dipertontonkan itu dan bagaimana mereka menyukainya seperti anak kecil.

Akhirnya, seperti halnya sebagian orang mencela bahwa "Oh, seseorang hanya bisa mendapatkan sampel kode dari internet," argumen tandingannya adalah bahwa kebanyakan orang yang tidak mengerti kode kualitas produksi yang baik juga tidak memahaminya ketika mereka melihatnya . Selain itu, orang dapat selalu memeriksa baris khusus untuk kode Google. Juga, paling-paling, mencuri kode akan membuat seorang kandidat diwawancarai di mana mereka mempermalukan diri mereka sendiri ("Jadi mengapa Anda melakukannya dengan cara ini ...?").

Sebagai catatan terakhir pada kode dari pekerjaan sebelumnya: Hanya saja, jangan. Dari sudut pandang SDM, meminta kode dari pekerjaan sebelumnya tidak pantas dan merupakan tanda bahaya tentang perusahaan. Anda berdua akan memiliki tanggung jawab hukum (yaitu, Anda berdua dapat dituntut) dan itu menunjukkan bahwa mereka tidak tahu apa yang mereka lakukan. Kode yang dilakukan untuk pemberi kerja sebelumnya tidak boleh diberikan kecuali kode tersebut sudah tersedia untuk umum atau Anda memiliki izin eksplisit dari pemberi kerja itu. Lebih buruk lagi, di perusahaan besar, atasan langsung Anda mungkin tidak memiliki kekuatan untuk memberi Anda izin, jadi bersenang-senang dengan departemen hukum dalam kasus itu? Saya yakin mereka akan sangat senang untuk mengekspos IP mereka untuk karyawan yang keluar.

Bernama
sumber
Saya juga akan mencatat bahwa, dalam pengungkapan penuh, saya memberikan sampel kode ke laboratorium sekolah pascasarjana di mana saya diterima untuk gelar PhD. Sampel kode ini adalah kode lengkap untuk robot otonom (5-10k baris), dengan tiga file tertentu dipilih. Dokumentasi terhormat, tetapi tidak murni. Jika saya harus mengulanginya lagi, saya mungkin tidak akan membawa versi cetak kode ke wawancara di tempat saya (bisa membawa 100 halaman mengatakan "ROOKIE MISTAKE" dalam huruf besar). Saya memang menerima beasiswa penuh, jadi itu tidak terlalu palsu. Moral: Terlalu banyak> = terlalu sedikit.
Namey