36 puan yazan GN⁺ 2025-11-10 | 2 yorum | WhatsApp'ta paylaş
  • Derleyici mühendisi, programlama dillerini doğrudan tasarlamak yerine mevcut dillerin daha hızlı ve verimli çalışmasını sağlayan bir yazılım mühendisliği alanıdır
  • Bu rol, tüm yazılım mühendisliği işleri içinde son derece küçük bir paya sahiptir; giriş bariyeri yüksektir ve talep sınırlıdır
  • İşe alım yapan kurumlar startup'lar, büyük teknoloji şirketleri, akademi, finans sektörü ve açık kaynak projeleri gibi çeşitli alanlara yayılır, ancak çoğu yapı deneyimli aday odaklıdır
  • Mülakatlarda özellikle C++ tabanlı algoritma uygulaması, dil tasarımı, derleyici optimizasyonu ve düşük seviyeli sistem bilgisi değerlendirilir
  • MIT dersleri ve açık kaynak öğrenme materyalleriyle yapılan hazırlık süreci ile sürekli networking ve referral iş bulma başarısının anahtarıdır

Derleyici mühendisi nedir?

  • Derleyici, bir programlama dilinde yazılmış kodu başka bir dile dönüştüren bir yazılım aracıdır
    • Derleyici mühendisleri bu dillerin gerçeklenmesi ve optimizasyonundan sorumludur
    • Yeni bir dil tasarlamaktan çok mevcut dillerin çalışma verimliliğini artırırlar
  • Yazının yazarı, San Francisco Körfez Bölgesi'ndeki büyük bir teknoloji şirketinde programlama dili performansını iyileştirme işiyle uğraşıyor

Bu yazıyı yazma nedeni

  • Derleyici alanında işe girişle ilgili internette neredeyse hiç bilgi olmadığından, yeni mezunlar ve kariyerinin başındakiler için pratik bir rehber sunmak amacıyla yazıldı
  • Makine öğrenmesi ya da full-stack konusunda çok sayıda kaynak varken, derleyicilerle ilgili içerik az
  • Yaklaşık 1 yıllık deneme-yanılma sürecinin ardından işe girmeyi başarma deneyimi paylaşılıyor

Kişisel kariyer özeti

  • 2023'te MIT'den matematik ve bilgisayar bilimi çift anadalı ile mezun oldu
  • Araştırma odaklı yüksek lisans programını bıraktıktan sonra 2024'te New York'taki bir startup'ta açık kaynak bir dilin genişletilmesi üzerinde çalıştı
  • Sonrasında San Francisco'da halka açık bir teknoloji şirketine geçti

Derleyici mühendisi işe alan yerler

  • Indeed'e göre “software engineer” için 116.000, “compiler engineer” içinse yaklaşık 400 ilan var
  • Startup'lar: yeni mezun alım ihtimali daha yüksektir; yazar da ilk işine bir startup'ta başladı
  • Büyük teknoloji şirketleri: Tesla, Waymo, Nvidia gibi daha çok donanım ve otomotiv şirketleri öne çıkıyor
    • FAANG şirketlerinde stajdan tam zamanlıya geçiş örnekleri de var
  • Akademi: araştırma fonlarındaki daralma nedeniyle fırsatlar sınırlı
  • Quant finans şirketleri: Jane Street, Five Rings gibi firmalar yüksek performanslı hesaplama becerileri arıyor
  • Açık kaynak projeleri: bazı startup'lar bu alanda işe alım yapıyor

Özgeçmiş ve networking stratejisi

  • Referral en etkili yaklaşım
    • Tanıdıklar ya da tanıdıkların tanıdıkları üzerinden referral istemek
    • SNS profilinde "Rona likes compilers" yazarak ilgisini açıkça belirtti, bu sayede networking fırsatları yakaladı ve gerçekten mülakata kadar ilerleyen bağlantılar kurdu
  • Kişisel arka planı (ABD vatandaşlığı, MIT diploması vb.) avantaj sağlamış

Mülakat türleri

  • LeetCode tarzı algoritmalar: BFS, öncelik kuyruğu gibi veri yapılarıyla whiteboard çözümü; çoğunlukla C++ kullanılıyor
  • Dil tasarımı: belirli kısıtlar altında basit bir dil için grammar yazma
  • Programlama dilleriyle ilgili sorular: en sevilen programlama dili ve nedenleri
  • Ara temsil (IR): x86 assembly yorumlama ve dönüştürme; MLIR tabanlı ödevler de dahil
  • Optimizasyon pass'leri: MLIR ödevinde cebirsel sadeleştirme optimizasyon pass'i yazmak, sabit yayılımı ve ölü kod silme pass'lerini uygulamak
  • Derleyici temelleri: derleyicinin bileşenleri, optimizasyon teknikleri, statik ve dinamik derleyici farkı
  • Graf teorisi: kontrol akış grafiği, register allocation gibi graf tabanlı derleyici gösterimleri hakkında sorular (yazarın lisans tez konusunun etkisi)
  • Düşük seviyeli sistem konuları: deadlock, race condition, özel amaçlı register'lar, komut pipeline'ı, bellek tahsisi, ikili gösterim ve işlemler, garbage collection vb.
  • Davranışsal sorular: “Neden derleyiciler alanında çalışmak istiyorsun?” gibi motivasyon odaklı sorular

Mülakat hazırlık süreci

  • Öğrenme sürecinin merkezinde MIT OCW dersleri vardı
    • Computation Structures: pipeline, assembly, ikili işlemler gibi düşük seviyeli kavramlar
    • Computer Language Engineering: C++ ve büyük kod tabanları deneyimi
    • Performance Engineering: performans optimizasyonu odaklı; mevcut işe girişte belirleyici oldu
    • Theory of Computation: dil grameri tasarımını anlamaya yardımcı oldu
  • Cornell'in Advanced Compilers kendi kendine öğrenme içeriğine de başvuruldu

Geliştirilmesi gereken noktalar ve çıkarılan dersler

  • Mentor eksikliği: LinkedIn üzerinden networking yapma gerekliliği fark edildi
  • Uzman kitaplar (Engineering a Compiler, Dragon Book) kavram tekrarında yararlı ama gerçek mülakat hazırlığında sınırlı
  • Mülakat sorularını kaydetmeme: mülakatlardan sonra soruları not alıp tekrar etmemek bir hataydı
  • Açık kaynağa yetersiz katılım: Carbon, Mojo gibi projeler incelendi ama gerçek katkı yapılmadı. Açık kaynak öğrenme ve networking için etkili

Neden derleyiciler?

  • Matematik doktorasını düşünüyordu, ancak REU yaz araştırma programından sonra daha doğrudan etkisi olan bir iş istediği için bilgisayar biliminde çift anadal ekledi
    • Teorik düşünce ile düşük seviyeli programlama arasındaki benzerlikten etkilendi
  • Düşük seviyeli programlamanın, matematikte olduğu gibi ilkelerden yola çıkarak bütün bir dünya kurma hissi çekici geldi
  • Makine öğrenmesinin deneysel doğasına kıyasla, aksiyomlardan bütün bir evren kurma yaklaşımını tercih ediyor
  • MIT'de derleyici topluluğunda sevdiği çok insan vardı; diğer alanlara göre daha az para ve prestij olduğu için bunun biraz mazoşist bir eğilim de gerektirdiğini söylüyor

Teknoloji işe alım piyasası ve tavsiyeler

  • Yazarın Oregon'daki arkadaşları (Oregon State gibi seçkin olmayan eyalet üniversiteleri) yüzlerce başvuruya rağmen yalnızca yaklaşık 4 mülakat alabildi
  • Kaynakları sonuna kadar kullanın ve farklılaşın: açık kaynak topluluklarına katılın, sosyal medyayı kullanın, üniversite kaynaklarından yararlanın (kimse gelmese bile bir kulüp başlatın)
  • Yüz yüze tanışın: sistem okuma grupları gibi etkinliklere katılın (Eric'in New York sistem grubu anılıyor)
  • Derleyiciler üzerine bir YouTube kanalı açmayı da ciddi biçimde düşünüyor (kamera karşısında rahatsız hissetse bile)
  • Bu faaliyetler doğrudan iş garantisi vermez ama fırsat olasılığını artırır

Sonuç ve kişisel deneyim

  • 2024'teki startup işinden önce derleyiciyle ilgili bir sektör deneyimi yoktu
  • 2025'teki işe alım sürecinde saatlik ücreti düşük pozisyonlara da başvurdu, ancak fırsatlar doktora adaylarına gitti
  • 10 ay boyunca onlarca mülakatın ardından sonunda işe girdi; şu anda programların milisaniye düzeyinde performansını iyileştirmeye odaklanıyor
  • Derleyici alanında çalışanlardan kendisiyle iletişime geçmelerini istiyor ve Palo Alto bölgesindeki yeni başlangıcından söz ediyor
  • Son olarak kendi romanı **『You Had Me at Hello World』**ün yayımlandığını paylaşıyor

2 yorum

 
sacru2red 2025-11-11

Diğer alanlara kıyasla para ve itibar daha az olduğu için biraz mazoşistik bir eğilim gerekiyor

Vay be

 
GN⁺ 2025-11-10
Hacker News görüşleri
  • Derleyicilerle ilgilenen biri için katkıya ClangBuiltLinux projesinden ya da LLVM issue tracker'ından başlamayı tavsiye ederim
    LLVM ile Linux kernel issue listesi ve
    LLVM'in good first issue listesi incelenebilir

  • Yazının konusu biraz kişisel PR amacı taşıyor gibi geldi
    Ama gerçekten derleyici mühendisi olmak istiyorsanız, asıl önemli olan doğrudan bir derleyici yazmaktır
    Tokenization, AST oluşturma, type checking, IR (Intermediate Representation) gibi temel kavramları öğrenmek önemlidir
    LLVM tutorial'ı tavsiye ederim.
    MIT seviyesinde bir dahi olmanız gerekmiyor; bir dönemlik CS dersi kadar bilgiyle başlamak mümkün

    • Gerçekte, dil implementasyonu alanında uzmanlaşmış kişiler arasında bile doğrudan derleyici yazma fırsatı bulanlar nadirdir
      İlgili işler az olduğu için birçok kişi yapay zeka gibi başka alanlara yöneliyor
    • Şahsen Crenshaw'un “Let’s Build a Compiler” serisinin en iyi başlangıç kaynağı olduğunu düşünüyorum
    • LLVM yeni başlayanlar için fazla karmaşık; bu yüzden küçük bir Lisp ya da OCaml derleyicisi yapmak daha iyi bir başlangıç noktasıdır
    • “puff piece” ya da “attack vector” gibi ifadelerin fazla ağır olduğunu düşünüyorum. Sonuçta bu sadece kişisel blogda yayımlanmış kişisel bir hikaye
  • MIT mezunu olsanız bile derleyici mühendisliği alanında iş bulmanın kolay olmaması şaşırtıcı geldi
    Bu alan düşündüğümden daha dar ve giriş seviyesinden çok kıdemli odaklı bir pazar gibi görünüyor
    2001 dot-com balonu patladığında iş bulmak zordu, ama bugünkü durum da farklı bir açıdan epey zor görünüyor

    • MIT çift anadal mezununun bile iş bulmakta zorlanması, ekonomik durumun ciddiyetini hissettirdi
    • Bu alanda çok sayıda alt niş var — frontend dil semantiği, backend optimizasyonu, AoT vs JIT, CPU vs hızlandırıcılar gibi
      Sistem programlama bilgisi zayıf aday da çok
    • Birkaç yıl öncesine kadar durum o kadar zor değildi. Sonuçta derleyiciler de genel programlar ve birçok kişi işi yaparken öğrenip gelişiyordu
    • Şirketlerin çoğu derleyici tüketiyor, ama doğrudan derleyici geliştiren yer az. Bu yüzden pazarın kendisi küçük
  • Başlık birçok yöne dağıldı ama derleyici mühendisi işe alan yerleri toparlamaya çalışayım
    AMD, Nvidia, Intel, Apple, Google, Jane Street, Bloomberg, Qualcomm, Modular, AWS, ARM bunlardan bazıları
    Daha fazla bilgi CompilerJobs listesinde görülebilir
    Gerçekte ise başvuran sayısı işlerden çok daha fazla
    LLVM, Rust, Swift, Carbon gibi projelere katkı vermek en gerçekçi giriş yolu
    Kaynaklar: PL Resources,
    How to Learn Compilers (LLVM Edition),
    Compilers YouTube kanalı

    • Sürekli “lox interpreter” gibi örnekleri tekrar eden insanlardan bahsedilmesi komiğime gitti
    • DSP için LLVM backend yazmışlığım var. LLVM commit geçmişine bakarsanız daha fazla şirket listesi bulabilirsiniz
    • Derleyici alanında kalite odaklı bir kültür var; bu yüzden kişisel gelişim için çalışmak açısından da iyi bir alan
    • Microsoft da MSVC, C#, F#, CLR, rustc gibi çeşitli derleyici projeleri yürütüyor
    • “Sadece belirli bir dil için işe alıyorlar” sözünün tam olarak ne anlama geldiğini merak ettim
  • Onun sözünü ettiği “You Had Me At Hello World” kitabının başlığı çok sevimli geldi

    • Aklıma “et tu btrfs?” gibi parodi bir başlık da geldi
    • Bildiğim kadarıyla o kitap yıllar önce anlaşmaya bağlanmıştı ama intihal tartışması yüzünden yayımlanması gecikti
  • Yazının ortasında bir anda “bu benim fotoğrafım” denmesi şaşırttı

    • Diğer yazılara göre kendini öne çıkarma eğilimi daha baskın bir gönderi gibi göründü
  • 80'lerde derleyici mühendisi olmayı hayal ederek yüksek lisans yaptım, hatta LR parsing üzerine makale de yayımladım,
    ama o dönemde bile iş neredeyse yoktu. PCC ve GCC kaynaklarını inceleyerek ayakta kaldım,
    sonra GUI geliştirmeye geçtim ve Java/Swing çıktıktan sonra fırsatlar o tarafta çok daha fazlaydı

  • 20'lerinin başında Simon & Schuster ile ilk kitap anlaşması yapmış olması daha da ilginç geldi

    • Ama sonradan intihal nedeniyle sözleşmenin iptal edildiği söyleniyor
  • “Bir derleyici YouTube kanalı açmayı düşünüyorum” demesi akılda kaldı
    Karmaşık konuları blog yazılarıyla anlatmak bile başlı başına değerli olur gibi geliyor

    • Ama sırf işe girebilmek için kanal açmayı düşünmek, bugünkü iş piyasasının gerçekliğini gösteriyor.
      Sanki araba tamircisi olmak için önce kendi arabanı yapıp sürerken video çekmen gerekiyormuş gibi
  • Derleyici mülakatı öncesinde bu yazıya tesadüfen denk geldiğim için minnettarım
    Crafting Interpreters(bağlantı) ile çalışıyordum,
    ama interpreter ile compiler'ın farklı şeyler olduğunu ancak şimdi fark ettim
    Mülakata kadar zaman kalmadı, ama sonrasında Go ile yazılmış interpreter kitabı(bağlantı) ile
    Rona'nın tavsiye ettiği teknik kaynakları sırayla incelemeyi planlıyorum

    • Bana kalırsa Andrew Appel'in kitabı(Modern Compiler Implementation)
      backend algoritmalarını anlamakta çok yardımcı oldu. Dragon Book da bakmaya değer ama parsing kısmı atlanabilir
    • Acaba bu yazı daha önce başka bir makalede kullanılmış geri dönüştürülmüş içerik olabilir mi diye düşündüm