Software Engineer (Juju)
Juju is a Canonical sponsored open source project that facilitates the modeling and operation of the complex distributed software. Juju can deploy and manage software running on public clouds, private clouds, bare-metal servers or containers.
As a Software Engineer within the Juju engineering team, you will ensure quality for Juju as well as dealing with bugs. Juju is a large, complex distributed system that runs on a large number of platforms - there’s no shortage of interesting technical challenges! You will also be required to liaise with customer support and field engineers to help diagnose and fix field issues.
Applicants should be passionate about the future of the software defined datacenter, and about the ability for Juju and Open Source generally to define that future. 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.
Software Engineer key responsibilities:
- Work with a variety of languages to develop high-quality, extensible and reusable software.
- Many internal and external teams depend on Juju to deliver their products and services - from Canonical Infrastructure Services, our Openstack and cloud delivery teams, to Fortune 500 companies. Each Juju team member needs to actively collaborate with these users to resolve problems and define new features.
- Every member of the Juju team should show strong technical leadership in feature definition, feature delivery, code review, and backlog management.
- Juju is a complex piece of software that touches many other products. To ensure quality, the Juju team maintains the tools, framework and infrastructure to run tests.
Software Engineer required skills and experience:
- Proven track record of at least 5 years professional software delivery using Go, C, C++ or similar.
- Solid networking background and experience
- 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 IRC
- 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
- Software development and operational experience with databases
Desirable skills and experience:
- Passion for quality and testing
- Go programming language experience
- Excellent distributed systems administration experience
- Proficient DevOps methodology and process
- Experience with test automation including system level automation and job runners
- Experience with continuous integration strategies
- Experience with packaging (debian, snappy)
- Release Management
- Technical understanding of complex distributed systems
- Delivery of scale-out service solutions
- Experience with container technologies (Docker, LXD, Kubernetes, DC/OS etc)
- Programming with and operating MongoDB
- 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