- Menekankan inefisiensi take-home assignment yang diberikan dalam wawancara pengembang perangkat lunak serta masalah pemborosan waktu kandidat
- Dalam proses melamar ke Kagi Search, mengalami persyaratan tugas yang terlalu luas dan ambigu
- Saat mengajukan rencana eksekusi yang konkret, mengalami ketiadaan umpan balik yang jelas dari manajer serta komunikasi yang tidak efisien
- Setelah menyerahkan proyek yang dikembangkan dengan sangat serius, merasa ada ketidakadilan karena ditolak tanpa alasan yang jelas dan adanya perubahan standar
- Membagikan alternatif untuk proses rekrutmen yang lebih baik (misalnya, code review secara real-time) serta kesadaran akan masalah tuntutan berlebihan dalam wawancara berbasis tugas
Pendahuluan
- Take-home assignment adalah metode evaluasi dalam wawancara pengembang perangkat lunak, di mana kandidat diberi sebuah masalah lalu diminta mengimplementasikannya dalam bentuk kode dan mengirimkannya
- Postingan ini ingin menyoroti ketidakrasionalan metode ini dan masalah pemborosan waktu kandidat melalui tugas nyata dan pengalaman saat melamar ke Kagi Search, sebuah perusahaan yang sebelumnya dianggap bereputasi baik
Melamar kerja ke Kagi Search
- Mengirimkan resume untuk posisi pengembang backend di Kagi Search
- Persyaratan untuk peran tersebut adalah sebagai berikut
- Pengalaman membangun sistem backend
- Kemampuan menggunakan bahasa Go
- Pengalaman menskalakan dan memelihara sistem backend berskala besar
- Kemampuan berkolaborasi dengan anggota tim seperti SRE
- Pemahaman tentang teknologi kontainer seperti Docker
Panduan tugas wawancara dan persyaratannya
- Setelah lolos seleksi dokumen, menerima email panduan take-home assignment
- Topik tugas: "membangun klien email minimal yang terinspirasi terminal"
- Boleh memilih bentuk terminal atau web app
- Fitur dasar untuk melihat/mengirim email
- Bebas memilih backend email palsu atau nyata (IMAP/POP, dll.)
- Hanya wajib menangani pesan plaintext, rich text tidak diperlukan
- Penyerahan proyek: repositori GitHub, versi ter-deploy, dan dokumen panduan instalasi
- Kurangnya panduan yang jelas dan skala proyek cukup besar
- Tetap memutuskan mengerjakan tugas tersebut, setidaknya karena reputasinya
Komunikasi dengan manajer
- Saat menanyakan cakupan tugas yang jelas dan fitur tambahan, hanya mendapat jawaban ambigu bahwa “apa yang ingin ditambahkan sepenuhnya bebas bagi kandidat”
- Sebelum menginvestasikan waktu dan tenaga ke tugas, sempat membagikan rencana eksekusi yang konkret (Proposal) dan meminta tanggapan atasnya, tetapi proses tetap berjalan tanpa umpan balik khusus
Usulan tugas dan rencana
- Rencana eksekusi:
- Web app berbasis Go
- Deployment melalui AWS ECS Fargate dan penerapan SSL
- Integrasi layanan pengirim email (Postmark)
- Penambahan fitur login/autentikasi
- Pengiriman/penerimaan email dan tampilan UI
- Alasan pemilihan teknologi:
- Memanfaatkan beragam teknologi yang relevan dengan peran backend
- Membangun sistem yang nyata dengan memanfaatkan alat Infrastructure-as-Code
- Mengimplementasikan fungsi yang lebih mendekati layanan nyata, bukan sekadar integrasi API sederhana
- Elemen implementasi utama:
- Pocketbase (backend/DB), TEMPL (template), Pulumi (IaC), Postmark (layanan email)
- Implementasi pagination, login, dan lain-lain
- Stretch Goal: stabilitas seperti backup dan pemulihan data
- Kesimpulan: sejak awal sudah memberikan penjelasan dan alasan yang memadai terlebih dahulu, dan berharap ada peninjauan serta tanggapan yang jelas atas hal tersebut
Balasan manajer dan masalah komunikasi
- Hanya menerima jawaban singkat seperti “usulan yang menarik” tanpa peninjauan yang konkret
- Tidak ada umpan balik sama sekali terkait kelayakan usulan atau kebutuhan perbaikan
- Dari sudut pandang kandidat, hal ini terasa sebagai ketiadaan penghargaan terhadap waktu dan usaha yang diinvestasikan
Mengerjakan proyek tugas
- Mengimplementasikan semua persyaratan yang diberikan dan hal-hal yang diusulkan, serta menghabiskan satu minggu penuh waktu
- Juga menyerahkan video demo proyek, repositori GitHub, dan dokumentasi yang rinci
Pemberitahuan penolakan dan umpan balik atasnya
- Setelah menerima email penolakan otomatis, jawaban yang didapat saat meminta umpan balik adalah:
- “Ada kiriman kandidat lain yang lebih kuat”, “persaingan perekrutan sangat ketat”
- Masalahnya
- Jika memang lebih menyukai solusi yang sederhana, hal itu seharusnya bisa diberitahukan sejak awal
- Jika usulannya kurang memadai, umpan balik bisa diberikan pada saat itu
- Bahkan setelah penolakan, lowongan tersebut masih tetap dipasang, sehingga dinilai bukan sekadar soal persaingan, melainkan tuntutan pengurasan waktu yang berlebihan
- Persyaratan makin diperketat setelah proyek diserahkan, sehingga solusi yang dikirim justru tampak menaikkan standar
Kesimpulan dan pokok masalah
- Cara seperti ini tidak adil bagi banyak pencari kerja, bahkan bisa disertai ancaman nyata terhadap penghidupan mereka
- Menekankan perlunya menolak atau mempertanyakan tuntutan tugas tidak berbayar yang berlebihan
- Ada proses rekrutmen yang lebih baik yang bisa menggantikan tugas berbentuk proyek, seperti code review secara real-time
- Kemampuan memecahkan masalah pengembangan yang nyata dapat dilihat melalui code review asinkron/sinkron
- Menunjukkan adanya kesenjangan antara penyelesaian soal gaya Leetcode dan tuntutan pekerjaan nyata
- Mendesak perbaikan terhadap budaya kelelahan pencari kerja dan evaluasi yang tidak adil
Usulan untuk prosedur perekrutan yang lebih baik
- Mengajukan alternatif seperti metode code review real-time yang lebih bermakna dalam menilai kemampuan pengembang
- Menekankan perlunya perubahan dari fokus pada pemecahan teka-teki algoritme berbasis timer menuju penilaian kemampuan nyata dan kemampuan memecahkan masalah
1 komentar
Opini Hacker News
takehome. Tugas seperti ini membuang waktu semua pihak. Kalau ini tahap akhir perekrutan masih bisa dimengerti, tetapi menggunakannya untuk menyaring pelamar itu tidak efisien.Saya mengakui kemampuan pelamar dan semangatnya terhadap pekerjaan. Saya hanya ingin memberi pandangan dari sudut yang sedikit berbeda.
"Mengembangkan klien email yang terinspirasi terminal dan melakukan alpha test ke pelanggan" adalah permintaan yang masuk akal untuk engineer startup tahap awal. Meski ada spesifikasi tambahan, banyak bagian tetap bergantung pada penilaian engineer. Pelamar terlalu menginginkan kepastian.
Bahwa Kagi akan memberi umpan balik seperti apa setelah tugas selesai bukan hal yang baik untuk terlalu dipertanyakan sejak awal. Mereka memang tidak berada dalam posisi bisa memberi jawaban pasti. Mungkin mereka sedang mengevaluasi ratusan atau ribuan lamaran.
Jika memang tidak perlu klarifikasi kebutuhan, maka lebih baik suruh saja "tebak angka 1 sampai 10" lalu gugurkan orang yang memilih salah.
Saya tidak setuju dengan kasus menggugurkan orang karena mereka mencurahkan upaya dan memberikan hasil akhir yang rapi.
Tugas ambigu seperti ini pada dasarnya hanyalah cara lain untuk menyaring "kecocokan budaya".
Budaya "kode dulu, umpan balik belakangan" adalah pengalaman paling merusak dalam karier saya. Pelamar ini mengikuti praktik perangkat lunak yang modern. (Saya perekrut di perusahaan dengan lebih dari 1000 engineer)
takehomeyang saya sukai adalah yang bisa selesai dalam 30 menit, memiliki kriteria evaluasi yang jelas, dan tetap membuka berbagai pendekatan serta pertimbangan trade-off.Dalam pencarian kerja saya yang lalu, saya juga pernah gagal pada tugas
takehomeyang sangat luas karena tidak tahu bagian mana yang menjadi kriteria penilaian. Sejak pengalaman itu saya jadi sangat alergi dengan tugas seperti ini.Menurut saya perusahaan seharusnya tidak membiarkan pelamar terus membuang waktu, dan lebih baik menghentikan tugas pada titik itu.
Bahkan fungsi email paling dasar (seperti membuka email) tidak ada, dan meski melamar posisi backend engineer, dia sebenarnya memakai produk eksternal seperti
postmarkdanturso, sementara fungsi dasar (format plain text, tampilan, folder, dan sebagainya) juga tidak ada.Memang ada fitur tambahan seperti halaman admin dan login, tetapi struktur data minimum seperti peta header email pun tidak ada.
Dia mungkin engineer yang baik, tetapi saya menilai dia tidak cocok untuk posisi tersebut.
Proposal
takehome-nya juga terasa terlalu tidak lazim.Setelah membaca ulang lowongan awal, tertulis jelas "minimal terminal-inspired email client" dan referensi seperti
aerc,mutt,himalaya. Ini jelas kegagalan dalam menafsirkan kebutuhan.Diminta membuat klien email dalam bentuk terminal atau web app, serta mengimplementasikan fungsi dasar, dan menurut saya itu sudah terpenuhi.
Bagian untuk mengambil inspirasi dari tool berbasis terminal itu subjektif. Kalau ini posisi backend, saya juga merasa memberi terlalu banyak perhatian pada UI bisa jadi tidak efisien.
Kalau setidaknya bisa mendapat umpan balik, itu akan membantu pertumbuhan, tetapi bahkan itu pun sering kali sulit secara realistis.
Karena itulah saya jadi skeptis terhadap tugas
takehome. Baik pelamar maupun perekrut sama-sama perlu saling menghormati waktu.takehomememang bermakna, tetapi harus selalu memiliki batas waktu.Dalam 2~3 jam saja sebenarnya sudah cukup untuk mengevaluasi pelamar. Jika ada batas waktu, pelamar juga bisa memberikan solusi yang sesuai dalam batas itu, dan apa yang diinginkan perusahaan akan lebih jelas.
Selain itu, perusahaan perlu menjelaskan dengan jelas apakah ‘jawaban apa pun boleh’ atau ‘mengharapkan jawaban terbaik’.
Maksud dari
takehomebisa berbeda-beda, apakah untuk lolos tes, tingkat pemenuhan misi, kualitas kode, dan seterusnya, sehingga pelamar bisa bingung.Malah berisiko menyaring orang-orang sibuk yang sebenarnya tidak punya banyak waktu.
Di perusahaan kami, kami hanya memberi soal ETL sederhana dengan batas waktu 4 jam.
Kami juga mendorong bahwa tidak apa-apa bila tidak selesai semua, dan pada tahap lanjutan kami melakukan code review serta sesi tanya jawab.
Kemampuan nyata justru bisa dinilai dari pertemuan lanjutan itu.
Berbeda dari tugas langsung di lokasi yang menjaga satuan waktu yang adil,
takehomebisa merugikan karena pembagian waktu tiap orang berbeda-beda.Kalau begitu, lebih baik coding langsung 1 jam. Pelamar dan pewawancara harus sama-sama menginvestasikan waktu agar nilai waktu itu saling dihormati.
Di video demo, yang terlihat hanya web app biasa. Secara eksplisit mereka meminta inspirasi dari klien email terminal yang sudah ada seperti
aerc,mutt,himalaya.Saya penasaran apakah saya melewatkan sesuatu.
UX khas klien terminal sendiri masih merupakan area yang belum punya "jawaban benar", jadi justru sangat mungkin titik itulah yang dijadikan kriteria evaluasi.
Saya percaya bahwa kalau sudah meminta tugas, harus ada pertemuan tindak lanjut.
Saya sudah lama memakai Kagi berbayar, tetapi karena kejadian ini saya mempertimbangkan menutup akun.
Jika mereka bahkan tidak punya waktu untuk berbicara dengan kandidat, seharusnya sejak awal jangan meminta tugas seperti itu.
takehomemenuntut usaha besar bukan hanya dari pelamar, tetapi juga dari pewawancara yang menilai.Setelah sampai tahap review, saya rasa pelamar memang berhak menerima umpan balik.
Tetapi secara realistis, ketika harus memilih satu orang dari puluhan kandidat hebat, gagal lolos tidak otomatis berarti "kemampuannya kurang".
Secara hukum pun, jawaban resmi untuk 'mengapa A dipilih dan B ditolak?' pada akhirnya sering hanya menjadi ajang mencari-cari kekurangan.
Banyak perusahaan menangani hal ini dengan baik.
Bila kesalahpahaman terhadap kebutuhan sebesar itu, diskusinya sendiri bisa saja dilewati.
Perusahaan menginginkan orang yang mandiri dan bisa menetapkan tujuan sendiri.
Ambiguitas itu dimaksudkan untuk melihat kemampuan pelamar mengeksplorasi jawaban dari berbagai sudut dan memecahkannya.
Karena ada orang yang memang tidak cocok dengan perusahaan berorientasi prototipe, beberapa kandidat mungkin cukup berpikir 10 menit lalu menghasilkan yang terbaik dalam 60 menit.
Tetapi bagi developer, kemampuan bertanya seperti itu adalah kualitas yang sangat penting. Karena itu ekspektasi terhadap cara perekrutan jadi lebih tinggi dan kekecewaannya pun tak terelakkan.
Sering kali penyebabnya justru penjelasan yang ambigu.
Guru yang hebat membuat sebanyak mungkin orang bisa mengerti. Jika banyak murid bingung, masalahnya ada pada pembuat soal.
Mahasiswa seharusnya tidak perlu memecahkan koan seperti seorang biksu Zen.
Dulu Vlad sendiri yang menilai kandidat dan tugasnya memang seperti ini.
Seiring perusahaan tumbuh, tampaknya sekarang orang lain yang menilai.
Vlad punya kecenderungan ala HN dan ingin bekerja dengan kandidat yang ia rasa "keren".
Misalnya, kalau seseorang menulis dokumen desain panjang lalu berkata "Saya akan memakai Galactor dan proyek ini siap flop.", efeknya justru akan sepenuhnya berlawanan.
Dalam syarat "terinspirasi terminal", ada kecenderungan untuk mengharapkan detail nyata seperti semua shortcut keyboard dan sebagainya sebagaimana diimplementasikan pada aplikasi terminal sungguhan.
Apakah standar seperti ini filter yang baik masih bisa diperdebatkan, tetapi kalau seseorang memahami konteks itu dan punya kemampuan untuk lolos, tugasnya akan terlihat mudah.
Saya berharap Kagi bisa mengomunikasikan konteks seperti ini dengan lebih baik. Sayang sekali waktunya terbuang, tetapi semoga ia menemukan perusahaan yang lebih cocok secara gaya kerja.
Tim yang tidak punya keberagaman bisa mandek karena semua orang menabrak tembok yang sama.
Fenomena ini sangat umum di startup, dan menurut saya berkaitan juga dengan alasan 9/10 di antaranya gagal.
Tugas yang dinilai tanpa standar jelas terasa tidak adil.
Pada akhirnya itu tidak berbeda dari tugas implisit untuk menebak "jawaban yang ada di kepala saya".
Saya mendapat kesan kurangnya kepedulian terhadap orang.
Kalau memang budayanya seperti itu, saya tidak tahu apakah semua orang harus menyelidikinya seperti agen rahasia.
Akan lebih baik bila pelamar yang 'tidak keren' seperti saya juga mendapat sinyal yang jelas dan bisa cepat mencari perusahaan lain.
Karena kekurangan pada detail seperti ini, saya akan berhenti me-review.
Dari proposal desain sederhana sampai tugas implementasi, semuanya dilakukan dengan batas waktu yang jelas.
Pada akhirnya saya tidak diterima, dan alasan yang jelas juga tidak diberikan.
Mungkin memang pelamarnya terlalu banyak, tetapi pengalaman seperti ini meninggalkan bekas emosional cukup lama. Saya paham perasaan OP.
leetcodemaupuntakehomesama-sama memakan waktu dan kurang memberi banyak informasi.Tetapi kalau saya yang merekrut, saya rasa saya juga akan menolak penulis ini.
Startup menginginkan orang yang bekerja cepat dan praktis.
Saya pernah punya rekan yang setelah mengumpulkan pendapat sekitar lalu tenggelam bekerja sendiri selama beberapa hari, ternyata kebutuhannya sudah berubah, dan itu tidak baik untuk siapa pun.