Senior Software Developer (Motion Team)
Department : Engineering
Employment Type : Full Time
Location : Vancouver
Reporting To : Caitlin Hutnyk
Compensation : $165,368 - $184,954 / year
Description
We are hiring a Senior Software Developer to join our Motion team!
Our Spare headquarters is located in Vancouver, BC, but this position is open to remote work options within Canada. Unfortunately, we are not able to hire this position outside of Canada at this time.
As a Senior Software Developer in the Motion team, you will...
- Work with traffic, routing, and vehicle routing algorithms;
- Work with a functional language around 25% of your time (Scala);
- Be in a high-impact position, empowered to make decisions that lead us to success while building complex products and features;
- Be highly involved in product and design discussions related to code architecture;
- Collaborate with and mentor engineers of all levels;
- Actively participate in the day-to-day operations of the team, contributing ideas for how the team can better meet the needs of customers;
- Work on a complex distributed system, where real-time data updates and impacts the system every second
- Mentor other developers on the team
- Help us iterate and improve upon current engineering processes, to improve efficiency and to ensure 99.99% uptime and support the team in doing the same;
About this role
In this role, you will...
- Deliver high-quality code. Design, code, test, document, and release new features using a combination of tools and languages (like Javascript / Typescript, Scala, Docker, Kubernetes and GCP, for example);
- Improve routing engine for driver application;
- Participate in team agile rituals;
- Uplift the team capacity (collaborating with engineers of all levels, mentoring junior engineers, improving code base);
- Demonstrate an unrelenting focus on quality, speed, and overall excellence;
- Provide input for the ongoing improvement of engineering practices and procedures;
- Be part of on-call SRE team, after fully ramping up to the rest of this roles responsibilities;
- Occasionally talk to customers to better understand their needs and how to achieve them
About you
- You have experience as a full stack or backend software engineer, using any programming language;
- You have experience working with real-time, complex, or distributed systems
- You have had ownership over complex projects in the past, participated in architectural conversations, proposed multiple solutions to a problem and understands their pros and cons;
- You have worked closely with customers and external developers to enable them to build new apps and extend the functionality;
- You understand other business and strategic aspects that are involved in the projects, can prioritize and can estimate the number of hours invested;
- You have worked in a company that is tech-focused (better yet if you got to grow in a company like that);
- Experience with Typescript and Scala;
- Experience with architecting and deploying distributed systems;
It will be considered a plus (nice-to-have) :
- Experience in the transit industry or with vehicle routing problems
- Experience leading meetings, dailies and retros;
Don't meet every single requirement?
Studies have shown that women and people of colour are less likely to apply to jobs unless they meet every single qualification in the job posting.
At Spare, we are committed to creating a diverse and inclusive environment so we strongly encourage you to apply even if you don't believe you meet every single qualification outlined.
We also do our best to respond to all applications we receive.
About the Motion team
The Motion Team works on anything and everything relating to the Spare Engine - our matching and routing algorithms. This includes tweaking and improving our state-of-the-art optimization algorithm to help it solve NP-hard problems many times per second, combining this with custom application logic to ensure that the decisions made by our system are intuitive to our end users.
It also involves building out tooling and visualizations to help end users engage with the Engine : correcting data, optimizing inputs and schedules, and taking manual actions when necessary.