Senior Generator Engineer | Code Generation & Developer Tooling
💰 $150,000 - $250,000
🎯 Role Definition
As a Generator Engineer, you will be a force multiplier for our entire engineering organization. You will architect and implement sophisticated systems that automatically generate high-quality, performant, and maintainable code from abstract models and definitions. This role sits at the intersection of compiler design, software architecture, and developer experience. You will be responsible for creating the tools and infrastructure that our developers use every day to build new features, ensuring consistency, reducing boilerplate, and enabling our platforms to scale. If you are passionate about building elegant solutions to complex engineering problems and love creating tools that empower other engineers, this is the perfect opportunity for you.
📈 Career Progression
Typical Career Path
Entry Point From:
- Senior Software Engineer (Infrastructure/Backend)
- Compiler Engineer
- Data Infrastructure Engineer
- Senior SRE with a focus on automation
Advancement To:
- Principal Engineer (Developer Tooling/Compilers)
- Staff Engineer (Platform Infrastructure)
- Engineering Manager (Developer Experience)
Lateral Moves:
- Principal Data Architect
- Senior Site Reliability Engineer (SRE)
Core Responsibilities
Primary Functions
- Design, develop, and maintain robust, scalable code generation frameworks and Domain-Specific Languages (DSLs) to automate the creation of APIs, data models, and service scaffolding.
- Architect and implement parsers, abstract syntax tree (AST) manipulation libraries, and code emitters for multiple target languages such as C++, Python, and Go.
- Collaborate closely with product, hardware, and software engineering teams to understand their requirements and translate them into efficient, automated code generation solutions.
- Own the end-to-end lifecycle of our internal generation tools, from initial design and prototyping to deployment, documentation, and long-term maintenance.
- Integrate the code generation pipeline seamlessly into our CI/CD systems (e.g., Jenkins, GitLab CI, Bazel) to ensure a smooth and fully automated developer workflow.
- Drive performance optimization initiatives for the code generation process itself, as well as for the output code, focusing on runtime efficiency and memory footprint.
- Develop comprehensive validation and verification strategies to guarantee the correctness, quality, and security of all machine-generated code.
- Champion best practices in metaprogramming and code generation across the engineering organization through documentation, tech talks, and direct mentorship.
- Evaluate and prototype new technologies, compiler frameworks (like LLVM), and industry trends to continuously improve our tooling and developer productivity.
- Create and maintain clear, detailed, and comprehensive documentation for all developed frameworks, DSLs, and APIs to ensure broad adoption and ease of use.
- Debug and resolve complex issues found in the code generation toolchain and its output, often requiring deep dives into compiler internals and language specifications.
- Build sophisticated testing harnesses and static analysis checks to prevent regressions and enforce coding standards in the generated artifacts.
- Lead architectural discussions and design reviews for new generation systems, ensuring they align with the company's long-term technical vision.
- Mentor junior engineers on the team, providing guidance on software design principles, compiler theory, and best practices in tool development.
- Manage the evolution of our data schemas and interface definitions, ensuring backward compatibility and smooth transitions during system upgrades.
- Define and track key performance indicators (KPIs) for developer productivity and tool adoption to measure the impact of your work.
- Partner with security teams to ensure that our code generation frameworks produce secure-by-default code and mitigate common vulnerabilities.
- Automate the generation of client libraries, SDKs, and documentation from API specifications (e.g., OpenAPI, gRPC, Protobuf).
- Build systems for transforming and migrating large volumes of existing code to new patterns and architectures using automated refactoring tools you create.
- Act as a subject matter expert on language interoperability, helping teams bridge gaps between different programming environments like Python, C++, and Java.
- Develop tooling to analyze and visualize dependencies between generated code and upstream models, providing insights into system architecture.
Secondary Functions
- Support ad-hoc data requests and exploratory data analysis related to tool usage and code metrics.
- Contribute to the organization's broader data strategy and technology roadmap.
- Collaborate with various business units to translate their unique data and logic needs into engineering requirements for the generation platform.
- Participate actively in sprint planning, retrospectives, and other agile ceremonies within the developer experience team.
Required Skills & Competencies
Hard Skills (Technical)
- Expert-level proficiency in at least one systems programming language (e.g., C++, Go, Rust) and one scripting language (e.g., Python).
- Deep understanding of compiler design principles, including parsing (lexers/parsers), abstract syntax trees (ASTs), and code generation.
- Hands-on experience with compiler infrastructure like LLVM, or parser generators like ANTLR.
- Proven experience designing and implementing Domain-Specific Languages (DSLs).
- Strong knowledge of build systems (Bazel, CMake, Make) and CI/CD pipelines (Jenkins, GitLab CI).
- Experience with metaprogramming techniques and code generation template engines (e.g., Jinja2, Mako).
- Proficiency with data serialization formats such as Protobuf, Thrift, or JSON Schema.
- Solid understanding of software architecture, API design (REST, gRPC), and distributed systems.
- Strong debugging and performance optimization skills across the full software stack.
- Expertise in version control systems, particularly Git, and collaborative development workflows.
Soft Skills
- Exceptional Problem-Solving: Ability to dissect complex, abstract problems and devise elegant, scalable solutions.
- Strong Communication: Capable of clearly articulating complex technical concepts to both technical and non-technical audiences.
- Collaboration and Teamwork: A proactive partner who thrives in a team-oriented environment and can work effectively across different functions.
- Ownership and Autonomy: A self-starter who takes full ownership of projects from conception to completion with minimal supervision.
- Mentorship: A desire to share knowledge and elevate the skills of fellow engineers.
- Pragmatism: Ability to balance technical perfection with practical business needs and delivery timelines.
Education & Experience
Educational Background
Minimum Education:
- Bachelor's degree in Computer Science, Computer Engineering, or a closely related technical field.
Preferred Education:
- Master's or PhD in Computer Science with a specialization in Compilers, Programming Languages, or Systems.
Relevant Fields of Study:
- Computer Science
- Software Engineering
- Electrical & Computer Engineering
Experience Requirements
Typical Experience Range: 5-10+ years of professional software development experience.
Preferred:
- At least 3+ years of direct experience in building developer tools, compilers, static analysis, or large-scale code generation systems.
- A portfolio of open-source contributions to relevant projects (e.g., compilers, build systems, linters) is a strong plus.