Senior Software Engineer (TypeScript)

Help us make great software that makes a difference

ODK is open-source software that helps researchers, field teams, and other professionals collect data anywhere. It's used by social impact organizations like the World Health Organization, Red Cross, the Carter Center, and more.

ODK is made by a small, diverse, and fully-remote team. We care deeply about taking on big problems, doing meaningful work, and having fun while doing it.

We’re looking for people who take initiative, care deeply about users, and treat others with respect. If that sounds like you, apply below.

About the job

We’re building a new browser-based form filling system for ODK designed to support both today’s complex form needs and legacy forms that have been in use for over a decade. We're now looking for someone to lead the development of the engine of this system. You'll collaborate with a passionate team on developing core functionality, measuring and improving performance, and increasing maintainability.

The form engine is built in TypeScript, parses ODK XForms, handles form logic like calculations, constraints, hiding/showing questions, and repeating sections. It uses SolidJS for dependency tracking and fine-grained state management. This engine currently powers a Vue 3 UI but your focus will be on the logic engine.

Position details

  • Type: Contract, full-time (30–40 hrs/week)
  • Location: Remote, with some overlap with California (Pacific Time)
  • Rate: $90-110 USD/hour

Must haves

  • Advanced understanding of TypeScript and a desire to write expressive, maintainable code
  • Deep experience with reactive programming: SolidJS, S.js, MobX, dependency graphs, signals, observers, etc.
  • Familiarity with functional programming concepts
  • Experience reading and reasoning through complex existing codebases
  • Terrific troubleshooting and debugging skills
  • Ability to consider high-level tradeoffs between different technical approaches and to communicate those effectively to collaborators
  • Comfort working through ambiguity and shaping incomplete specs into robust implementations
  • A desire to balance type safety with real-world flexibility
  • Experience developing foundational libraries or systems with a library mindset (focused on long-term maintainability, testability, and sustainability rather than prototypes)
  • Experience giving timely, high-impact code reviews
  • Empathy for non-technical stakeholders and curiosity about real-world use cases
  • Comfort with regularly destroying your own best-loved ideas

Nice to haves

  • Experience with XML and XPath
  • Experience with a structured, declarative spec such as a form language (XForms, SurveyJS, FHIR Questionnaire, etc.) or a flow engine (n8n, Node-RED, AWS Step Functions, etc.)
  • Willingness to actively engage with users on the ODK forums (gathering feedback, providing help, etc.)

Why you'll like it

  • We're a small team that values collaboration, pragmatism, and impact
  • You'll work on something real, meaningful, and technically deep
  • You'll build an open source tool to support users around the world doing everything from vaccination tracking to disaster relief
  • We value work-life balance and continuous learning

How to apply

To apply, email jobs@getodk.org with a resume and a brief note on why you'd be a good fit and a quick story about a time you meaningfully changed your mind.

Promising candidates will get 1-2 short interviews and a small paid programming project. If those go well, we will move forward a more long-term arrangement.