36 poin oleh GN⁺ 2025-11-10 | 2 komentar | Bagikan ke WhatsApp
  • Engineer compiler adalah bidang rekayasa perangkat lunak yang bukan merancang bahasa pemrograman secara langsung, melainkan membuat bahasa yang sudah ada berjalan lebih cepat dan efisien
  • Peran ini hanya mencakup sebagian sangat kecil dari seluruh pekerjaan software engineer, dengan hambatan masuk yang tinggi dan permintaan yang terbatas
  • Perusahaan yang merekrut beragam, termasuk startup, perusahaan teknologi besar, akademia, sektor keuangan, dan proyek open source, tetapi kebanyakan berfokus pada kandidat berpengalaman
  • Dalam wawancara, penilaian berfokus pada implementasi algoritme berbasis C++, desain bahasa, optimisasi compiler, dan pengetahuan sistem level rendah
  • Proses persiapan dengan memanfaatkan kuliah MIT dan materi belajar open source, serta networking dan referral yang konsisten, menjadi kunci keberhasilan mendapatkan pekerjaan

Apa itu engineer compiler

  • Compiler adalah alat perangkat lunak yang mengubah kode yang ditulis dalam satu bahasa pemrograman menjadi bahasa lain
    • Engineer compiler bertanggung jawab atas implementasi dan optimisasi bahasa-bahasa tersebut
    • Perannya bukan merancang bahasa baru, melainkan meningkatkan efisiensi eksekusi bahasa yang sudah ada
  • Penulis bekerja di perusahaan teknologi besar di kawasan Teluk San Francisco untuk meningkatkan performa bahasa pemrograman

Alasan menulis artikel ini

  • Karena hampir tidak ada informasi online tentang cara mendapatkan pekerjaan di bidang compiler, artikel ini ditulis untuk memberikan panduan praktis bagi pemula dan lulusan baru
  • Materi tentang machine learning atau full-stack sangat banyak, tetapi konten terkait compiler masih kurang
  • Penulis membagikan pengalaman berhasil mendapatkan pekerjaan setelah sekitar satu tahun trial and error

Ringkasan karier pribadi

  • Lulus dari MIT pada 2023 dengan double major matematika dan ilmu komputer
  • Setelah menghentikan program magister berbasis riset, pada 2024 bekerja di startup di New York untuk mengembangkan ekstensi bahasa open source
  • Setelah itu pindah ke perusahaan teknologi publik di San Francisco

Tempat yang merekrut engineer compiler

  • Menurut Indeed, lowongan “software engineer” ada sekitar 116.000, sedangkan “compiler engineer” sekitar 400
  • Startup: peluang merekrut lulusan baru lebih tinggi, dan penulis juga memulai pekerjaan pertamanya di startup
  • Perusahaan teknologi besar: terutama perusahaan hardware dan otomotif seperti Tesla, Waymo, Nvidia
    • Pada perusahaan FAANG, ada kasus masuk melalui konversi dari program magang
    Iklan
  • Akademia: peluang terbatas karena penyusutan dana riset
  • Perusahaan keuangan kuantitatif: seperti Jane Street, Five Rings, menuntut kemampuan high-performance computing
  • Proyek open source: beberapa startup juga melakukan rekrutmen terkait area ini

Strategi resume dan networking

  • Referral adalah pendekatan yang paling efektif
    • Minta referral melalui kenalan atau kenalan dari kenalan
    • Dengan menuliskan "Rona likes compilers" di profil media sosial, penulis menandai minatnya dan berhasil membuka peluang networking yang benar-benar berujung pada wawancara
  • Latar belakang pribadi (kewarganegaraan AS, gelar MIT, dsb.) juga memberi keuntungan

Jenis wawancara

  • Algoritme gaya LeetCode: whiteboarding struktur data seperti BFS, priority queue, dan sebagian besar menggunakan C++
  • Desain bahasa: menulis grammar untuk bahasa sederhana di bawah batasan tertentu
  • Pertanyaan terkait bahasa pemrograman: bahasa pemrograman favorit dan alasannya
  • Representasi menengah (IR): interpretasi dan transformasi assembly x86, termasuk tugas berbasis MLIR
  • Optimization pass: dalam tugas MLIR, menulis algebraic simplification optimization pass, mengimplementasikan constant propagation dan dead code elimination
  • Dasar-dasar compiler: menjelaskan komponen compiler, teknik optimisasi, serta compiler statis vs dinamis
  • Teori graf: pertanyaan tentang representasi compiler berbasis graf seperti control flow graph dan register allocation (dipengaruhi topik skripsi sarjana penulis)
  • Topik sistem level rendah: deadlock, race condition, register tujuan khusus, instruction pipeline, alokasi memori, representasi dan operasi biner, garbage collection, dll.
  • Pertanyaan perilaku: berfokus pada motivasi seperti “mengapa ingin bekerja di compiler”

Proses persiapan wawancara

  • Belajar dengan berpusat pada kuliah MIT OCW
    • Computation Structures: konsep level rendah seperti pipeline, assembly, operasi biner
    • Computer Language Engineering: pengalaman C++ dan codebase skala besar
    • Performance Engineering: berfokus pada optimisasi performa, dan berperan menentukan dalam mendapatkan pekerjaan saat ini
    • Theory of Computation: membantu memahami desain grammar bahasa
    Iklan
  • Juga merujuk pada pembelajaran mandiri Advanced Compilers dari Cornell

Hal yang bisa diperbaiki dan pelajaran yang didapat

  • Tidak adanya mentor: menyadari perlunya networking lewat LinkedIn
  • Buku-buku teknis (Engineering a Compiler, Dragon Book) berguna untuk meninjau konsep, tetapi terbatas untuk persiapan praktik nyata
  • Tidak mencatat pertanyaan wawancara: sebuah kesalahan karena tidak merekam dan meninjau ulang pertanyaan setelah wawancara
  • Kurang aktif di open source: sempat meninjau proyek seperti Carbon dan Mojo tetapi tidak benar-benar berkontribusi. Open source efektif untuk belajar dan networking

Alasan memilih compiler

  • Penulis sempat mempertimbangkan program PhD matematika, tetapi setelah program riset musim panas REU, ia menginginkan pekerjaan yang dampaknya lebih langsung sehingga menambah double major ilmu komputer
    • Ia tertarik pada kemiripan antara cara berpikir teoretis dan pemrograman level rendah
  • Daya tarik pemrograman level rendah adalah perasaan membangun seluruh dunia dari prinsip-prinsip dasar, seperti matematika
  • Berbeda dengan sifat empiris machine learning, penulis lebih menyukai pendekatan membangun seluruh semesta dari aksioma
  • Di MIT, ada banyak orang yang disukai di komunitas compiler, dan dibanding bidang lain, karena uang serta ketenarannya lebih sedikit, bidang ini terasa membutuhkan sedikit sifat masokistis

Pasar kerja teknologi dan saran

  • Teman-teman penulis di Oregon (termasuk Oregon State dan universitas negeri non-elit lain) hanya mendapat sekitar 4 wawancara meski melamar ratusan posisi
  • Manfaatkan sumber daya semaksimal mungkin dan buat diri berbeda: ikut komunitas open source, gunakan media sosial, manfaatkan sumber daya kampus (bahkan memulai klub yang tak didatangi siapa pun)
  • Temui orang secara langsung: ikut kelompok baca sistem, dll. (disebutkan grup sistem New York milik Eric)
  • Penulis juga serius mempertimbangkan memulai channel YouTube compiler (meski canggung di depan kamera)
  • Aktivitas-aktivitas ini tidak menjamin pekerjaan secara langsung, tetapi meningkatkan peluang mendapatkan kesempatan

Kesimpulan dan pengalaman pribadi

  • Sebelum startup pada 2024, penulis tidak punya pengalaman industri terkait compiler
  • Dalam proses rekrutmen 2025, ia juga melamar posisi dengan upah per jam yang rendah, tetapi kesempatan itu jatuh kepada pelamar program PhD
  • Setelah 10 bulan dan puluhan wawancara, akhirnya berhasil mendapatkan pekerjaan, dan kini berfokus pada peningkatan performa program dalam hitungan milidetik
  • Penulis meminta orang-orang di bidang compiler untuk menghubunginya, serta menyebut awal baru di wilayah Palo Alto
  • Terakhir, ia membagikan kabar terbitnya novel berjudul You Had Me at Hello World

2 komentar

 
sacru2red 2025-11-11

Dibanding bidang lain, uang dan ketenarannya lebih sedikit jadi perlu kecenderungan yang agak masokistik

Ngeri

 
GN⁺ 2025-11-10
Opini Hacker News
  • Jika tertarik dengan compiler, disarankan mulai berkontribusi ke proyek ClangBuiltLinux atau issue tracker LLVM
    Bisa merujuk ke daftar isu Linux kernel with LLVM dan
    daftar good first issue di LLVM

  • Topik tulisan ini terasa seperti promosi pribadi
    Namun jika benar-benar ingin menjadi compiler engineer, yang terpenting adalah membuat compiler sendiri
    Penting untuk mempelajari konsep dasar seperti tokenizing, penyusunan AST, type checking, dan IR (Intermediate Representation)
    Direkomendasikan tutorial LLVM.
    Tidak perlu jadi jenius level MIT; materi setara satu mata kuliah CS satu semester sudah cukup untuk mulai

    • Bahkan di antara orang yang memang mendalami implementasi bahasa, kesempatan untuk menulis compiler secara langsung pun jarang didapat
      Karena lowongan terkait langka, banyak yang beralih ke bidang lain seperti AI
    • Secara pribadi, seri “Let’s Build a Compiler” karya Crenshaw adalah pengantar terbaik
    • LLVM terlalu kompleks bagi pemula, jadi membuat Lisp kecil atau compiler OCaml adalah titik awal yang lebih baik
    • Ungkapan seperti “puff piece” atau “attack vector” terasa berlebihan. Ini cuma cerita pribadi yang diposting di blog pribadi
  • Mengejutkan bahwa bahkan lulusan MIT pun tidak mudah mendapat pekerjaan di bidang compiler engineering
    Bidang ini lebih sempit daripada yang dibayangkan, dan tampaknya lebih merupakan pasar yang berfokus pada senior daripada entry-level
    Saat gelembung dotcom pecah pada 2001 memang sulit mencari kerja, tetapi situasi sekarang tampak sulit dalam arti yang berbeda

    • Kalau lulusan ganda MIT saja kesulitan mencari kerja, rasanya kondisi ekonomi memang serius
    • Bidang ini punya banyak sub-niche — semantik bahasa frontend, optimisasi backend, AoT vs JIT, CPU vs akselerator, dan lain-lain
      Banyak pelamar juga kurang memiliki pengetahuan system programming
    • Beberapa tahun lalu tidak sesulit ini. Compiler pada akhirnya hanyalah program biasa, jadi banyak orang berkembang sambil belajar di pekerjaan nyata
    • Sebagian besar perusahaan menggunakan compiler, bukan membuatnya sendiri. Karena itu pasar keseluruhannya kecil
  • Thread ini menyebar ke banyak arah, tetapi ada upaya merangkum tempat yang mempekerjakan compiler engineer
    Ada AMD, Nvidia, Intel, Apple, Google, Jane Street, Bloomberg, Qualcomm, Modular, AWS, ARM, dan lainnya
    Informasi terkait bisa dilihat di daftar CompilerJobs
    Pada kenyataannya, jumlah pelamar jauh lebih banyak daripada lowongannya
    Berkontribusi ke proyek seperti LLVM, Rust, Swift, atau Carbon adalah jalur masuk yang paling realistis
    Referensi: PL Resources,
    How to Learn Compilers (LLVM Edition),
    kanal YouTube Compilers

    • Lucu juga komentar bahwa banyak orang hanya mengulang contoh seperti “interpreter lox”
    • Ada pengalaman menulis backend LLVM untuk DSP. Jika melihat riwayat commit LLVM, bisa menemukan lebih banyak daftar perusahaan
    • Bidang compiler punya budaya yang berfokus pada kualitas, jadi bagus juga dipelajari untuk pengembangan diri
    • Microsoft juga menjalankan berbagai proyek compiler seperti MSVC, C#, F#, CLR, dan rustc
    • Penasaran apa maksud pernyataan “merekrut hanya untuk bahasa tertentu”
  • Judul buku “You Had Me At Hello World” yang dia sebut terasa sangat lucu

    • Jadi teringat judul parodi seperti “et tu btrfs?”
    • Setahu saya, buku itu pernah dikontrak, tetapi penerbitannya tertunda karena kontroversi plagiarisme
  • Agak kaget karena di tengah artikel tiba-tiba muncul kalimat “ini foto saya”

    • Dibanding tulisan lain, post ini tampak lebih bernuansa promosi diri
  • Pada era 80-an, ada yang bermimpi menjadi compiler engineer, mengambil gelar master, bahkan menerbitkan paper tentang parsing LR,
    tetapi saat itu pun lowongannya hampir tidak ada. Ia bertahan dengan mempelajari source PCC dan GCC,
    lalu beralih ke pengembangan GUI, dan setelah kemunculan Java/Swing justru di sana peluangnya jauh lebih banyak

  • Lebih penasaran pada fakta bahwa ia mendapat kontrak debut dengan Simon & Schuster saat masih awal 20-an

    • Namun kemudian disebut bahwa kontrak itu dibatalkan karena plagiarisme
  • Kalimat “sedang mempertimbangkan membuat kanal YouTube compiler” terasa membekas
    Rasanya merapikan materi kompleks lewat blog saja pun sudah cukup bernilai

    • Hanya saja, membuat kanal semata demi mendapat pekerjaan terasa seperti menunjukkan realitas pasar kerja saat ini.
      Seolah-olah untuk menjadi montir mobil, orang harus lebih dulu membuat mobil sendiri dan merekam video saat mengemudikannya
  • Terima kasih karena secara kebetulan menemukan tulisan ini menjelang wawancara compiler
    Sedang belajar lewat Crafting Interpreters(tautan),
    dan baru sekarang sadar bahwa interpreter dan compiler itu berbeda
    Waktu menuju wawancara memang tidak banyak, tetapi setelah itu berencana mempelajari buku interpreter yang ditulis dengan Go(tautan) dan
    materi teknis yang direkomendasikan Rona satu per satu

    • Secara pribadi, buku Andrew Appel(Modern Compiler Implementation) sangat membantu untuk memahami algoritme backend. Dragon Book juga layak dijadikan referensi, tetapi bagian parsing bisa dilewati
    • Ada juga yang bertanya-tanya apakah tulisan ini bukan daur ulang dari artikel lama