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 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
- 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
- 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