We are looking for a Software Engineer - Team Lead, to join our Internal Ops team in Cape Town.
- Our mission is to provide intelligent tools to feed the world.
- We provide tree and fruit insights to growers, in 18 countries around the world, enabled by drone imagery and artificial intelligence.
- We have analysed over 100 million trees and 1 million fruit to date.
- Our team of 80+ people is based out of Cape Town, but have commercial offices in the USA, Portugal and Australia.
How we work
The Aerobotics org is split up into customer-focussed streams. Within a stream we have multiple product development squads. Each squad is responsible for owning a specific customer value-proposition from conceptualisation through to delivery, allowing for maximal autonomy and ownership within the team. A squad consists of a Product Manager, Product Designer (if applicable), Engineering Team Lead and technical team members. Our technical team consists of 3 core functions: Software Engineering, Data Science and Drone Engineering.
We use our own combination of agile development methodologies (encompassing our mix of exploratory, discovery & delivery work) to ensure that we are building the best product in an effective manner (without getting lost in process for the sake of it).
Our tech stack
- We use Python 3 for most of our backend systems. Specific frameworks include Tensorflow for the Data Science work, Django for our APIs and a multitude of internally built libraries containing convenience functions.
- Our frontend web & mobile applications use a mix of Angular, React and React Native.
- Our drones run NVIDIA Jetson Xaviers on-board and are powered by C++, with our own FlightOS operating system.
- We use AWS Cloud using Infrastructure-as-code principles for the bulk of our infrastructure, leveraging serverless computing wherever possible (Fargate, Lambda, Step Functions, Cloudfront, SageMaker etc).
- Continuous integration, delivery and testing is part of every application, ensuring that the technical team can entirely own their work from development through to production. This allows us to push multiple deployments daily, allowing for iterative development & continuous learning.
How the team fits within Aerobotics
Within Aerobotics, the mission of the Internal Operations team is to build systems for our Operations team, allowing the team to operate as efficiently & scalably as possible. This is in-line with our company objectives, allowing us to scalably service our customers (without growing our overheads linearly), through enabling the business to operate in a data-driven and autonomous way.
This team will be building systems primarily for the drone operations, data operations and finance teams - including tools & systems to help the teams service internal & external customers. These systems will bridge our web application (Aeroview), our annotation platform (Nursery), Xero & Salesforce - giving our internal users a consolidated view.
You will need
- A strong understanding of the tradeoffs between different design patterns and architectural choices for batch processing and data storage.
- Experience implementing scalable APIs within a micro/multi-services architecture.
- Experience designing and building systems which make use of automated unit, integration and end-to-end testing.
- The ability to write well-structured, performant backend applications and scripts in Python with Docker.
- Experience in building front-end applications using a frontend framework.
- Basic experience within the AWS ecosystem.
- The ability to mentor junior team members and grow expertise across a team.
- The ability to work autonomously in a small team to solve complex problems.
- Strong business acumen.
- BSc/MSc/PhD in engineering, computer science or other technical discipline, or equivalent working experience.
You will be responsible for
- Coordinating with your team in setting team-level goals and objectives in line with the business objectives.
- Delivery and quality of the team’s deliverables.
- Mentoring and growth of individuals within your team.
- Managing any juniors in your team.
- Effective communication with all the relevant stakeholders in your stream.
- Making impactful individual software contributions within the team.
- Being a technical partner to the product manager, ensuring development processes are efficient (sprint planning, backlog grooming and stand-ups).
- Helping understand capacity and assisting with hiring.