Principal Software Engineer

Ready for an opportunity to make a substantial impact with a disruptive tech company while building your Developer Advocate career in the rapidly growing Kubernetes ecosystem? Then come and PLOW with MayaData, the leading Container Attached Storage (CAS) solution for Kubernetes called OpenEBS.

At MayaData we believe that the best way to deliver storage and related services to containerized and cloud-native environments is with containerized and cloud-native architectures. Everything we do is focused on providing data agility and simplifying the daily operation of Kubernetes SRE's and DevOps teams using Kubernetes as a data layer. We enable our users to handle complex data management operations efficiently, and we have become open source leaders in building Kubernetes into a first-class data platform.

Location: Remote (US / Europe / India Time zones)

In the nutshell

You will work under minimal direction to design and develop high performance storage algorithms for the next generation of NVMe over Fabrics storage solutions in containers for containers. This is an opportunity to own critical algorithms that must be invented to match the performance of next generation solid state storage technologies. The Principal Engineer must have the ability to discuss and analyze abstract algorithms with the team to evaluate and refine the design prior to implementation. Additionally, the Principal Engineer will be responsible for translating the design to an implementation in Rust/C/C++ with a clear understanding of practical system issues. The Principal Engineer will have the technical ability to write functional specs as well as responding to requirement documents and system level test plans, propose design changes and suggestions to team, collaborate with engineers and other product groups as needed cross functionally.

We’re looking for a deeply skilled Principal Software Engineer to work closely with the product and the open source community to build the Mayadata vision. You'll join a highly collaborative team working along with talented engineers focusing to be the best in Container Attached Storage.

Role Description:

  • System engineering and implementation in Rust and C.
  • Working on performance issues using creative experiments and internally developed product features.
  • Research, propose, and integrate relevant open-source projects based on product objectives.
  • Write organized, efficient, and well documented Rust and C/C++ code as an example for junior engineers.
  • Participation in all levels of product definition, design, implementation, testing, and deployment.
  • Must include the ability to discuss abstract system architectures from ideas through implementation and creatively apply domain experience to solve technical challenges.
  • Mentoring software engineers, fostering an environment of trust and accountability.

Requirements:

  • Programming experience collaborating on software development Open Source Community.
  • Programming in C or C++ or Rust, or other systems programming languages.
  • Capable of meeting tight deadlines with excellent overall project and product development life cycle experience and team spirit.
  • Experience in agile and scrum methodologies.
  • Linux OS internals experience.
  • Experience in functional programming.

Nice-to-have:

  • Linux OS internals experience.
  • Expert level Rust/C/C++ coding and debugging; kernel, protocol, or hardware programming.
  • Shell scripting and knowledge in python.
  • Experience with Linux file system, block layer.
  • Experience with storage protocols SCSI, NVMe.
  • Strong technical background with both the ability and desire to continuously improve the overall storage software product, in terms of quality, features, and design.
  • Able to maintain in-depth understanding of industry trends in computer system hardware, current and future storage and networking protocols, and software algorithms in distributed systems, data encoding and transmission, and performance; Areas of focus include NVMe, NVMe over Fabrics, persistent memory, RDMA and TCP network protocols, kernel bypass, data encoding and compression/deduplication.
  • Expert level understanding of computer hardware, algorithm, and protocol performance, with experience in profiling and root causing performance issues.
  • Experience with I/O, memory, and compute performance limitations.