Senior Compiler Developer (Kotlin Compiler
Job description
About the role
This position sits within the Kotlin Compiler team and owns the core pipeline that connects the compiler frontend with multiple backend targets. You will shape the internals of Kotlin compilation, ensuring language features are implemented correctly and efficiently. The role demands rigorous analysis of compiler internals to improve correctness, performance, and robustness across diverse platforms. You will collaborate closely with other Kotlin teams to align language evolution with real-world ecosystem needs. A significant part of the work involves enhancing the developer experience for Kotlin users through tooling and workflow improvements. Success in this role is measured by the stability and speed of the compiler pipeline and the clarity of technical communication. You are expected to turn complex compiler challenges into maintainable, well-tested solutions that scale.
Key facts
What you'll do
Ownership is established over the central compiler pipeline that links frontend and backend stages.
You will develop and implement language features to expand Kotlin capabilities across compilation targets.
You will implement and fine-tune intermediate representation lowering passes to improve correctness and robustness.
You will investigate and resolve compiler bugs and edge cases to increase reliability and stability.
You will improve compiler performance and memory usage to deliver faster and more efficient builds.
You will collaborate with other Kotlin teams to shape language evolution and ensure alignment with ecosystem needs.
You will enhance the developer experience for Kotlin users through tooling and workflow improvements.
You will analyze compiler behavior to identify bottlenecks and design strategies for optimization.
You will contribute to the long-term maintainability and clarity of the compiler codebase.
You will participate in design discussions that influence the future direction of the Kotlin language.
You will work closely with QA and product teams to validate fixes and verify compiler correctness.
You will mentor and guide junior engineers by reviewing code and sharing best practices in compiler engineering.
You will write clean, maintainable, and well-tested code to ensure the stability of the compiler pipeline.
You will engage in continuous learning to keep up with advances in compiler technology and language design.
Requirements
Proficiency in developing with Kotlin/JVM or Java is required for effective implementation and maintenance.
A deep understanding of algorithms and data structures is necessary to design compiler-level solutions.
Clean, maintainable, and well-tested code must be produced to ensure long-term stability.
Experience in compiler development is a definite advantage for tackling complex compiler challenges.
Experience developing Gradle plugins is advantageous for build-tool integration.
Demonstrated success in optimizing JVM application performance is also advantageous.
A degree or equivalent experience may be required for this role.
You must be able to work with source code analysis and transformation at scale.
Strong problem-solving skills are essential when dealing with intricate compiler behavior.
You must be comfortable working in a fast-paced environment with evolving priorities.
You must be able to communicate technical ideas clearly to both technical and non-technical audiences.
You must be committed to writing reliable, maintainable, and efficient compiler code.
You must be able to collaborate effectively within a distributed, cross-functional team.
You must be willing to engage in code reviews and incorporate feedback to improve overall quality.
You must be comfortable using version control and modern development workflows.
Nice to have
Experience developing Gradle plugins is advantageous for build-tool integration.
Demonstrated success in optimizing JVM application performance is also advantageous.
Practical notes
This role may require a degree or equivalent experience.
Work location flexibility includes home and office options.
Typical interview steps
Hiring for engineering roles usually starts with a recruiter screen, followed by one or two technical rounds. Candidates often solve a coding problem, discuss past projects, and answer system design questions. Some loops include a take-home task. Final rounds typically cover team fit and give candidates a chance to ask questions. Interviewers look for how you break down an unfamiliar problem, not just whether you reach the answer. Practicing a few problems aloud and reviewing your own past projects are the best preparation.
Good to know
Kotlin is a statically typed language running on the JVM and other platforms, widely used for Android, backend, and multiplatform projects.
Compiler development relies on deep knowledge of language semantics, optimization techniques, and testing strategies.
Tools commonly used in this area include IDEs, build systems, bytecode libraries, and custom compiler pipelines.
Ownership, precision, and clear communication are valued when proposing and implementing language changes.
Long-term focus on quality, maintainability, and backward compatibility is central to the role.
Collaboration across teams is common to align language evolution with developer needs and ecosystem trends.
Questions to ask
Useful questions for the interview: what a typical week looks like, how work is assigned, what tools the team uses, and how feedback works. Asking how the role has changed recently and what the team wishes it had known when joining is also reasonable. Questions about the manager's priorities are especially valued.
Career growth
Engineering careers usually progress from individual contributor to senior, staff, and principal levels. Some engineers move into management and lead teams of five to twenty people. Others stay on the technical track. Growth follows demonstrated impact, not tenure alone. A typical engineering ladder has clear levels with defined expectations for scope, quality, and mentorship. Moving up usually requires owning outcomes end to end rather than completing assigned tickets.