Senior Rust Engineer

  • Auckland, New Zealand or anywhere remote in NZ
  • Full time
  • Engineering

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. We are also supportive of fully remote members in New Zealand.

Hiring: Applications accepted immediately. Interviews beginning April 29th.

About Narrative:

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 VCs worldwide, with talent from Shopify, 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 all 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 Select - a blazingly fast image selection and editing tool powered by AI and loved by professional photographers.

You’ll join the team with a strong focus on application development using Rust and React/TypeScript.

You’ll be working closely with frontend, cloud 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 the 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:

Select is an Electron app built using Web technologies such as React and Typescript. 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 inferencing.

You might work on:

Creating new APIs to expose functionality to the Electron frontend.

Building out image scanning and ML processing pipelines, both on the desktop and in the cloud.

Interfacing from Rust into existing C and C++ libraries and integrating them into our build and CI pipeline.

Adding new ML models to our processing pipeline using cross-platform ML inference environments such as ONNX.

Working with the product, frontend, cloud 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.

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 and pragmatic fashion while ensuring consistency and coherency of the whole where practically possible. Sharing knowledge should be a baseline deliverable 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 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.

This role has a strong research component. Candidates should be able to investigate new technical solutions, especially in the photography domain.

Ideal candidates will have commercial experience developing desktop or mobile applications.

Nice to have:

An interest in photography, and/or a deep understanding of the professional photography software industry.

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, C++, Python or Elixir code.

Familiarity with hardware-acceleration APIs such as OpenCL, Metal, Vulkan, WebGPU, CUDA, etc., or familiarity with SIMD.

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 OSX or Windows.

Familiarity with distributing native code to Web applications, such as WebAssembly or Node.js C++ Add-ons.

An understanding of machine learning, computer vision or image processing, e.g. PyTorch, numpy, pillow, OpenCV, etc.

Experience with cloud computing, Docker etc.

At Narrative, we're building AI software to help a wide range of people. We're looking for a team that shares our passion for this work. Research shows that some candidates apply when they meet about 60% of the criteria, while others hesitate unless they meet them all. If you're excited about joining Narrative and eager to grow, go ahead and apply - even if you don't check every box.

If this sounds like you, please apply with a cover letter and CV here. Applications must be made through the link on SEEK to be considered.

Learn about working at Narrative