About the Role
About the Role
Tangram Flex is seeking a Software Engineer with Language Development Experience to help design, develop, and optimize core interpreter/transpiler infrastructure and language toolchains. In this role, you will work at the intersection of programming language design, hardware architecture, and systems engineering by translating high-level abstractions into high-performance, production-ready machine code.
Whether you are optimizing intermediate representations (IR), building custom front-ends/back-ends, or tuning domain-specific code generators (e.g., native compilers, DSLs, or transpilers), you will collaborate closely with software engineers, systems engineers, and defense stakeholders throughout the entire program lifecycle to turn design intent into executable, verified software reality.
What We Do
Our team and products provide solutions to enable innovators to design, develop, verify, and advance critical systems, while accelerating innovation that advances our nation's security. By accelerating delivery of critical systems, Tangram is transforming the way our nation solves complex software challenges.
Job Responsibilities
- Software Development & Implementation: Read, and write high-quality, efficient code in relevant languages, such as C, C++, Rust, and/or Python.
- Interpreter & Transpiler Development: Design, implement, and maintain interpreter components (front-end parsers, type checkers, optimization passes, and back-end code generators).
- Performance Tuning: Analyze generated assembly or IR, profile code execution, and implement IR-level and target-specific optimizations (vectorization, instruction scheduling, register allocation, auto-parallelization).
- Toolchain & Runtime Infrastructure: Support build systems, linkers, debuggers, static analysis tools, runtime systems, and garbage collectors/allocators.
- Architecture Support: Collaborate with hardware/systems engineering teams to define, target, and optimize for new Instruction Set Architectures (ISAs) or specialized hardware accelerators (GPUs, NPUs, TPUs, FPGAs).
- Language Design & Semantics: Contribute to the specification and implementation of domain-specific language (DSL) features or language extensions.
- Code Quality & Testing: Write comprehensive unit, regression, and benchmark test suites to ensure interpreter correctness, stability, and performance trackability.
- Collaboration & Communication: Partner cross-functionally with systems engineers and product teams to translate model characteristics and system requirements into test plans, and articulate technical findings clearly to both business and technical users.
Required Skills
- Bachelor's Degree in Computer Engineering, Computer Science, Electrical Engineering, Systems Engineering, or an equivalent technical field.
- Minimum of 3+ years of working on compilers, interpreters, or transpilers for parallel architectures.
- Ability to obtain or possess a current/or recent U.S. Government Security (DoW) Clearance. U.S. citizenship is required to obtain clearance.
- Programming languages: Systems programming language experience, such as C, C++, Rust, etc. Includes raw memory management, performance optimization, and modern best practices.
- Interpreter Fundamentals: Deep understanding of modern interpreter and/or transpiler architecture (lexing/parsing, ASTs, intermediate representations, control/data-flow analysis, and optimization passes).
- Target Architectures: Solid understanding of computer architectures (x86, ARM, RISC-V) and assembly language.
- Proven experience creating or extending language grammars.
- Travel required occasionally for customer support and presentations.
Preferred Skills
- Experience with production compiler frameworks (e.g., LLVM, GCC, MLIR, Cranelift).
Requirements
Bachelor's Degree
A degree in Computer Engineering, Computer Science, Electrical Engineering, or a related field is required.
Compiler Experience
At least 3 years of experience working on compilers, interpreters, or transpilers for parallel architectures.
Programming Languages
Proficiency in systems programming languages such as C, C++, and Rust.
Interpreter Fundamentals
A deep understanding of modern interpreter and/or transpiler architecture.
Computer Architectures
Solid understanding of computer architectures like x86, ARM, and RISC-V.
Nice to Have
Experience with frameworks like LLVM, GCC, or MLIR is a plus.