Roles and responsibilities
- Collaborate proactively with a globally distributed team
- Write, test and document high quality code to create new features
- Debug issues and interact with a vibrant community
- Review code produced by other engineers
- Attend conferences to represent Canonical and the Charmed Observability Stack
- Work from home with global travel 2 to 4 weeks for internal and external events
What we are looking for in you
- You love technology, observability and working with brilliant people
- You value soft skills and are passionate, enterprising, thoughtful, and self-motivated
- You have a Bachelor's or equivalent in Computer Science, STEM or similar degree
- You have a proven understanding of the importance of observability and monitoring for keeping software running smoothly
- You have strong working knowledge of modern monitoring technologies like Prometheus, Alertmanager, Grafana, Loki, Mimir, etc., and how they fit together
- You are a skilled Python developer, preferably with a track record in open source
- You have a working knowledge of Go
- You have proven, hands-on experience deploying, configuring and using Kubernetes
- You are comfortable contributing to open source codebases maintained by other companies, you have a history of driving consensus in groups of multiple stakeholders with different interests and getting the resulting work delivered
- You have experience with infrastructure-as-code and configuration management tools
- You have interest and experience with two or more of the following: Ubuntu Linux, container images, Debian packaging, snap, distributed systems.
Desired candidate profile
1. Platform Design and Development
- Platform Architecture: Design and implement the underlying architecture for a platform that can be used by other developers, services, or applications within the organization.
- API Development: Develop robust and well-documented APIs that expose platform capabilities and services to external and internal users. This includes RESTful APIs, GraphQL, or gRPC-based APIs.
- Frameworks and Tools: Build reusable software frameworks and tools that abstract away common tasks for developers, enabling them to focus on building applications rather than worrying about infrastructure.
2. Infrastructure Management
- Cloud and On-Premise Infrastructure: Design, build, and maintain infrastructure (e.g., cloud platforms such as AWS, Azure, or Google Cloud) to support platform scalability and performance.
- Automation: Implement automation scripts and tools (e.g., using tools like Terraform, Ansible, or Kubernetes) to streamline the deployment, management, and scaling of platform components.
- Continuous Integration and Continuous Delivery (CI/CD): Integrate CI/CD pipelines to automate the process of building, testing, and deploying platform components, ensuring the development process is efficient and reliable.
3. Performance Optimization
- Scalability: Design platform components and services to be scalable, ensuring that as demand increases, the platform can handle the increased load without performance degradation.
- Monitoring and Metrics: Set up monitoring tools to track the performance of the platform, identifying bottlenecks and optimizing areas that can improve the overall efficiency and responsiveness.
- Load Balancing and Caching: Implement techniques such as load balancing, content delivery networks (CDNs), and caching to ensure high availability and fast response times.
4. Security and Compliance
- Data Protection: Ensure that the platform is designed with strong security measures, such as encryption, authentication, and authorization, to protect sensitive data.
- Compliance: Adhere to industry-specific compliance regulations (e.g., GDPR, HIPAA) by integrating necessary security and data handling protocols into the platform.
5. Collaboration and Developer Support
- Documentation: Provide comprehensive documentation for platform usage, APIs, frameworks, and services to support other developers and users. This includes code samples, tutorials, and troubleshooting guides.
- Developer Enablement: Work closely with internal development teams to understand their needs and ensure the platform meets those needs. Provide tools, libraries, and integrations that make the development process more efficient.
- Cross-Functional Collaboration: Collaborate with product managers, backend engineers, operations teams, and other stakeholders to align platform development with business goals and product requirements.