Senior Rust Engineer
Permanent role: Starting as soon as a candidate is available.
Location: Based in our office on Karangahape Road in Auckland, New Zealand; with some days of the week optionally remote (however, we’re all currently remote due to lockdowns). We are also supportive of fully remote members in New Zealand.
Narrative is one of NZ’s fastest growing software as a service (SaaS) companies with global customers. Narrative builds products to serve the 5 million professional photographers worldwide, working to significantly reduce their processing time and to support their daily workflow with AI powered tools. We’re backed by some of the best VC’s worldwide, with talent from Dropbox, Google and some of NZ's best people working together to solve this.
We have thousands of photographers using our products and we’re growing. This is a unique opportunity to join our team and build industry-leading AI products.
We're committed to building products for professional photographers who work with people from all genders, ethnicities, racial and religious backgrounds. We think it’s important that our team reflects the same diverse audience. We're actively working to grow a diverse team and offer: flexible and remote working options, 1 month paid parental leave in addition to government leave, 30 hours a week for 6 months on full pay following return from parental leave (for both birthing and non-birthing parents) and extended sick leave to support our team to get through the many things life can throw your way.
About the Role:
You’ll be working on Narrative’s engineering team helping to develop our product Narrative Select - a blazingly fast image selection tool powered by AI and loved by professional photographers.
You’ll join the team with a strong focus on systems development using Rust.
Working at Narrative will give you a chance to grow your skills in Rust, a first-class language for Systems Engineering that allows us to move quickly while providing a high degree of reliability and stability for our users. Rust fits perfectly in a modern heterogeneous computing environment, giving us the kind of low-level access to hardware we need while protecting us from many of the pitfalls that usually come with the low-level software domain. It also has best-in-class tooling and platform support that makes our lives easier as developers.
You’ll be working closely with frontend and AI engineers to deliver engaging and performant features to our users.
You will also be relentlessly product-focused. You will take a keen interest in how our users are using the product, how they wish it was better, using hard quantitative and qualitative data to inform concrete product-driven decisions. You understand that everything is a tradeoff, and there are simply not enough hours in the day to do everything. To that end, you are constantly focusing on the most important issues for the product.
In order to succeed in this role, you will need to be curious. We want people who will bring a fresh perspective, question how things are done and experiment with new approaches and technologies. You will hold a very senior role within our engineering team, helping to form a vision for the architecture of our app, preaching best practices, advocating for better testing techniques, and helping to mentor and level up to junior developers.
This is a rare opportunity to have influence and impact on a world-class product in an early stage and help make it a success.
About our technology:
Narrative Select is an Electron app built using Web technologies such as React and Typescript. We use Canvas2D for image rendering and transformations. Select’s brain is a speedy wee daemon called Maxwell written in Rust. Maxwell does all the heavy lifting for Select, including image processing and ML analysis.
You might work on:
Creating new APIs to expose low-level functionality to the Electron frontend.
Optimizing performance and architecture in parts of our image scanning and ML processing pipelines.
Interfacing from Rust into existing C and C++ libraries and integrating them into our build and CI pipeline.
Using hardware acceleration APIs such as OpenCL, Metal, Vulkan and CoreML to further accelerate workloads and offload work from the CPU.
Adding new ML models to our processing pipeline using backends such as TVM, Tensorflow, ONNX, XGBoost and CoreML.
Working with the product, frontend and machine learning teams to construct feasibility assessments and estimates for new projects. This includes opportunities to propose your own projects directly to the company leadership.
Maintaining our CI/release pipelines and infrastructure.
Our ideal candidate:
The ideal candidate for this role brings a wealth of experience and wisdom to the team, but with a strong sense of humility and empathy. Experience with specific technologies is less important than the knowledge of how to live in a small but fast moving startup environment, a good intuition for clean and sustainable software design/architecture, and a strong desire to help everyone on the team do their best work.
We expect the applicant for this position to be able to architect solutions in an incremental fashion while ensuring consistency and coherency of the whole where practically possible. Writing automated tests and sharing knowledge should be baseline deliverables as part of any new feature or behavior you are authoring.
Despite expecting an experienced developer for this role, we don’t require applicants to have any experience writing production Rust code. Having a proven interest in Rust over time and enough familiarity with Rust to allow you to use it to solve basic problems is sufficient for a start. We believe that the technical experience we’re looking for in this role mostly transcends the boundaries of specific programming languages.
Nice to have:
Experience with image container formats and codecs such as TIFF, JPEG, HEIF, PNG, etc.
Experience with image metadata standards such as EXIF and XMP.
Experience writing C or C++ code.
Familiarity with hardware-acceleration APIs such as OpenCL, OpenGL, Metal, Vulkan, CoreML, DirectML, etc.
Experience in async green-thread environments such as Goroutines, JS Promises, C++ Coroutines or Rust Futures (async/await).
Familiarity with native software development and distribution on MacOS or Windows.
An understanding of machine learning, machine vision or image processing.
An interest in photography.
Narrative is committed to building AI software that works for people from all genders, ethnicities, racial and religious backgrounds. We want our team to reflect this focus. Research shows that white men apply to jobs when they meet an average of 60% of the criteria, while women and other marginalised folks tend to only apply when they check every box. So, if you really love the idea of working for Narrative, and think you have what it takes, please apply, even if you do not tick every box in the job description.
If this sounds like you, please apply with a cover letter and CV here.