Apple Cloud Platform - Internal CI/CD Service & Tools
Austin, Texas, United States
Software and Services
Are you a service developer looking to grow your skill set, invent new technology, and make a difference in developer productivity for thousands of developers inside all parts of Apple? The Software Development Productivity team builds services and tools to help developers get ideas from commit to production quickly and with confidence. We’re constantly improving our existing CI/CD service to give developers the building blocks they need to produce scalable, high performance build and deploy pipelines with minimal friction. Our services power an enormous number of builds per day across all of Apple, including some of the most well known customer facing properties, and we want to do even more. Our engineering team is committed to innovating and pushing the bounds of continuous delivery. We ship to customers frequently and constantly strive to improve our delivery. Improving means constantly learning and making mistakes, something our team embraces. We believe that the role of a developer is not to produce code, but solve problems. This means asking a lot of questions, understanding and empathizing with customers, and helping make the hard choices about what to build. YOU’LL DO WELL IN THIS ROLE IF YOU: - Are driven to create outstanding customer experiences, and are passionate about helping developers write better code faster. - Are good at understanding an entire customer problem and applying technology to it - Love teaching people and learning new things - Are not afraid to ask the hard questions or express your opinions, even when they are controversial. - Enjoy evolving a large, critical system to provide next generation features
- Ability to write clear, readable production code for services used in production (ideally Java or Go distributed systems)
- Experience with Git or similar distributed version control system, and some understanding of its internals (you will be integrating with SCM systems, not just using them during development)
- Experience with running software on Linux or other Unix based systems. You should be comfortable on a command line and with basic troubleshooting
- Clear communicator (both written and verbal)
- Growth mindset and willingness to teach and learn from others.
- Committed to fostering an open and inclusive work environment.
SPECIFIC JOB RESPONSIBILITIES: - Design, create, and maintain distributed, high volume software services for executing and tracking customer builds - Write testable and readable code in pairs to deliver our services - Troubleshoot complex distributed systems - Participate in code reviews and provide helpful and precise feedback - Constantly evaluate and improve our own delivery processes within the team
Education & Experience
- Our team comes with a diverse set of experience with many of the technologies below to represent the perspective and variety of our internal customer base. Candidates are not required to have experience with every technology or product.
- - Java and Go experience
- - Ability to write and understand in a scripting language or two (Python, bash, Ruby)
- - Preference for test driven development and writing testable code, and testing frameworks
- - Experience with AWS or GCP
- - Experience with NoSQL databases, particularly Cassandra
- - MacOS experience.
- - Some familiarity with Docker (or other VM/Container solutions), and ideally deployment technologies such as Kubernetes and Tekton
- - Exposure with at some equivalent build/deploy services such as Jenkins, TeamCity, CircleCI, Concourse, TravisCI, etc.
- - Experience with a secure software development lifecycle, and integration of security into all phases of product development
- - At least some exposure to a variety of build tools: Gradle, Maven, Ant, Make, Rake, Grunt, Gulp, Ninja, Blaze/Bazel, Pants or others. We don’t use all of these, but our customers do so having some understanding helps build the right product.