- Compiler Engineer वह software engineering field है जो programming languages को खुद डिज़ाइन नहीं करती, बल्कि मौजूदा languages को अधिक तेज़ और efficient तरीके से चलाने पर काम करती है
- इस भूमिका के अवसर पूरे software engineering job market का बहुत छोटा हिस्सा हैं, और entry barrier ऊँचा है तथा demand सीमित है
- hiring करने वाली संस्थाएँ startup, बड़ी tech companies, academia, finance, open source projects तक फैली हैं, लेकिन ज़्यादातर जगहों पर अनुभवी लोगों को प्राथमिकता दी जाती है
- interviews में C++-based algorithm implementation, language design, compiler optimization, low-level systems knowledge जैसे पहलुओं का गहराई से मूल्यांकन होता है
- MIT lectures और open source learning materials के सहारे तैयारी, और लगातार networking तथा referral नौकरी पाने की कुंजी हैं
Compiler Engineer क्या होता है
- compiler एक software tool है जो एक programming language में लिखे गए code को दूसरी language में बदलता है
- compiler engineer ऐसी languages के implementation और optimization की ज़िम्मेदारी संभालता है
- नई language डिज़ाइन करने से ज़्यादा इसका काम मौजूदा language की execution efficiency बढ़ाना होता है
- लेख की लेखिका San Francisco Bay Area की एक बड़ी tech company में programming language performance improvement पर काम कर रही हैं
यह लेख लिखने का कारण
- compiler क्षेत्र में नौकरी पाने से जुड़ी जानकारी online लगभग नहीं के बराबर है, इसलिए freshers और graduates के लिए एक व्यावहारिक guide देने के लिए यह लिखा गया
- machine learning या full-stack पर बहुत सामग्री मिलती है, लेकिन compiler से जुड़ा content कम है
- लगभग 1 साल के trial and error के बाद नौकरी पाने के अनुभव को साझा किया गया है
व्यक्तिगत करियर सारांश
- 2023 में MIT से mathematics और computer science में dual major के साथ graduation
- graduate research-based master's program छोड़ने के बाद, 2024 में New York के एक startup में open source language extension work किया
- उसके बाद San Francisco की एक listed tech company में नौकरी बदली
Compiler Engineer को कहाँ hire किया जाता है
- Indeed के अनुसार “software engineer” की 116,000 listings थीं, जबकि “compiler engineer” लगभग 400
- startup: freshers को hire किए जाने की संभावना अधिक, और लेखिका ने भी अपना पहला काम startup से शुरू किया
- बड़ी tech companies: Tesla, Waymo, Nvidia जैसी hardware और automotive-focused कंपनियाँ प्रमुख
- FAANG कंपनियों में intern conversion के ज़रिए entry के उदाहरण भी हैं
- academia: research funding में कमी के कारण अवसर सीमित
- quant finance firms: Jane Street, Five Rings आदि high-performance computing क्षमता तलाशते हैं
- open source projects: कुछ startups इस क्षेत्र में hiring करते हैं
Resume और networking strategy
- referral सबसे असरदार तरीका है
- परिचितों या उनके परिचितों के ज़रिए referral माँगना
- SNS profile पर "Rona likes compilers" लिखकर रुचि स्पष्ट की गई, जिससे networking के मौके मिले और वास्तव में interview तक बात पहुँची
- व्यक्तिगत पृष्ठभूमि (अमेरिकी citizenship, MIT degree आदि) ने भी मदद की
Interview के प्रकार
- LeetCode-style algorithms: BFS, priority queue जैसी data structures पर whiteboarding, और अधिकतर C++ का उपयोग
- language design: दिए गए constraints के तहत एक साधारण language का grammar लिखना
- programming language-related questions: पसंदीदा programming language और उसके कारण
- intermediate representation (IR): x86 assembly की व्याख्या और transformation, साथ में MLIR-based assignments
- optimization passes: MLIR assignment में algebraic simplification optimization pass लिखना, constant propagation और dead code elimination pass implement करना
- compiler fundamentals: compiler के components, optimization techniques, static vs dynamic compiler की व्याख्या
- graph theory: control flow graph, register allocation जैसी graph-based compiler representations पर सवाल (लेखिका के undergraduate thesis topic का प्रभाव)
- low-level systems topics: deadlock, race condition, special-purpose registers, instruction pipeline, memory allocation, binary representation और operations, garbage collection आदि
- behavioral questions: “आप compiler पर काम क्यों करना चाहते हैं” जैसे motivation-केंद्रित प्रश्न
Interview की तैयारी
- MIT OCW lectures को केंद्र में रखकर पढ़ाई
- Computation Structures: pipeline, assembly, binary operations जैसे low-level concepts
- Computer Language Engineering: C++ और large codebase experience
- Performance Engineering: performance optimization पर केंद्रित, और मौजूदा नौकरी पाने में निर्णायक
- Theory of Computation: language grammar design को समझने में सहायक
- Cornell का Advanced Compilers self-study course भी देखा
क्या बेहतर किया जा सकता था, और क्या सीखा
- mentor की कमी: LinkedIn के ज़रिए networking की ज़रूरत समझ में आई
- specialized books (Engineering a Compiler, Dragon Book) concepts revise करने में उपयोगी हैं, लेकिन practical interview prep के लिए सीमित
- interview questions record न करना: interview के बाद सवालों को लिखकर revise न करना एक गलती थी
- open source contribution की कमी: Carbon, Mojo जैसे projects देखे, लेकिन वास्तव में योगदान नहीं दिया। open source learning और networking दोनों के लिए प्रभावी है
Compiler क्यों चुना
- पहले mathematics PhD पर विचार था, लेकिन REU summer research program के बाद ऐसा काम चाहा जिसका असर अधिक तुरंत दिखे, इसलिए computer science में dual major जोड़ा
- theoretical thinking और low-level programming की समानता ने आकर्षित किया
- low-level programming में गणित की तरह बुनियादी सिद्धांतों से पूरी दुनिया गढ़ने जैसा एहसास आकर्षक लगा
- machine learning की empirical प्रकृति के विपरीत, axioms से पूरा ब्रह्मांड बनाने वाले दृष्टिकोण को प्राथमिकता दी
- MIT में compiler community में ऐसे बहुत लोग थे जो लेखिका को पसंद थे, और दूसरे क्षेत्रों की तुलना में पैसा व शोहरत कम होने से इसमें थोड़ी masochistic प्रवृत्ति भी चाहिए
Tech job market और सलाह
- लेखिका के Oregon के दोस्त (Oregon State आदि non-elite public universities से) सैकड़ों applications के बाद भी केवल लगभग 4 interviews पा सके
- resources का पूरा उपयोग करें और खुद को अलग दिखाएँ: open source community में भाग लें, social media का उपयोग करें, university resources का इस्तेमाल करें (चाहे ऐसा club ही क्यों न शुरू करना पड़े जिसमें कोई न आए)
- लोगों से सीधे मिलें: systems reading groups आदि में भाग लें (New York systems group of Eric का उल्लेख)
- compiler पर YouTube channel शुरू करने पर भी गंभीरता से विचार
- ये सब सीधी नौकरी की गारंटी नहीं देते, लेकिन मौके की संभावना बढ़ाते हैं
निष्कर्ष और व्यक्तिगत अनुभव
- 2024 के startup जॉइन करने से पहले लेखिका के पास compiler industry का कोई अनुभव नहीं था
- 2025 की hiring process में कम hourly pay वाले positions पर भी apply किया, लेकिन अवसर PhD candidates को मिला
- 10 महीनों में दर्जनों interviews के बाद आखिरकार नौकरी मिली, और अब वे program की millisecond-level performance improvement पर काम कर रही हैं
- compiler क्षेत्र में काम करने वालों से संपर्क करने का अनुरोध, और Palo Alto क्षेत्र में नई शुरुआत का उल्लेख
- अंत में अपनी novel
You Had Me at Hello World के प्रकाशन की खबर साझा की
2 टिप्पणियां
दूसरे क्षेत्रों की तुलना में पैसे और शोहरत कम होती है, इसलिए थोड़ा masochistic स्वभाव चाहिए
हे भगवान
Hacker News राय
अगर किसी की compiler में रुचि है, तो ClangBuiltLinux प्रोजेक्ट या LLVM issue tracker में contribution शुरू करने की सलाह दी गई
Linux kernel with LLVM issue list और
LLVM good first issue list देखी जा सकती है
लेख का विषय कुछ लोगों को व्यक्तिगत प्रचार जैसा लगा
लेकिन अगर सच में compiler engineer बनना है, तो खुद compiler बनाकर देखना सबसे ज़रूरी है
tokenizing, AST बनाना, type checking, IR (Intermediate Representation) जैसे बुनियादी concepts सीखना महत्वपूर्ण है
LLVM tutorial की सिफारिश की गई।
MIT-स्तर का जीनियस होना ज़रूरी नहीं, एक semester के CS course जितनी तैयारी से भी शुरुआत की जा सकती है
संबंधित नौकरियाँ कम हैं, इसलिए कई लोग AI जैसे दूसरे क्षेत्रों में चले जाते हैं
यह बात चौंकाने वाली लगी कि MIT पृष्ठभूमि होने पर भी compiler engineering में नौकरी पाना आसान नहीं है
यह क्षेत्र सोच से ज़्यादा छोटा है, और entry-level की तुलना में senior-केंद्रित market जैसा लगता है
2001 के dot-com bubble फूटने के समय नौकरी पाना कठिन था, लेकिन अभी की स्थिति अलग तरह से मुश्किल दिखती है
और कई उम्मीदवारों के पास systems programming का पर्याप्त ज्ञान नहीं होता
thread कई दिशाओं में चला गया, लेकिन compiler engineer को hire करने वाली जगहों की एक सूची दी गई
AMD, Nvidia, Intel, Apple, Google, Jane Street, Bloomberg, Qualcomm, Modular, AWS, ARM आदि
संबंधित जानकारी CompilerJobs list में देखी जा सकती है
व्यवहार में उम्मीदवारों की संख्या नौकरियों से कहीं ज़्यादा है
LLVM, Rust, Swift, Carbon जैसे projects में contribution करना सबसे व्यावहारिक entry path बताया गया
संदर्भ सामग्री: PL Resources,
How to Learn Compilers (LLVM Edition),
Compilers YouTube channel
उसने जिस किताब “You Had Me At Hello World” का ज़िक्र किया, उसका शीर्षक बहुत प्यारा लगा
लेख के बीच में अचानक “यह मेरी तस्वीर है” आ जाने से कुछ लोग चौंक गए
80 के दशक में compiler engineer बनने का सपना देखते हुए किसी ने master’s degree ली और LR parsing पर paper भी प्रकाशित किया,
लेकिन तब भी नौकरियाँ लगभग नहीं थीं। PCC और GCC source code पढ़कर समय बिताया,
बाद में GUI development की ओर चले गए, और Java/Swing आने के बाद उस दिशा में कहीं ज़्यादा अवसर मिले
कुछ लोगों को इससे भी ज़्यादा दिलचस्प यह लगा कि उसने 20s की शुरुआत में ही Simon & Schuster के साथ debut contract हासिल कर लिया था
“compiler YouTube channel शुरू करने पर सोच रही हूँ” वाली बात प्रभावशाली लगी
blog के ज़रिए भी जटिल विषयों को व्यवस्थित करना काफ़ी मूल्यवान हो सकता है
मानो car mechanic बनने के लिए पहले खुद कार बनानी पड़े और उसे चलाते हुए वीडियो भी रिकॉर्ड करना पड़े
compiler interview से ठीक पहले संयोग से यह लेख पढ़ने पर आभार जताया गया
Crafting Interpreters(लिंक) से पढ़ाई चल रही है,
लेकिन अब जाकर समझ आया कि interpreter और compiler एक जैसी चीज़ें नहीं हैं
interview तक समय कम है, लेकिन उसके बाद Go में लिखी interpreter book(लिंक) और
Rona द्वारा सुझाई गई तकनीकी सामग्री को व्यवस्थित रूप से पढ़ने की योजना है
backend algorithms को समझने में बहुत मददगार रही। Dragon Book भी देखने लायक है, लेकिन parsing वाला हिस्सा छोड़ा जा सकता है