Software Development Engineer
Santa Clara Valley (Cupertino), California, United States
Software and Services
The team here at Apple is building services and frameworks empowering Apple’s software engineers to build the products our customers love. We are a fast moving, highly skilled but small team designing and building the foundational technologies that underpin Apple’s server-side products. Our systems have to scale globally, stay highly available, be secured, easy to use and "just work”. That's a tall order, and we're looking for a talented and passionate engineering leader who loves dealing with such challenges. If this is something which interests you, we'd love to hear from you.
- You should be intimately familiar with designing, developing and operating highly available, scalable, distributed systems.
- You love automation and tooling and believe they play a critical role in software development.
- Familiar with authentication, authorization, access control and similar distributed systems security concepts.
- Know and understand your design patterns and how to implement them.
- Sensitive to user experience and design APIs and tools users love.
- Curious to continue learning about how systems work and how they fail.
- Excited to learn new technologies and solutions.
- Love open source and collaboration.
- Detail oriented. perfectionists are also welcome to apply
Understand distributed system security: authentication and access control in distributed systems. Understand the security challenges in large scale distributed systems where system failures and compromises happen continuously. You should be an expert in designing, implementing and supporting highly scalable services deeply understand async programming models have the ability to design and develop intuitive APIs that developers love but can scale and be familiar with modern server technologies (e.g., non-blocking IO, distributed storage, async programming) be eager to learn new technologies and solutions love open source and collaboration be detailed oriented. You should enjoy being challenged, be a teammate, a student, and a mentor and of course be passionate about development. SOME TECHNICAL SKILLS WE FIND RELEVANT: - micro-service and event driven architectures - async programming and non-blocking IO - Kotlin, Java and/or other JVM languages. Go, C++ - modern application server frameworks like Finagle,Vert.x or Netty, but also more traditional ones like Jetty, Tomcat, Servlets, Node.js, Ruby On Rails, Django or others - backend systems like Cassandra, Postgres or MySQL, Redis, Memcached, Kafka and Solr - cloud platforms like AWS, GCP, Azure, Heroku - Linux and macOS - testing frameworks: Junit, gmock, TestNG, Spock, Cucumber - continuous integration and delivery
Education & Experience
BS or MS in Computer Science or equivalent