Bachelor's degree or equivalent practical experience.
8 years of experience in software development, and with data structures/algorithms.
5 years of experience testing, and launching software products, and 3 years of experience with software design and architecture.
Experience working with distributed systems (load-balancing and replication techniques, distributed consensus, handling of network and hardware failures).
Preferred qualifications:
Master’s degree or PhD in Engineering, Computer Science, or a related technical field.
3 years of experience in a technical leadership role leading project teams and setting technical direction.
Experience architecting and developing distributed systems: Unix/Linux environments, REST API development (throttling, latency, quota mgmt.), distributed and parallel systems, information retrieval, storage, networking, developing large software systems, or security software development.
Experience building managed storage solutions (data protection, data recovery, security/compliance across resources, customer workflow simplification, etc.) for public cloud.
Experience in Multithreading, concurrency, and performance optimization (synchronization primitives, pitfalls, trade-offs, data locality, caching).