Roles and responsibilities
- Build robust, scalable, leading-edge container images
- Work on automated Ci/CD processes for building, testing and publishing our container images
- Write tools and tests for assessing security compliance and cloud-native compatibility
- Work in Go to deliver new functionalities to our container-building tools
- Participate in strong engineering process through code and architectural review
- Provide technical feedback for the team’s decision-making process
- Engage with the open-source community as a subject-matter expert
- Grow our knowledge base and write documentation
- Work in a collaborative, agile and globally distributed environment
- Mentor and help hiring
- Work from home with global travel up to 15% for internal and external events
What we are looking for in you
- You are knowledgeable and passionate about software development
- You are a team player and have experience in collaborative development
- You have worked with CI/CD systems (e.g. Jenkins, GitHub Actions, Concourse CI, etc.)
- You have a track record of delivering timely, high-quality software
- You have experience with container images and containerised operations
- You master at least one container management/orchestration tool (e.g. Docker, Kubernetes, etc.)
- You have significant experience with Go
- You are experienced with Linux systems administration and package management
- You have strong written and verbal communication skills to convey technical concepts
- You bring clarity to technical and engineering discussions
- You are someone who strongly believes that sharing is caring, and knowledge is power
- Your skills range from those of a Graduate to a mid-senior Software Engineer
- You have a Bachelor’s or equivalent in Computer Science, STEM or a similar degree
Desired candidate profile
. Software Development
- Code Writing: Write clean, efficient, and maintainable code in Go, ensuring that the application performs optimally in various environments.
- Building APIs: Design and implement RESTful APIs, microservices, and other system integrations using Go.
- Concurrency: Leverage Go's concurrency model (goroutines and channels) to build highly scalable applications that can handle multiple tasks simultaneously.
- Testing: Develop unit, integration, and end-to-end tests to ensure the reliability and functionality of the software.
2. System Architecture and Design
- Software Architecture: Contribute to the design and architecture of the software system, ensuring that the application is modular, scalable, and maintainable.
- Performance Optimization: Use Go's performance features to optimize applications for speed, memory usage, and efficiency.
- Database Design: Work with databases (e.g., SQL, NoSQL) and integrate them into Go-based applications, ensuring efficient data access and storage.
3. Collaboration and Communication
- Cross-functional Collaboration: Work closely with product managers, designers, and other engineers to deliver features and improvements on time.
- Code Reviews: Participate in code reviews to ensure high-quality code is being written and to mentor junior developers.
- Documentation: Write clear and concise documentation for both end-users and fellow developers, ensuring ease of use and maintainability.
4. Deployment and Maintenance
- CI/CD Pipelines: Implement and maintain Continuous Integration/Continuous Deployment (CI/CD) pipelines for automated testing and deployment of Go applications.
- Monitoring and Debugging: Use monitoring tools and logs to identify issues, track performance, and resolve bugs quickly.
- System Maintenance: Ensure the ongoing support of Go applications, troubleshooting and improving them as needed.
5. Innovation and Process Improvement
- Research and Development: Stay up-to-date with the latest developments in Go and related technologies, ensuring that best practices are followed.
- Optimization and Scalability: Continuously look for ways to optimize code, improve system efficiency, and enhance the overall performance of applications.