Engineering Philosophy

  • We value engineer empowerment and autonomy: we want to allow the amazing people we hire to make a difference!
  • We're a fully remote organization
  • We value generalists, especially generalists with expertise in one or two areas. Generalists enable small cross-functional teams that can own their work end-to-end
  • Things will go wrong: we value recovering quickly over preventing failure at all costs, and we run blameless post-mortems whenever there are failures
  • We value boring technology: we want to use a limited set of well-understood & proven languages and tools to accomplish our goals.
  • In general, we avoid micro-services & love our monolith

Engineering Practices

  • Continuous Integration & Continuous Delivery; trunk based development; feature flags. We deploy many times per day!
  • We value automated tests & monitoring much more than manual testing. We don't have "test engineers"
  • Zero defect policy
  • We try to optimize for long-term engineering speed & quality
  • We value collaboration & having multiple engineers tackle a problem together

Tech Stack

  • TypeScript servers backed by MySQL, MongoDB, and Redis
  • Consul & Nomad for Docker container orchestration
  • HAProxy load balancer
  • We run almost everything on AWS
  • React/TypeScript for web frontends
  • Flutter + Kotlin for android clients
  • native iOS client
  • Redshift, Airflow, and Metabase for data analysis

Want to help ensure every child gets and education they love?

Work with us!

See our open positions