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
- Solution Design and Architecture: Lead the design and architecture of complex systems or features. Make critical decisions about system architecture, frameworks, and technologies used.
- Problem Solving: Address and solve high-impact technical problems, often with tight deadlines and significant complexity. Apply deep knowledge of algorithms, data structures, and system design to come up with efficient solutions.
- Code Quality: Ensure the quality of the codebase by advocating for best practices in coding, reviewing others’ code, and maintaining coding standards.
- Scalability and Performance: Design systems and write code that is scalable, maintainable, and optimized for performance. Anticipate potential bottlenecks and take steps to address them early.
2. Mentorship and Team Development
- Mentoring Junior Engineers: Act as a mentor and provide guidance to junior and mid-level engineers. Help them grow technically and professionally through code reviews, pair programming, and technical discussions.
- Knowledge Sharing: Lead internal discussions on engineering practices, emerging technologies, and problem-solving techniques. Encourage team members to learn new skills and share knowledge.
- Leadership: Take ownership of larger projects or initiatives and guide the team through execution. Lead by example, fostering a positive, collaborative, and productive engineering culture.
3. Collaboration with Cross-functional Teams
- Product Teams: Collaborate with product managers to understand business needs and translate them into technical solutions. Ensure that the development aligns with customer requirements and business objectives.
- Quality Assurance: Work closely with QA teams to ensure the product meets quality standards. Help define testing strategies, address bugs, and ensure smooth delivery of high-quality software.
- DevOps/Operations: Collaborate with DevOps and operations teams to ensure smooth deployment, monitoring, and operation of the software in production.
4. Innovation and Continuous Improvement
- Research and Development: Stay updated on the latest trends, technologies, and best practices in the engineering field. Evaluate new tools and technologies that can improve the efficiency or capabilities of the team or product.
- Process Improvement: Suggest and implement improvements to the development processes, whether through changes in the development pipeline, automation of tasks, or refinement of agile processes.
5. Ownership and Accountability
- Project Ownership: Take full ownership of specific features or projects from conception through to deployment. Be responsible for the planning, execution, and successful delivery of technical solutions.
- Risk Management: Identify risks related to development and deployment early on and take proactive steps to mitigate them. This includes technical debt, performance issues, or scalability concerns.
- Operational Excellence: Ensure that systems are reliable, maintainable, and properly monitored. Address production issues and technical debt to minimize downtime and performance issues.