Haruskah saya khawatir tentang tugas rekayasa ulang yang diberikan selama proses wawancara? [Tutup]

27

Baru-baru ini saya melakukan wawancara telepon dengan perusahaan. Setelah wawancara telepon itu, saya diberitahu untuk menyelesaikan tugas pemrograman pendek (program kecil; tidak boleh lebih dari tiga jam). Saya hanya diinstruksikan secara langsung untuk menyelesaikan tugas dan menyerahkan kode. Saya diberi kebebasan penuh untuk menggunakan bahasa apa pun yang saya inginkan dan tidak diberi tahu cara memasukkan kode.

Segera saya berencana untuk melemparkannya ke Github, menulis test suite untuknya, menggunakan Travis-CI (integrasi berkesinambungan gratis untuk repositori Github publik) untuk menjalankan suite tes, dan menggunakan CMake untuk membangun file Linux untuk Travis-CI. Dengan begitu, saya tidak hanya dapat menunjukkan bahwa saya memahami cara menggunakan Git, CMake, Travis-CI, dan cara menulis tes, tetapi saya juga dapat dengan mudah menautkan ke halaman Travis-CI sehingga mereka dapat melihat output dari tes tersebut. Saya pikir itu akan membuatnya sedikit lebih nyaman bagi pewawancara.

Karena saya tahu teknologi-teknologi itu dengan baik, pada dasarnya tidak akan ada waktu untuk tugas itu.

Namun, saya agak khawatir bahwa melakukan semua ini untuk tugas yang relatif sederhana akan terlihat buruk. Walaupun itu tidak akan menambah lebih banyak waktu bagi saya, saya tidak ingin mereka berpikir saya menghabiskan terlalu banyak waktu untuk hal-hal yang seharusnya sederhana.

DormoTheNord
sumber
5
Saya akan berhati-hati memberikan jawaban untuk masalah wawancara di github, karena beberapa perusahaan suka merahasiakan masalah mereka.
Scroog1
7
Pertanyaan-pertanyaan tersedia untuk umum di blog mereka (mereka mengirimi saya tautan ke posting blog), jadi saya tidak berpikir mereka khawatir dengan itu.
DormoTheNord
3
@ DormoTheNord Saya katakan Anda tidak over-engineering: memiliki proses pengembangan yang baik adalah sesuatu yang sama sekali berbeda dari over-engineering, dan (IMO) pertanda baik.
K.Steff
3
Saya akan menghabiskan beberapa waktu ekstra untuk mendokumentasikan area abu-abu dalam spesifikasi masalah, asumsi, batasan, .... Tunjukkan bahwa Anda tidak hanya menyelam dalam pengkodean, tetapi merenungkan masalah dan konteksnya.
HABO
4
@DormoTheNord Pertanyaannya mungkin bersifat publik, tetapi jawaban Anda juga. Ini akan tersedia untuk orang yang diwawancarai, jika mereka dapat menemukannya. Itu , mereka mungkin tidak akan suka.
Izkata

Jawaban:

29

Sebagai pewawancara saya akan senang melihat pengetahuan tentang proses pengembangan perangkat lunak yang ditunjukkan oleh pendekatan ini; sebagai lawan dari hanya penulisan kode.

Secara khusus, memiliki test suite bahkan untuk masalah yang sangat sederhana akan menjadi pertanda baik (bahkan level FizzBuzz). Saya telah melihat kandidat mengajukan solusi yang bahkan tidak menyelesaikan masalah dan serangkaian tes sederhana akan menunjukkan kepada mereka hal ini. Juga, memiliki sejarah komit memungkinkan saya untuk mendapatkan ide dari proses pemikiran yang telah digunakan kandidat untuk mendapatkan solusi.

Di sisi lain, saya tahu orang-orang ditolak oleh beberapa perusahaan pada tahap awal proses over-engineering. Namun, dalam banyak kasus, hal ini disebabkan oleh rekayasa yang berlebihan dari solusi yang belum tentu proses yang digunakan.

Gober1
sumber
2
Akankah Anda melangkah lebih jauh dengan mengatakan bahwa jika sebuah perusahaan menolak saya karena melakukan apa yang saya rencanakan, itu akan menjadi tanda bahwa perusahaan tidak menghormati metodologi pengembangan perangkat lunak dan bahwa saya lebih suka tidak bekerja untuk perusahaan itu?
DormoTheNord
7
Saya tidak akan sejauh itu, karena ada sejumlah keberuntungan (sayangnya). Anda mungkin mendapatkan satu pewawancara yang tidak menyukai pendekatan itu; atau mereka mungkin berada dalam suasana hati yang buruk hari itu dan tidak ingin melihat melalui data tambahan yang disediakan oleh pendekatan ini. Yang mengatakan, biasanya tidak ada salahnya mengklarifikasi tingkat detail yang mereka inginkan. Juga, mengajukan satu atau dua pertanyaan klarifikasi bisa menjadi pertanda baik bagi pewawancara juga (meskipun tidak terus-menerus membombardir mereka dengan pertanyaan yang tidak diinformasikan, jelas).
Scroog1
+1 - selama Anda tidak mengurangi solusinya, saya ingin melihat unit test dan apa pun yang Anda lakukan tanpa diminta.
Telastyn
1
Terlalu banyak untuk melihat melalui risiko dapat dikurangi dengan mengirimkan kedua pangkalan github link, dan tautan langsung ke hanya kode sumber untuk tes untuk malas / sibuk.
Dan Neely
15

Memiliki sebagai orang yang diwawancarai seseorang yang memahami hal-hal seperti kontrol versi, CI, pengujian unit dan sejenisnya akan menjadi langkah maju pada apa yang biasanya saya lihat.

Meskipun, bagi saya, hal yang paling penting adalah bahwa masalahnya diselesaikan, dan dipecahkan dengan baik, mengetahui bahwa kandidat memahami cara-cara untuk meningkatkan kualitas pengiriman mereka pasti akan menarik perhatian saya.

Apa yang biasanya saya lihat adalah orang-orang yang tidak hanya tidak memahami masalah, tetapi juga tidak mengerti bagaimana cara menyelesaikan masalah - dan mereka akan diabaikan tidak peduli berapa banyak alat tambahan yang mereka gunakan dalam proses.

Steve Hill
sumber
6

Ingatlah bahwa ada batasan waktu untuk itu. Pewawancara mengetahui hal ini, jadi ini berarti (jika saya adalah pewawancara) dia akan melihat Anda tidak hanya menyelesaikan masalah dalam waktu yang ditentukan, tetapi melakukannya dengan cepat sehingga Anda memiliki waktu tersisa untuk pelapisan emas, yang merupakan pertanda baik dari Anda kemampuan memecahkan masalah serta penghargaan Anda atas ketelitian dan ketekunan.

Over-engineering adalah kata yang buruk ketika Anda membuat AbstractFactoryManagerAdaptors yang terhubung untuk membagikan BuzzManager dan FizzManager hanya untuk menyelesaikan FizzBuzz.

Apa yang Anda lakukan adalah ketekunan yang berlebihan, yang bahkan bukan hal apa-apa (meskipun pasti kurang rajin).

Yang mengatakan, jika Anda berakhir dari waktu ke waktu atau dengan solusi setengah diretas karena Anda menggunakan waktu Anda pada ekstra yang Anda klaim "tidak ada waktu sama sekali", ini akan terlihat seolah-olah Anda memiliki pemahaman yang sangat buruk tentang seberapa besar tampak kecil tugas bisa. Ini bisa menjadi atribut berbahaya pada seorang insinyur dan terlalu umum di kalangan junior. Prioritaskan secara tepat dan lakukan hal-hal ekstra-kredit hanya setelah menyelesaikan solusi yang diperlukan .

Jimmy Hoffa
sumber
Tidak ada batasan waktu yang sulit, tetapi hanya sebuah catatan yang mengatakan tugas tidak boleh mengambil programmer yang layak lebih dari tiga jam. Apakah mereka benar-benar memeriksa log git saya untuk memastikan bahwa saya hanya menghabiskan tiga jam untuk itu dari komit # 1 hingga komit terakhir?
DormoTheNord
2
@DormoTheNord jika tidak ada batasan waktu maka waktu yang tidak dihabiskan untuk solusi yang diminta dapat dipandang sebagai prioritas yang buruk. Sayangnya para insinyur semuanya adalah pemikir independen dan dengan demikian memiliki pendapat mereka sendiri tentang hal-hal ini dari satu ke yang berikutnya, dalam kasus-kasus seperti ini dapat menjadi keberuntungan dari hasil imbang apakah orang yang meninjau apa yang Anda lakukan adalah orang yang melihatnya seperti itu, atau semacam melihatnya sebagai anugerah besar. Saya sudah kenal insinyur hebat dari kedua bents. Turun dalam kasus-kasus ini apa yang Anda hargai, perlihatkan itu dan seseorang yang menghargai sama seperti Anda akan menghargainya, itulah yang ingin Anda ajak bekerja sama.
Jimmy Hoffa
Inilah yang saya benci tentang wawancara kerja ... keberuntungan terlibat dalam menyenangkan preferensi pribadi pewawancara. Mungkin itu harus dibakukan :)
DormoTheNord
Jangan khawatir, keberuntungan akan meratakan karier Anda. Anda hanya perlu beruntung tentang kapan Anda mendapatkan keberuntungan dan ketika Anda mendapatkan yang buruk :)
Scroog1
1
Saya akan berhati-hati dalam menggambarkannya sebagai 'pelapisan emas' karena istilah itu biasanya dianggap sebagai hal yang buruk: en.wikipedia.org/wiki/Gold_plating_%28analogy%29
whatsisname
6

Pandangan lain untuk dipertimbangkan adalah bahwa pendekatan Anda tidak baik atau buruk. Saya bisa membayangkan pewawancara yang akan mempertimbangkannya terlalu banyak dan saya bisa membayangkan pewawancara yang akan lebih menyukai teknik.

Jangan terlalu khawatir. Alih-alih, selesaikan masalah dengan cara yang Anda anggap terbaik dan Anda kemungkinan akan menerima tawaran pekerjaan dari orang-orang yang setuju dengan Anda. Itu langkah awal yang bagus menuju lingkungan kerja yang produktif. Ingat, wawancara memiliki dua cara. Tanggapan pewawancara untuk solusi Anda akan memberi tahu Anda banyak tentang mereka juga. Apakah Anda benar-benar ingin bekerja dengan orang-orang yang percaya insting dan filosofi pengembangan Anda salah?

Corbin March
sumber
3

Pada kenyataannya, tidak ada yang peduli jika kandidat dapat menyiapkan git repo atau membuat makefile dengan tergesa-gesa, karena itu hanya mengingat apa yang dia pelajari dengan menghafal. Ini adalah keterampilan sekunder untuk pemecahan masalah dan aspek desain aktual dari pertanyaan wawancara.

Jadi ya, intuisi Anda tepat sehingga berpotensi terlihat buruk, karena mungkin tampak seolah kandidat percaya bahwa seseorang yang dapat memuntahkan beberapa perintah dan pola yang dihafal untuk membuat kerangka proyek memiliki keterampilan perangkat lunak yang mengesankan.

Namun, aspek test suite dari solusinya bagus. Memberikan jawaban dengan suite uji regresi mungkin akan mendapatkan poin Anda. Terlebih lagi jika suite tes Anda menggunakan kasus-kasus penting dalam kode. Test suite tidak harus memiliki banyak ornamen formal dan bergantung pada alat; hanya fakta bahwa Anda entah bagaimana memilikinya di sana cukup baik untuk wawancara. Lebih atau kurang jelas bahwa jika Anda dapat mengumpulkan beberapa tes unit ad hoc dalam kuis wawancara, Anda dapat melakukannya dengan alat pada proyek nyata.

Kaz
sumber
1

Baru-baru ini saya melakukan wawancara telepon dengan perusahaan. Setelah wawancara telepon itu, saya diberitahu untuk menyelesaikan tugas pemrograman pendek (program kecil; tidak boleh lebih dari tiga jam).

Saya akan melanjutkan dengan hati-hati. Mengevaluasi relevansi tantangan dengan pekerjaan, dan pastikan penggantian di masa depan dari majikan akan membuat 3 jam waktu Anda berharga.

Saya mempertanyakan nilai dalam jenis tes ini, dan lebih suka menilai seseorang atas prestasi mereka di masa lalu. Tugas singkat yang sudah ditentukan sebelumnya tidak dapat memberi tahu majikan apa pun tentang apa yang dapat Anda lakukan. Hanya apa yang tidak dapat Anda lakukan, dan itu dapat dengan cepat ditentukan dengan beberapa pertanyaan melalui telepon.

Pengujian memang memiliki tempatnya. Tanyakan kepada diri Anda pertanyaan-pertanyaan berikut tentang tes ini, dan berikan respons yang sesuai.

  1. Apakah tes ini adil mengingat tingkat karier Anda saat ini?
  2. Apakah tes memiliki jawaban yang benar dan jelas?
  3. Apakah pewawancara memiliki minat pada potensi Anda sebagai seseorang atau mereka lebih tertarik pada hasil tes (yaitu agen perekrutan sangat buruk untuk ini).
  4. Apakah tes tersebut mewakili jenis pekerjaan yang akan Anda sukai atau apakah itu verifikasi keterampilan yang ambigu (yaitu tes jika Anda tahu sintaks Java).

Saya hanya diinstruksikan secara langsung untuk menyelesaikan tugas dan menyerahkan kode.

Anda baru saja menjawab pertanyaan Anda sendiri.

Segera saya berencana untuk melemparkannya ke Github, menulis test suite untuknya, menggunakan Travis-CI (integrasi berkesinambungan gratis untuk repositori Github publik) untuk menjalankan suite tes, dan menggunakan CMake untuk membangun file Linux untuk Travis-CI.

Tidak, bukan itu yang mereka minta Anda lakukan.

Dengan begitu, saya tidak hanya dapat menunjukkan bahwa saya memahami cara menggunakan Git, CMake, Travis-CI, dan cara menulis tes, tetapi saya juga dapat dengan mudah menautkan ke halaman Travis-CI sehingga mereka dapat melihat output dari tes tersebut. Saya pikir itu akan membuatnya sedikit lebih nyaman bagi pewawancara.

Saya akan menunjukkan keterampilan terlalu dini atau terlambat dalam proses wawancara. Jika Anda merasa tidak berhasil dengan baik dalam wawancara, dan sekarang mencoba untuk memberikan kompensasi maka itu tidak akan berhasil. Di sisi lain, melakukan terlalu banyak saat tidak diminta juga menunjukkan keinginan yang berlebihan. Ini bisa mengakibatkan majikan membalas dengan tawaran upah yang lebih rendah dari yang Anda harapkan.

Namun, saya agak khawatir bahwa melakukan semua ini untuk tugas yang relatif sederhana akan terlihat buruk.

Ya itu terlihat buruk. Menyelesaikan tantangan mereka dengan satu baris kode akan jauh lebih mengesankan daripada proyek penuh flushed out.

Dari pengalaman saya, ini bukan bagaimana Anda memenangkan wawancara pekerjaan, tapi itu salah satu cara untuk kehilangan pekerjaan. Tes kode adalah masalah kontrol kualitas. Setiap perusahaan yang menggunakan tes kode ketika merekrut orang melakukannya, karena sebelumnya mereka tidak menggunakan tes kode. Mereka memiliki pengalaman buruk seseorang tergelincir melalui celah-celah proses wawancara yang seharusnya tidak.

Mereka akan mengambil kode sumber Anda dan menyebarkannya di kantor. Orang-orang akan berkomentar tentang hal itu, dan apa yang Anda tidak ingin mereka katakan adalah "Dia membuat kesalahan ini? Tetapi menghabiskan waktu menggunakan Git, CMake dan Travis-CI. Betapa bodohnya melewatkan kesalahan ini."

Itu dia. Anda tersesat.

Mereka ingin tahu Anda bisa kode, karena mereka tidak bisa mengajari Anda itu. Git, CMake dan Travis-CI dapat dengan mudah diajarkan.

Reactgular
sumber
2
@JimmyHoffa apakah Anda tidak setuju dengan seluruh jawaban saya atau hanya komentar saya tentang pengujian? Mungkin saya gagal mengekspresikan perspektif saya dengan benar, atau mungkin tidak? Bagi saya, saya lebih menghargai komponen manusia daripada tes tertulis. Seorang kandidat yang gagal FizzBuzz tidak membuktikan apa pun untuk saya. Saya harus berbicara dengan orang itu untuk memahami alasannya. tapi saya memang ingin merekrut pekerja terampil (selalu). Saya hanya tidak berpikir pulang menulis tes ini dan kembali. Merupakan cara yang efektif untuk melakukan itu. Saya lebih suka mengajukan pertanyaan FizzBuzz dan melihat mereka menyelesaikannya. Apakah kamu mengerti?
Reactgular
1
@JimmyHoffa Saya pikir ini sesuai dengan harapan majikan untuk disewa. Dengan itu, saya semakin mengayun ke sisi Anda, semakin banyak saya membaca tentang pengujian FizzBuzz. Seorang programmer yang tidak dapat lulus pada level karir apa pun memiliki masalah. Saya hanya tidak yakin apakah pengujian semacam ini sama dengan OP. Lihat pertanyaan terkait ini: stackoverflow.com/questions/117812/…
Reactgular
Sederhananya, saya penggemar proses wawancara yang berat, dan kandidat yang berusaha untuk melampaui dan melampaui (tanpa kompromi permintaan inti; jika tidak, mereka memprioritaskan waktu mereka dengan buruk). Seluruh jawaban Anda tampaknya menentang kedua hal ini.
Jimmy Hoffa
@JimmyHoffa Saya pikir sikap saya berasal dari lepas di bidang kreatif di mana klien sering meminta vendor untuk menyelesaikan pekerjaan atau tes kreatif sebagai bagian dari proses penawaran pra-kerja mereka. Saya tidak melakukan pekerjaan seperti itu, karena jika saya menghabiskan berjam-jam di setiap prospek saya tidak akan mendapatkan pekerjaan yang dapat ditagih. Ketika saya mengatakan kepada OP untuk melanjutkan dengan hati-hati, itu dengan harapan membuatnya tidak membuang-buang waktu. OP ingin menginvestasikan waktu dalam melakukan banyak pekerjaan ekstra. Ini adalah godaan tetapi apakah hasilnya sepadan? Mungkin, tetapi OP tidak menjelaskan hal ini. Bisa jadi pekerjaan kontrak jangka pendek.
Reactgular
0

Saya berpikir bahwa pendekatan Anda tidak baik atau buruk per se . Saya akan bertanya kepada pewawancara apakah boleh menggunakan Github dan alat-alat lainnya. Seperti @Izkata tunjukkan dalam komentar, Anda membuat solusi Anda publik.

Sebagai pewawancara, saya tahu bahwa biasanya tidak ada salahnya kandidat mencoba mengklarifikasi beberapa hal. Juga, mengajukan satu atau dua pertanyaan bisa menjadi pertanda baik, karena Anda tidak terburu-buru melakukan hal-hal yang tidak Anda pahami.

Ingat, bagaimanapun, bahwa hal yang paling penting adalah bahwa masalahnya diselesaikan, dan diselesaikan dengan baik. Dalam hal itu, semua orang setuju bahwa test suite membantu. Tetapi, untuk itu, mungkin Anda hanya perlu mengirim beberapa kelas ujian bersama dengan proyek / solusi Anda.

HBA
sumber