Software Engineer - Software Developer Platform

Santa Clara Valley (Cupertino), California, United States
Software and Services

Summary

Posted:
Role Number:200400076
The mission of our Software Developer Platform team is to provide Apple engineers the most productive experience to develop, deliver, and manage modern cloud-based applications. We own the tools and services used by internal Apple engineers to develop, deploy, and manage their applications. This product portfolio includes SDKs, IDEs, source code management tools, artifact management tools and more. This team specifically will work on making build artifact and source code management reliable, seamless, and secure. As an engineer on this team, you will be responsible to implementing the features and roadmap of the innovative products helping Apple engineers to develop software safer and faster. You will work closely with the customers in order to understand their current and future needs. We are looking for an engineer who is experienced in delivering multi-region fault tolerant systems, is passionate about the developer tools space, is excited to have software developers as their customers, and is dedicated in creating a compelling customer experience for engineers. 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.

Key Qualifications

  • 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, extending, and developing 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.

Description

- Design, create, and maintain distributed, high volume software services for making SCM and Artifact distribution systems scalable, reliable, secure, and well integrated with build and deploy tools. - Develop and improve testing and deployment systems for vendor products such as Artifactory and GitHub to ensure smooth and reliable operation - Write testable and readable code in pairs to deliver 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 - Collaborate closely with the SREs that run and maintain large installations of the underlying software to improve reliability and service levels

Education & Experience

Additional Requirements

  • You don’t need to have experience with any or all of the following, we know that you can learn and grow on the job, but these are some of the things our team values and focuses on day-to-day:
  • - Appreciate automation and tooling, and believe that they play a critical role in software development
  • - Experience engineering solutions for high volume web and cloud services
  • - Java and Go experience
  • - Ability to write and understand in a scripting language or two (Python, bash, Ruby)
  • - Advocate for continuous integration and continuous delivery
  • - Have experience building tools for engineers, some of which may be backed by distributed systems at large scale
  • - Preference for test driven development and writing testable code, and testing frameworks
  • - Experience with AWS or GCP
  • - Experience with NoSQL databases, particularly Cassandra
  • - Have used any of these technologies we tend to focus on:
  • - Tools: GitHub, Artifactory, Jenkins, nginx, Varnish, Jetbrains
  • - Technologies: Docker, Kubernetes, Tekton, Spinnaker.
  • - Want to participate in the open source community for some of the above products
  • - Partner closely with security, quality and product teams to achieve high priority security, privacy, compliance, reliability, business-continuity and new product objectives
  • - 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.

Pay & Benefits