The database is the beating heart of all software applications. If you want to experience a broad systems-perspective of technologies from processors, storage & networks to cloud-based globally distributed systems - this is the role for you.
What we’re looking for- Ideally we are looking for someone with 5+ years of experience in software development and/or performance engineering
- Purposeful learners, who seek understanding and try new approaches when they encounter roadblocks
- Past work may include: developing self-taught skills, becoming the go-to resource for a particular domain, or performing a root cause analysis on a support case
- Capable communicators, who can make complex concepts easy to grasp in written and spoken language
- Past work may include: writing technical documentation, producing trainings, or publishing academic papers
- Scientific experimenters, who know how to decompose and solve complex problems and can rapidly iterate by validating new hypotheses and rethinking current assumptions
- Past work may include: designing and understanding complex systems, performing comparative benchmarking, or identifying the cause of an unexplained result
- Creative coders, who can readily begin writing software in C++, Javascript or Python and have some familiarity with the thorny technical issues central to databases: distributed systems, consensus algorithms, data replication, query optimization, data storage, OS internals, concurrency and scheduling, networking, etc
- Past work may include: contributing to codebases, writing complex scripts that interact with AWS/Azure/GCP, or tuning a database or operating system for performance using tools like: perf, eBPF & Intel® VTune™
What we expect- Increase our performance coverage by writing new macro-benchmarks, creating new workloads that stress the database and systems. Consult with developers to help them add performance tests for new features.
- Investigate performance issues, and help undercover the root cause of an issue using internal tools as well as industry standards such as gdb and perf
- Curate an understanding of our performance coverage and clearly communicate the implications of changes in terms of user experience to stakeholders
- Consult with engineers developing new features and to help them produce the most valuable performance tests to benchmark new features
Success MeasuresIn 3 Months:
- You have written new workloads using our performance infrastructure
- You have investigated performance issues using internal tools as well as tools like perf and gdb
In 6 Months:
- You can take a workload from the field that has a performance issues and produce and operationalize a performance regression test
- You have a strong understanding of our performance framework and participate in roadmap discussions around new features to be added
- You can take an open-ended performance question from other teams, investigate it and provide actionable guidance
In 12 Months:
- You have a strong understanding of our current performance coverage, and are persuasive about where we ought to invest in additional coverage and where we can reduce our spend
- Your advice and consultation around performance behavior and testing of new features is eagerly sought and highly appreciated by development teams
What is performance?- Does the software perform as the user expects using an acceptable amount of resources?
- We further prioritize performance requirements in the following order: durability, availability, predictability, horizontal scalability, vertical scalability and efficiency
- Measures include: time, throughput, utilization, latency, jitter, stability or cost
- Resources: CPU, memory, IOPs, storage, bandwidth, power consumption