kodingup.camp

Beranda/Siap Kerja US: Interview Teknis

Alur Rekrutmen Engineer di US

Modul 1 dari 117 menit bacaThe US Hiring Process

Isi modul

    Kenapa ini penting

    Bayangkan kamu ikut lomba lari tapi tidak tahu ada berapa pos, di mana air minum, dan kapan tanjakan. Kamu bisa saja kuat, tapi energimu habis di tempat yang salah. Proses rekrutmen software engineer di US mirip lomba bertahap: tiap tahap menyaring dengan kriteria berbeda. Recruiter screen menilai kecocokan dan komunikasi, online assessment menilai kecepatan coding, phone screen menilai cara berpikir, onsite loop menilai semuanya sekaligus. Kalau kamu tahu tahapnya, kamu bisa menyiapkan amunisi yang tepat untuk tiap pos dan tidak panik saat recruiter bilang "next step is a virtual onsite with four rounds".

    Ada satu hal lagi yang khas untuk kandidat dari Indonesia: zona waktu, kebiasaan bahasa, dan ekspektasi budaya. Di US, interviewer berharap kamu bertanya, menyampaikan pendapat, dan menjelaskan trade-off secara terbuka. Diam dan langsung mengetik, yang mungkin dianggap sopan di sini, sering dibaca sebagai "kandidat tidak berkomunikasi".

    Konsep inti

    Tahapan yang umum

    Tabel ini merangkum tahapan yang umum dijumpai. Tidak semua perusahaan memakai semuanya, dan urutannya bisa berbeda.

    Tahap Durasi khas Yang dinilai Persiapan
    Resume screen - Relevansi pengalaman, kata kunci, dampak terukur Resume 1 halaman, bullet berbasis hasil
    Recruiter screen 15-30 menit Motivasi, ekspektasi gaji, visa/lokasi, komunikasi Jawaban "Tell me about yourself", alasan melamar
    Online assessment (OA) 60-90+ menit Coding di platform otomatis (HackerRank, CodeSignal, dll.) Latihan soal dengan timer
    Technical phone screen 45-60 menit 1-2 soal coding sambil berbicara dengan engineer Berpikir keras, test case
    Onsite / virtual loop 3-6 sesi Coding, system design, behavioral, kadang domain (front-end) Semua modul di materi ini
    Take-home beberapa jam-hari Kualitas kode nyata, struktur, testing Proyek rapi, README jelas
    Team match beberapa panggilan Kecocokan dengan tim dan manajer Pertanyaan tentang tim, produk
    Offer & negosiasi - Level, gaji, equity, bonus Riset kisaran gaji, jangan buru-buru menerima

    Contoh nyata dari sumber resmi

    Tech Interview Handbook menyebut satu ronde coding biasanya 30-45 menit, dikerjakan di editor kolaboratif (phone screen atau virtual onsite) atau papan tulis (onsite). Menurut handbook yang sama, perusahaan teknologi besar umumnya menilai empat hal: communication, problem solving, technical competency, dan testing. Ingat empat kata ini, karena seluruh materi ini sebenarnya melatih empat hal tersebut.

    Startup vs big tech (pola umum)

    Aspek Big tech (FAANG/MAANG dan sejenisnya) Startup / perusahaan kecil-menengah
    Format Standar, terstruktur, banyak soal algoritma Bervariasi: take-home, pair programming, bedah proyek nyata
    Fokus Algoritma + system design + behavioral "Bisa langsung kontribusi?", stack spesifik (React/Next.js)
    Keputusan Sering lewat komite atau rubrik Sering langsung dari founder/CTO
    Kecepatan Bisa berminggu-minggu sampai bulan Bisa selesai dalam 1-2 minggu
    Team match Kadang setelah lolos interview Biasanya kamu sudah tahu timnya dari awal

    Ini pola umum, bukan aturan. Ada startup yang memakai soal ala LeetCode, dan ada perusahaan besar yang memakai take-home untuk posisi tertentu.

    Behavioral: jangan dianggap remeh

    Walau materi ini fokus ke teknis, hampir setiap loop punya sesi behavioral. Tech Interview Handbook menyarankan menyiapkan 3-5 cerita kunci dari proyek berdampak besar, lalu menyusunnya dengan STAR: Situation, Task, Action, Result. Fokuskan cerita di bagian Action (apa yang kamu lakukan, bukan tim). Pertanyaan pembuka yang hampir pasti muncul: "Tell me about yourself", "What's your most impactful project?", dan "Tell me about a time you resolved a conflict."

    Remote US dari Indonesia: hal praktis

    Contoh kode

    Proses rekrutmen adalah corong (funnel). Kalau kamu melamar ke 40 tempat, kamu perlu tahu di tahap mana kamu paling banyak rontok, supaya latihanmu tepat sasaran. Skrip kecil ini menghitung berapa lamaran mencapai tiap tahap.

    // Pelacak lamaran sederhana: hitung berapa lamaran yang MENCAPAI tiap tahap
    const applications = [
      { company: 'A', stage: 'rejected_resume' }, { company: 'B', stage: 'recruiter' }, { company: 'C', stage: 'onsite' },
      { company: 'D', stage: 'rejected_resume' }, { company: 'E', stage: 'phone' }, { company: 'F', stage: 'offer' },
    ];
    const ORDER = ['applied', 'recruiter', 'phone', 'onsite', 'offer'];
    
    function funnel(apps) {
      const reached = Object.fromEntries(ORDER.map(s => [s, 0]));
      for (const a of apps) {
        // ditolak di resume = hanya sampai 'applied'
        const idx = a.stage.startsWith('rejected') ? 0 : ORDER.indexOf(a.stage);
        for (let i = 0; i <= idx; i++) reached[ORDER[i]]++;
      }
      return reached;
    }
    
    console.log(funnel(applications));
    // → { applied: 6, recruiter: 4, phone: 3, onsite: 2, offer: 1 }
    

    Cara membaca: dari 6 lamaran, 4 lolos ke recruiter (resume cukup baik), 3 ke phone screen, 2 ke onsite, 1 offer. Kalau angka recruiter jauh di bawah applied, perbaiki resume. Kalau rontok di phone, latih coding sambil berbicara. Kalau rontok di onsite, biasanya system design atau behavioral yang lemah.

    Kesalahan umum

    1. Menganggap semua perusahaan sama. Proses Amazon berbeda dari startup 20 orang. Cara benar: tanyakan ke recruiter "Could you walk me through the interview process and what each round focuses on?" Recruiter memang ingin kamu siap.
    2. Mengabaikan recruiter screen. Ini sudah penilaian. Jawaban "Tell me about yourself" yang bertele-tele 5 menit bisa menghentikan prosesmu. Cara benar: siapkan versi 60-90 detik (masa kini → pencapaian utama → kenapa role ini).
    3. Menyebut ekspektasi gaji terlalu cepat atau terlalu rendah. Cara benar: riset kisaran gaji dulu, minta range dari perusahaan, dan bedakan kontrak vs karyawan.
    4. Hanya latihan LeetCode. Tech Interview Handbook sendiri menulis bahwa LeetCode saja tidak cukup. Cara benar: latih juga komunikasi, behavioral, dan (untuk front-end) soal UI.
    5. Tidak mencatat setelah interview. Cara benar: segera tulis soal yang ditanya dan jawabanmu, lalu kirim thank-you singkat lewat email atau LinkedIn, seperti yang disarankan Tech Interview Handbook.

    Latihan

    1. Mudah, Tulis jawaban "Tell me about yourself" dalam bahasa Inggris, maksimal 90 detik saat dibacakan (sekitar 150-200 kata), dengan struktur: sekarang, pencapaian, alasan melamar.
    2. Sedang, Buat daftar 5 pertanyaan yang akan kamu ajukan ke recruiter tentang proses, bentuk kontrak, dan zona waktu.
    3. Menantang, Kembangkan fungsi funnel agar juga menghitung persentase konversi antar tahap (misalnya recruiter → phone = 75%).
    Lihat solusi

    1. Contoh: "I'm a full-stack engineer with three years of experience building React and Next.js apps, currently at a fintech startup in Jakarta. Recently I led the migration of our dashboard to Next.js App Router, which cut our page load time noticeably and made the codebase easier for new hires. Before that I built our Node.js payment webhook service. I'm applying here because your team works on developer tools, which is exactly the kind of product I want to grow in, and I enjoy working async with distributed teams." Jaga angka yang kamu sebut tetap jujur dan bisa kamu jelaskan detailnya.

    2. Contoh pertanyaan: - "Could you walk me through the interview process and what each round focuses on?" - "Which language can I use for the coding rounds? Is JavaScript or TypeScript fine?" - "Is this a full-time employee position or a contractor role?" - "What are the expected overlap hours with the team's time zone?" - "What does success look like in the first six months for this role?"

    3.

    function funnelWithRate(apps) {
      const reached = funnel(apps);       // fungsi dari contoh kode di atas
      const rows = [];
      for (let i = 1; i < ORDER.length; i++) {
        const from = reached[ORDER[i - 1]], to = reached[ORDER[i]];
        rows.push(`${ORDER[i - 1]} → ${ORDER[i]}: ${from ? Math.round((to / from) * 100) : 0}%`);
      }
      return rows;
    }
    console.log(funnelWithRate(applications).join(' | '));
    // → applied → recruiter: 67% | recruiter → phone: 75% | phone → onsite: 67% | onsite → offer: 50%
    

    Ringkasan

    Video pendamping

    Kalau penjelasan di atas belum masuk, tonton ini. Video dari kanal YouTube pihak lain.

    Coding Interviews in 2026NeetCode · Bahasa InggrisBuka di YouTube

    Kuis pemahaman

    Pilih satu jawaban per soal. Penjelasan muncul setelah kamu menjawab.