Roles and responsibilities
- Lead design and architecture of an impactful open source project
- Code in Golang, Rust, Python, C/C++ or Typescript / React
- Collaborate proactively with a globally distributed team
- Mentor, develop and advise colleagues in their career progression
- Display technical leadership in Canonical and our communities
- Debug issues and produce high-quality code to fix them
- Contribute to technical documentation with the aim to make it the best of its kind
- Work from home with global travel twice annually for company events
What we are looking for in you
- An exceptional academic track record from both high school and university
- Undergraduate degree in Computer Science or STEM, or a compelling narrative about your alternative path
- Drive and a track record of going above-and-beyond expectations
- Technical leadership as well as team motivation, direction and pace
- Well-organised, self-starting and able to deliver to schedule
- Professional manner interacting with colleagues, partners, and community
- Deep experience with at least one of Go, Rust, Python or C
- Subject matter expertise in your engineering domain
- Conscientiousness and detail orientation, with a focus on performance
- Professional written and spoken English
- Experience with Linux (Debian or Ubuntu preferred)
- Excellent interpersonal skills, curiosity, flexibility, and accountability
- Passion, thoughtfulness, and self-motivation
- Excellent communication and presentation skills
- Result-oriented, with a personal drive to meet commitments
- Ability to travel twice a year, for company events up to two weeks each
Additional Skills That You Might Also Bring
- Experience with container technologies such as LXD, Docker and Kubernetes
- Experience with highly concurrent, distributed systems
- Experience with embedded systems
- Performance engineering – from kernel to web – benchmarks, optimisation
- Experience with software security – fuzzing, tabletop threat models, analysis, audit
- Experience build systems and toolchains, including for cross-compilation
- Experience with public clouds or OpenStack
- Experience with Debian/Ubuntu packaging
- Experience with systems programming or scalable web services
- Deep quality and test engineering
- Web or Flutter front-end experience
- REST and gRPC API experience
- SQL and NoSQL data store expertise
- Experience with public clouds or OpenStack
- Experience with Debian/Ubuntu packaging
- Experience with systems programming or scalable web services
Desired candidate profile
1. Technical Leadership
- Complex Problem Solving: Lead the solution of difficult technical problems by applying in-depth knowledge of the technology stack and domain. Take ownership of critical technical challenges and help the team navigate complex scenarios.
- Architecture and Design: Contribute to and sometimes lead the design of software architectures and technical solutions. Ensure that designs are scalable, maintainable, and aligned with the company’s long-term goals.
- Code Quality and Best Practices: Set high standards for coding practices and ensure the codebase remains clean, efficient, and well-tested. Advocate for best practices in software engineering, such as design patterns, testing strategies, and performance optimization.
- Technical Decision Making: Influence technical decisions across the team and organization. Evaluate different approaches and technologies to select the most suitable ones for the given challenges.
2. Mentorship and Knowledge Sharing
- Mentoring Junior Engineers: Provide mentorship to junior and mid-level engineers. Help them develop their skills and grow in their careers. Review their work, provide feedback, and help them learn from mistakes.
- Cross-team Collaboration: Work closely with engineers from other teams (e.g., product, QA, DevOps) to ensure alignment and consistency in software development across the organization.
- Knowledge Sharing: Act as a technical resource for the team by sharing knowledge through documentation, internal presentations, and code reviews. Promote a culture of continuous learning and improvement.
3. Ownership of Key Systems and Features
- End-to-End Ownership: Take ownership of significant parts of the product, from design and development through to deployment and maintenance. This may involve leading large technical initiatives or projects that impact multiple teams.
- Collaboration with Product Managers: Work closely with product managers to understand business requirements, ensure technical feasibility, and prioritize work. Translate business needs into technical solutions.
- System Reliability and Performance: Monitor and optimize the performance of the systems you own. Focus on scalability, reliability, and efficiency, and ensure that any critical issues are addressed quickly.
4. Innovation and Improvement
- Driving Innovation: Stay up-to-date with the latest industry trends and emerging technologies. Propose and implement new tools, technologies, and frameworks that can improve the team’s productivity or product performance.
- Process Improvement: Contribute to process improvements, such as refining the development workflow, adopting new tools, or enhancing the CI/CD pipeline to speed up delivery without sacrificing quality.
5. Cross-Functional Communication
- Clear Communication: Communicate technical concepts clearly to both technical and non-technical stakeholders. This includes explaining complex technical challenges, offering solutions, and providing updates on progress.
- Collaboration with Leadership: Work closely with engineering managers, architects, and other senior engineers to ensure technical direction aligns with business goals and overall company strategy.