- 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
- 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
- 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
Belum ada komentar.