About the Role
About the Role
The Senior Software Engineer role focuses on analyzing and improving the Arm architecture for language runtimes and compilers. You will collaborate with architects and runtime engineers to ensure effective implementation of architecture features in real-world applications.
Responsibilities
- Analyse architecture features and find opportunities for their use in language runtimes and compilers.
- Work with architects to suggest or improve proposals, as appropriate.
- Own and be accountable for specific investigations, with guidance where appropriate.
- Collaborate with colleagues across Arm to improve the Arm architecture, and to ensure it is effectively used.
- Contribute to open-source software projects and engage with open-source communities.
- Contribute to documentation efforts (including internal documentation and external blog posts) to communicate findings.
- Help develop tooling and automation to support the above activities.
Required Skills and Experience
- A flexible, problem-solving approach, and a commitment to extend the breadth and depth of knowledge.
- Experience working on language runtimes, compilers or similar technologies.
- Strong programming skills in at least one of C, C++ or Rust.
- Familiarity with concepts of computer architecture and microarchitecture, such as cache hierarchies and CPU pipelines, preferably relating to AArch64.
Nice-to-Have Skills and Experience
- Proficiency in one or more of Java, JavaScript, Python, Rust or WebAssembly.
- Familiarity with assembly language and low-level development for AArch64.
- Familiarity with Linux performance analysis tools and system-level performance tuning.
- Familiarity with build systems and CI.
- Experience contributing to open-source projects.
In Return
You will have the opportunity to learn about and influence the latest Arm architecture features, working closely with highly skilled engineering teams on ground-breaking technology. You will collaborate with diverse compiler and runtime teams and open-source communities, contributing to language implementations used by millions of developers worldwide. You will be empowered to continually identify and roll out improvements to our ways of working.
Our 10x Mindset
At Arm, we believe progress happens when people are empowered to think bigger and push beyond what seems possible. Our 10x mindset is about curiosity, ambition and creating impact that will be used by millions. We learn fast, prioritise collaboration and turn bold ideas into real technology. We look for people who are inspired by this way of working and want to grow in an environment where bold ideas are welcomed.
Requirements
Problem-solving skills
A flexible, problem-solving approach, and a commitment to extend the breadth and depth of knowledge.
Language runtimes experience
Experience working on language runtimes, compilers or similar technologies.
Programming skills
Strong programming skills in at least one of C, C++ or Rust.
Computer architecture knowledge
Familiarity with concepts of computer architecture and microarchitecture, such as cache hierarchies and CPU pipelines, preferably relating to AArch64.
Nice to Have
Proficiency in one or more of Java, JavaScript, Python, Rust or WebAssembly.
Familiarity with assembly language and low-level development for AArch64.
Familiarity with Linux performance analysis tools and system-level performance tuning.
Familiarity with build systems and CI.
Experience contributing to open-source projects.
Benefits
Learning opportunities
You will have the opportunity to learn about and influence the latest Arm architecture features.
Collaboration with skilled teams
Work closely with highly skilled engineering teams on ground-breaking technology.
Empowerment for improvements
You will be empowered to continually identify and roll out improvements to our ways of working.