it-swarm-id.com

Seperti apa "contoh kode" saya terlihat?

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 juga khawatir bahwa kode saya tidak dapat berdiri sendiri, tapi saya lebih merupakan 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 cenderung menguntungkan ke arah programmer?

Semua ide atau saran disambut!

24
thesunneversets

Saya ingin melihat kode bersih :

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

Itu berarti:

  • Fungsionalitas - Beberapa bit fungsionalitas sederhana yang non-sepele (sekelompok getter/setter tidak akan menunjukkan bahwa Anda tahu apa-apa)
  • Gaya konsisten, bersih - Populer atau paling tidak umum gaya casing, lekukan, jarak dan braket
  • Penamaan Bagus - Nama berkualitas - jangan gunakan i kecuali 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 baik pemisahan-dari -concerns (antar metode). Dan ini adalah saat 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, lalu meminta Anda untuk sampel dari proyek ini, dan bertanya apa yang mengharuskan Anda untuk menulisnya atau bagaimana perkembangannya, saya pikir proses akan menjadi bukti pembohong. Saya pikir sebagian besar kandidat yang akan kebohongan akan menunjukkan masalah di bidang lain.

17
Nicole

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 kesempatan 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:

  • Layak untuk memecahkannya hanya untuk bersenang-senang, dan merupakan latihan yang bagus.
9
whatsisname
  • 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.
6
Karl Bielefeldt

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

Bersih itu baik, pemecahan masalah itu baik, tetapi kode yang benar lebih baik. Seorang programmer yang baik tahu kapan dia ditipu oleh programmer lain, sehingga kepercayaan diri bisa turun.

Membaca kode orang lain adalah seperti tarian berhubungan seks: Anda tahu kapan itu adalah hal yang nyata, dan jika orang lain berpura-pura, pada akhirnya bencana akan terjadi. (baru sadar kutu buku sungguhan tidak tahu cara 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/keterampilan Anda.

3
Machado

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?)

2
HLGEM

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 berupa sesuatu yang Anda bangga dari. Jika Anda tidak memiliki setidaknya satu dari itu, Anda tidak memiliki identitas.
  2. Kematangan: 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 yang rumit mudah dimengerti.

Aspek tingkat rendah lebih sederhana:

  1. Gaya: Kode harus bersih, konsisten (mengikuti beberapa pedoman yang ditetapkan), dan didokumentasikan dengan baik.
  2. Kemasan: 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 sampel dalam bahasa untuk posisi itu, serta yang mereka rasa paling kuat. Memberi ide bagus 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 (mis., 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, sama seperti beberapa 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 (mis., 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.

0
Namey

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.

0
Chris Knight