Intermediate Software Engineer
- Auckland
- Full time
- Engineering
About Narrative
Narrative is one of NZ’s fastest growing software-as-a-service (SaaS) companies. We build products that cater to a market of millions of professional photographers worldwide, working to significantly reduce their processing time by supporting a better daily workflow with AI powered tools. Our AI-powered tools help professional photographers from more than 160 countries improve their photo selection and photo editing workflows, significantly increasing their productivity. With the backing of top-tier Venture Capitalists – including Founders Fund – and a team of exceptionally talented staff, we are committed to driving innovation in this space.
Why you'll love working here
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 up to 6 months on full pay following return from parental leave (for both birthing and non-birthing parents)
Extended sick leave to support our team to get through the many things life can throw your way.
Based in our office on Karangahape Road in Auckland, New Zealand, with the option to work remotely for three days a week. We find it’s important to have time for face-to-face communication, while also allowing some days to work from home, if one wants.
Competitive salary commensurate with skills and experience, a 6 monthly review cycle, plus participation in a generous employee share option scheme.
About the Data Stack
Frontend development at Narrative is unique. You won't just be implementing UI and UX components; you'll be solving deep technical challenges at the intersection of performance, usability, and AI. You will be responsible for our Electron app, built with React, TypeScript, and NodeJS, which has access to the underlying OS. We use Canvas2D for image rendering and transformations, while Select's brain is a speedy daemon called Maxwell written in Rust that handles all the heavy lifting including image processing and ML analysis. Select operates in a multi-process environment—whether that's NodeJS processes, web workers, or Rust processes—which comes with its own set of considerations and concerns.
You’ll be dealing with problems not faced by traditional web apps. We are competing against native apps written in C++ using classic web technologies; a tall order for sure.
You’ll be working closely with Rust and AI engineers to deliver polished end-to-end features for Select. Given the nature of our product, we are a very performance-centric team. We’re always looking for new opportunities to make our product faster and to squeeze every last piece of performance out of the technologies we use.
You will also be relentlessly product-focused. You will take a keen interest in how our users are using the product, and 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, questioning how things are done, and experimenting with new approaches and technologies. You will be an active contributor within our engineering team, consistently following best practices while contributing ideas for improvements, participating in technical discussions, and helping maintain our testing standards.
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 the Role
As an Intermediate Software Engineer, you will be a key contributor to project-level solutions, taking ownership with appropriate support from the team. You will collaborate effectively within your team and across functions, contributing to technical design discussions and taking responsibility for development tasks within applications or services. This position is ideal for someone who is expanding their technical expertise, consistently follows best practices, and is building their ability to handle increasingly complex challenges while actively seeking input from colleagues when needed.
What You'll Do:
Scope and implement project-level solutions with minimal guidance, consistently following best practices.
Write maintainable code and provide helpful, timely code reviews.
Debug effectively within your primary area to identify root causes of issues.
Write engineering review proposals and contribute to technical design, thinking through failure cases.
Participate in on-call rotation, as applicable to your domain.
Master ability to break down tasks, plan, estimate, and cut scope to ship on time. Prioritise in alignment with company goals. Seek learning through retrospectives.
Collaborate professionally with teammates and peers.
Communicate clearly at team and engineering events, escalating blockers quickly, clarifying requirements and sharing assumptions.
Ask for guidance in unfamiliar areas, pull in others as needed, and persist in the face of roadblocks.
Engage in productive dialogue even with conflicting views, inside and outside team, seeking to understand other points of view.
Adapt your message for a diverse technical audience, choosing the appropriate medium and providing context.
Use team meetings and 1:1s to raise and resolve issues.
Seek feedback to improve and receive it well. Give timely, helpful feedback to peers.
Engage with Product Management on feasibility of requested features, clarifying requirements where necessary.
Seek input from colleagues with area expertise. Detect problems in requirements.
Take ownership and work autonomously on any development task within an application or service, delivering code on time and with a quality mindset.
Effectively use tools and dashboards. Instrument code for operations and monitoring.
Seek understanding of how users interact with product/service.
Understand how code fits into broader technical context.
Proactively add documentation to help others.
Mentor more junior engineers and find ways to help teammates achieve their goals.
Participate in hiring and provide clear, timely feedback on candidates.
About You
We are seeking a motivated Intermediate Software Engineer who is expanding their technical expertise and ready to take on project-level challenges with growing autonomy. The ideal candidate will possess:
Expanding experience and proficiency in our code base, with solid understanding of relevant areas.
Mastery of breaking down tasks, planning, estimating, and cutting scope to ship on time while prioritising in alignment with company goals.
The ability to consistently follow best practices and defend technical decisions in code review feedback.
Strong collaboration skills - working professionally with teammates and peers, seeking feedback to improve and receiving it well.
The ability to trust teammates, assume good intent, and disagree and commit when needed.
A growth mindset with regard to feedback and continuous learning through retrospectives.
The ability to voice concerns in a constructive manner and engage in productive dialogue even when there are conflicting views.
The ability to deliver work despite inevitable distractions while maintaining accountability.
Clear communication skills, able to adapt messages for diverse technical audiences and provide appropriate context.
The initiative to seek input from colleagues with area expertise when working in unfamiliar areas.
The drive to understand how users interact with products/services and exercise user empathy.
Skills & Experience
Required:
2–5 years of experience working with modern frontend technologies and patterns, with a focus on building and maintaining real-world applications (React, TypeScript, HTML, CSS, Tailwind, etc.).
Comfortable working in a cross-functional agile team, collaborating effectively with product, design, and engineering.
Writes clean, maintainable, well-structured code with an understanding of component design and frontend architecture.
Able to take ownership of well-scoped tasks while collaborating closely with senior engineers, open to learning and willing to share your own experience with the team.
Experience writing automated tests (unit, integration, or end-to-end) using tools such as Jest, React Testing Library, or Playwright.
Solid debugging skills within the frontend stack (developer tools, React DevTools, network debugging).
Clear communication skills, with the ability to adapt for different technical audiences.
Nice to Have:
Experience working with Electron.
Experience working with CI pipelines (e.g. GitHub Actions).
Experience with React meta-frameworks like Next.js.
Experience working with image or binary data in web applications.
A keen interest in photography or the creative arts.
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 men apply to jobs when they meet an average of 60% of the criteria, while women and other underrepresented individuals 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 directly on SEEK.