Senior IoT Software Engineer

Do you want to help citizens better understand their environment using air sensors, drones and other remote sensing technologies?

Code for Africa (CfA) has an immediate vacancy for a Senior IoT Software Engineer to join our sensors.AFRICA team to help build digital tools that transform how African cities work. 

The successful candidate will help drive pioneering projects, using the Internet of Things (IoT), including Africa’s largest network of low-cost ‘citizen science’ sensors. 

This includes improving sensors.AFRICA’s existing network of low-cost ‘citizen sensors’ that monitor air quality in five countries, as well as cutting-edge experimental water sensors that detect cholera and other contaminants, and novel hydrophone sensors to detect illegal dynamite fishing and coral bleaching in East Africa’s oceans. You will also help develop tools to analyse the imagery and data captured by drones/satellites to map settlements and better understand how to combat climate change.

CfA is a non-profit technology R&D lab. While robust software engineering skills are required, no prior air/water/climate monitoring or urban development experience is required.

We will be reviewing applications on a rolling basis so we encourage candidates to apply as soon as possible for consideration.

The successful candidate will report to CfA’s sensors.AFRICA manager, and will also work with CfA’s wider technology, data, design and content teams in 21 African countries to build robust systems and infrastructures for our partners in watchdog civil society organisations, the investigative media and selected progressive government agencies.

Your daily responsibilities will include:

  • Work as part of the technology team in shaping the software and front-end web-tools architecture and development processes, working within coherent roadmaps, ensuring quality control and helping to proactively problem-solve.
  • Develop and review firmware written in C, C++ and Python.
  • Review PCB and mechanical designs.
  • Requirements and design specification creation.
  • Improve and optimise the ongoing performance, scalability, and reliability of our software systems (and documentation) given the growing size of our sensor networks.
  • Shape our strategies for standardised sampling and measuring standards, equipment protocols, and data management systems.
  • Oversee consistent and proactive calibration and maintenance for all deployed monitoring equipment, including innovative ways to support volunteer (non-technical) custodians of the equipment at schools, environmental organisations, etc. 
  • Participate in stakeholder consultations or internal strategic discussions, to help non-technical partners understand what is possible and how best to use the technologies to achieve actionable insights.

Minimum requirements include:

  • 5+ years of industry experience in Software Engineering and embedded software development.
  • BSc/BEng Computer Science, Computer Engineering or equivalent practical experience.
  • Experience reading and interpreting data sheets and electrical schematics.
  • Strong debugging and analytical skills.
  • Demonstrated experience in revision control using Git and git workflows.
  • Experience leading technical projects. Experience in leading IoT projects will be a plus.
  • Experience in embedded real-time software engineering, e.g. FreeRTOS 
  • Experience designing reusable libraries and SDKs.
  • Experience with the full lifecycle of an IoT device.
  • Ability to develop firmware in C++, C, and Python programming languages.
  • Working knowledge of modern software development practices and technologies such as Agile methodologies and DevOps.
  • Experience working with and managing columnar and time-series databases for real-time data and analytics.
  • Experience working with metrics and monitoring tools such as Grafana.
  • Self starter with the ability to work effectively in teams across internal and external organisations and virtual teams

Language and Location Requirements:

  • Location: CfA’s main sensors.AFRICA lab is located in Nairobi (Kenya), but CfA also has additional labs in Abuja (Nigeria), Cape Town or Johannesburg (South Africa), Dar es Salaam (Tanzania), and Lagos (Nigeria). The role can be performed remotely, and CfA will therefore consider exceptional applicants from across Africa.
  • Primary language: English

Preferred but not required: French, Amharic or Arabic

Code for Africa (CfA) is the continent’s largest network of indigenous African civic technology and investigative data journalism laboratories, with over 70 staff in 19 countries, who build digital democracy solutions that are intended to give citizens unfettered access to actionable information that empowers them to make informed decisions and that strengthen civic engagement for improved public governance and accountability. This includes building infrastructure such as the continent’s largest open data portal, open.AFRICA, and largest open source civic software portal, commons.AFRICA, as well as the largest repository of investigative document-based evidence, source.AFRICA, as well as incubating initiatives as diverse as the africanDRONE network that gives citizens their own ‘eyes in the sky’, the PesaCheck fact-checking initiative in 12 African countries, and the sensors.AFRICA remote-sensing citizen science initiative to combat air/water pollution. CfA also incubates the African Network of Centres for Investigative Reporting (ANCIR), as an association of the continent’s best investigative newsrooms, ranging from large traditional mainstream media to smaller specialist units. ANCIR member newsrooms investigate crooked politicians, organised crime and big business. The iLAB is ANCIR’s in-house digital forensic unit, with teams in east, south and west Africa. ANCIR uses its resources to strengthen newsrooms’ own internal capacity, by providing access to the world’s best whistleblower encryption and investigative semantic analysis technologies, as well as skills development, and seed grants for cross-border collaboration.