Golang Engineer

Canonical's journey is deeply intertwined with the communities that shape our work, including the global network of open source contributors and enthusiasts who are integral to our team. Since 2004, we’ve cultivated a vibrant community around Ubuntu, a Linux distribution that made software accessible to all—whether you’re a developer in Calcutta, an end user in Cape Town, or a sysadmin in California. Today, we continue to grow and strengthen these communities, advancing open source to be more secure, reliable, and scalable. Together, we empower organizations and individuals worldwide to innovate confidently with the most widely supported collection of open source software.
This is our general process for Golang engineers of all levels across Canonical’s teams. If you’re an exceptional software engineer with a preference for Go, apply here. After the first interview, we’ll match you with the product team at Canonical that best aligns with your personal interests to continue your application process.
Canonical favors Golang for software where performance and security are key priorities. We also have major projects in Python, C, C++, and are beginning to invest in Rust. For front-end development, we prefer React and Flutter.
Golang is vital to our engineering teams, powering systems that deliver Ubuntu worldwide. From software distribution systems to those that build and test open-source software across all architectures, from systems management tools to distributed systems R&D, Golang is our go-to for its efficient concurrency and developer ecosystem. Juju, Livepatch, LXD, MAAS, Microk8s, Snapd, Ubuntu Core, Ubuntu Pro, and many more Canonical solutions rely on Golang.
We are also dedicated to making Ubuntu the best platform for Golang development, providing easy access to the broadest range of tools and capabilities that support cutting-edge open source and enterprise development.
Join our mission to deliver innovative open-source solutions to users and enterprises worldwide. We uphold the highest engineering standards and expect a strong drive to deliver exceptional results in a fully remote and distributed environment. These roles require deep experience with Linux—having worked across various distributions is a plus!
Location: Open roles for Golang engineers in all time zones.
Role responsibilities:
- Design and implement well-tested, documented software in Go
- Troubleshoot and resolve issues faced by users
- Engage in code and architecture reviews as part of our engineering process
- Collaborate with the community and colleagues on technical specifications
- Continuously improve engineering and operational practices
- In some cases, deploy and operate services developed by the team
- Advocate for your product’s success through technical outreach
What we’re looking for:
- Strong academic performance from both high school and university
- A degree in Computer Science, STEM, or a compelling alternative path
- Proven drive and a history of exceeding expectations
- Well-organized, self-starting, and capable of meeting deadlines
- Professional interaction with colleagues, partners, and community
- Experience designing and writing high-quality Golang software on Linux
- Passion for Linux at the system level
- For senior roles, experience in building, deploying, and operating distributed systems and APIs
- Proficiency in written and spoken English
- Extensive Linux experience (Debian or Ubuntu preferred)
- Excellent interpersonal skills, curiosity, flexibility, and accountability
- Strong communication, presentation, and collaboration skills
- Result-oriented, with a personal drive to meet commitments
- Ability to travel twice a year for company events (up to two weeks each)
Nice-to-have skills:
- Experience developing for Ubuntu Linux
- Familiarity with Juju, LXD, Microk8s, Snapd, Ubuntu Core, Ubuntu Pro
- Performance engineering and security expertise
What we offer:
- Competitive compensation, shaped by geography, experience, and performance, with an annual review
- A performance-driven annual bonus or commission
- Additional benefits reflecting our values and ideals
- Distributed work environment with twice-yearly in-person team sprints
- Personal learning and development budget of USD 2,000 per year
- Recognition rewards and annual leave
- Maternity and paternity leave
- Employee Assistance Program
- Opportunities to travel to meet colleagues
- Priority Pass and travel upgrades for long-haul company events