H

Lead Software Engineer - Drone Imagery Services

Humanitarian OpenStreetMap Team
On-site

About HOT and HOT Tech
HOT is an international team dedicated to humanitarian action and community development through open mapping. 

The HOT Technology team co-creates open source tools to enable the generation and use of geospatial data in a community-led and community-owned way. This ensures communities can govern their own data, have autonomy over it, and grow and protect it as they see fit for their local needs. It allows them to become active participants in decision-making processes and become local change makers through community-generated data.  

HOTs technology team is focused on solving key gaps in the tech ecosystem allowing the entire mapping process to be done with community ownership and tools.

Context 
HOT focuses on an end-2-end mapping workflow which includes a suite of solutions one needs to generate/use geospatial data, from imagery capturing to imagery processing, digitisation (including machine learning feature extraction), field mapping to enable easy access and use of data. See also our website  as well as our github repository for more information on our toolstack.

In view of imagery needs for mapping, HOT started the development along with our partner Naxa Technologies, of a Drone Tasking Manager (Drone TM): a platform connecting local drone pilots for large scale imagery generation. Its goal is to capture and process drone imagery in a coordinated manner, in order to generate high resolution imagery at scale in a community led way.  The product is in MVP status, with a few early adopters and needs dedicated development to be able to develop the needed functionalities and scale the movement of community generated drone imagery services.


Overview of Position

As Lead Software Engineer on Drone Imagery Services you take the lead over the development of the Drone Tasking Manager, making it a flagship product for drone pilots to collaboratively generate high resolution imagery over a larger area, democratizing drone imagery generation. At least for the coming 6 months, the main focus will be to improve the Drone Tasking Manager based on iterative feedback from field tests in projects in our regions as well by doing internal testing. A backlog of issues and requests exists as a starting point for improvements.

HOT is a small technology team and we need an allround profile for this position: including prioritization of work, doing both frontend and backend development, infrastructure enhancement, as well as testing. Ad hoc, we will have other developers that can support the development, and the lead software engineer will steer their work and mentor/coach more junior profiles.

The role will work in close collaboration with the HOT product managers and product owners as well as external partners and volunteers to ensure products are built in line with HOT principles.

Key responsibilities:

Drive the product development: define priorities,  lead the product development implementation, test with users. This includes the following responsibilities:

  • Continue the development of the backend API, built using Python and FastAPI. This will require improving underlying Python modules for drone flightplan generation or porting them to client-side (mobile or Web), in addition to interfacing with geospatial file formats such as Cloud Optimised Geotiff for DEMs, and potential deep-dives into the waypoint flight implementation for specific drone models.
  • Build upon the proof-of-concept implementation of phone-only workflows, including direct injection of flight plans to drone controllers from a phone.
  • Improve the interfacing of the backend API with OpenDroneMap, the integrated imagery processing tool. This may involve some elements of infrastructure planning to handle autoscaling of processing jobs via Kubernetes, and possibly some minor usage of workflows in AWS.
  • Frontend development of the DroneTM web-app, using TypeScript. Improvements to user experience will primarily be mediated via the DroneTM UI, so iterative design and feedback should be used from field pilots and the community. If we really want to push the boundaries, this may involve integrating WebAssembly libraries for geospatial processing, or 3D visualization.
  • Integrate more drone models: both the new DJI SDK allowing direct control of the DJI Mini 4 Pro (and any other models we may want to support, including new ones), other drones such as the Potensic Atom line, and drones using the open Ardupilot and PX4 flight control stacks (the eventual goal for HOT is to support open hardware community mapping-optimized drones).
  • If required, refinements to the database schema and data model used for DroneTM, involving usage of Postgresql, PostGIS, and direct SQL usage. We also implement a task splitting algorithm in PostGIS, with a proposed refinement to use more complex (but efficient) hexagon based task splitting to replace square task areas.
  • Test the product in the projects in countries, with the support of local partners.
  • Collaborate with and coordinate various contributors or contractors working on the product, steering the overall development and direction of the Drone Tasking Manager.
  • Provide general technical advice and support to members when needed (advisory and ad hoc support).
  • Help with outreach and help secure funding for HOT in a proactive manner.
  • Covering all aspects of Product Development (frontend development, backend development, database management,  infrastructure management)

Essential requirements/qualifications 

  • Passionate about technologies for the greater good 
  • 10-15+ years of demonstrated experience in software development, covering all aspects of product
  • Rich understanding of the open data and open source technology environment as well as technology  trends
  • Experience in working with remote sensing products (working with raster data) 
  • Experience developing business proposals, TORs and MOUs
  • Good communication, advocacy and negotiation skills
  • Proficiency in working in English (additional languages are a plus)