Software Engineer

Canonical

As a software engineer at Canonical, you have a key role in the success of Ubuntu, our partners, customers, and the larger Ubuntu community. Your primary responsibility is to your team – contributing toward objectives, continuously improving, and striving to be a vital part of a healthy, high-performing team. At Canonical, you will have the opportunity to influence the culture, facilitate technical delivery, and work with your team on strategy and execution.

As part of Cloud Engineering, you’ll be building modeling software to drive systems such as OpenStack, Ceph, and Kubernetes with a focus on distributed storage and Ceph. You’ll be engineering solutions to scale in production, working with our field teams to ensure we’re meeting the needs of customers looking to adopt cutting-edge technology.

Applicants should be passionate about the future of the software defined datacenter, distributed systems, and open source. Canonical is a globally distributed team of engineers who share that passion, and you will need to work well in that context. Engineers who thrive at Canonical are mindful of the dynamics of the open source ecosystem, and equally aware of the needs of large, innovative organizations.
This job involves international travel several times a year, usually for one week at a time.

Key responsibilities:

  • Develop high-quality, extensible and reusable software, primarily in Python.
  • Interact with customers, users, and field support engineers to resolve problems and define new features.
  • Display strong technical leadership in feature definition, feature delivery, code review, and backlog management.
  • Develop and maintain software for delivery, operations and life-cycle management of Ceph storage

Required skills and experience:

  • Proven track record of at least 5 years of professional software delivery using Python, Go, C, C++, Java or similar.
  • Experience with open-source distributed storage such as Ceph, Gluster, Minio, or similar
  • Degree level education in a technology field
  • Experience with agile software development methodologies
  • Experience of the Linux and free software world
  • Working knowledge of cloud computing
  • Excellent communications skills in the English language, both verbal and written, especially in online environments such as mailing lists and chat systems
  • Ability to effectively interact with a diverse group of people (both technical and non-technical)
  • Ability to be productive in a globally distributed team through self-discipline and self-motivation, delivering according to a schedule, and to motivate and mentor others to do the same

Desirable skills and experience:

  • Python programming language experience
  • Technical understanding of complex distributed systems
  • Operational and/or development experience with Ceph
  • Block and file subsystem experience within the Linux kernel
  • Experience with storage performance analysis tools including fio, blktrace, perf, etc
  • Delivery of scale-out service solutions
  • Experience with private, edge, and/or telco cloud technologies (e.g. OpenStack, StarlingX, Airship, VMWare, HyperV, etc)
  • Experience with container technologies (Docker, LXD, Kubernetes, DC/OS etc)
  • Exposure to DevOps/system administration
  • Experience working on a distributed team on an open-source project — even if that is outside work open source contributions.
  • Demonstrated track record of Open Source contributions