R&D Software Engineer – Confidential Computing (CTO Team)
Midokura is seeking candidates who are interested in developing novel engineering solutions in a wide variety of problem domains, including distributed systems, machine learning, edge computing, IoT, security, and cloud infrastructure.
You will be working in the CTO team, a versatile and diverse group of software engineers, program managers, and designers. The team is built on collaboration, execution excellence and technical leadership, and is always learning and adapting to new technologies. In our team you will have a supportive platform to grow your software design and development skills while working on the latest research innovations. Our projects span topics such as safe languages, distributed machine learning, security using trusted execution environments, the Internet of Things (IoT), and more. Working on a different project every 6 to 18 months, you will be able to propose solutions, architect and implement them, then evaluate/ship/transfer them as needed. You should be passionate about technology and innovating, be eager to learn and grow, enjoy creative thinking and collaboration, and be comfortable dealing with ambiguity.
One of our projects involves running sensitive computation in trusted execution environments, such as Intel SGX, AMD SEV, ARM TrustZone, etc. Challenges include access to coprocessors and peripherals such as GPUs, NPUs, in a manner that does not compromise the privacy or the integrity of data.
We are looking for a highly motivated individual with excellent coding abilities who is willing to learn new technologies and innovate and has strong analytical, problem-solving, and communication skills, as well as the ability to take on multiple responsibilities at once. Must be able to work in a fast-paced environment with teams distributed around the globe.
- Work with CTO and developers to develop and drive a high-impact research agenda and engineering plan.
- Collaborate with engineering teams to develop and test out new ideas.
- Collaborate with academic and industry partners to develop new technologies.
- Build software systems that test new approaches or develop novel theoretical and practical insights.
- Assist in the preparation of technical papers and patent applications.
Desired Skills and Experience
- 5+ years of experience in software development, or equivalent years of graduate studies.
- Experience in computer architecture and operating systems
- Experience in systems programming in C, C++, or Rust
- Willingness to dig into low-level architectural details
- Familiarity with security monitors
- Familiarity with Intel SGX or AMD SEV
- Experience with Version Control tools and Continuous Integration frameworks.
- Excellent analytical skills.
- Strong written and verbal communication skills.
- Fluent in written and spoken English.
Additional skills and experience as a plus
- Experience in computer security
- Container technologies such as Kubernetes and Docker.
- Machine Learning libraries, such as Tensorflow and Pytorch.
- Experience with Federated learning
- Familiarity with compilers, such as LLVM
- Familiarity with AMD64, ARM, RISC-V assembly
MS or PhD in Computer Science, or a related field, required.
EU or Swiss Residence (Mandatory)
- Strong written and verbal communication skills in English (Full Professional Proficiency)
- Spanish or Japanese as a plus
- Job location in Barcelona (Spain) or Lausanne (Switzerland)