Senior Software Engineer
Beijing, Beijing, China
Machine Learning and AI
At Apple, new ideas have a way of becoming great products, services, and customer experiences very quickly. Bring passion and dedication to your job and there's no telling what you could accomplish. Do you love problem solving and thinking beyond an obvious solution? Do you thrive in ambiguity and teams where little direction should fuel your creativity? We are looking for an ambitious and versatile senior engineer who will be a key member of our team, delivering data products that effectively solve exciting business problems. You will have the opportunity to define, refine, and/or refactor approaches, designs, and architectures to meet the engineering challenges we must solve. You will be a leading voice in our technology strategy and its delivery, developing and mentoring junior members of the team. You will collaborate closely with the business to deliver relevant data and insight to inform our strategy and decisions.
- You should have 5-10 years experience in software engineering roles. You will have an excellent understanding of scalable approaches and thrive working in Agile environments.
- You are a clear and effective communicator, and enjoy collaborative problem solving
- You love working on a shared codebase that supports important applications; and the subject area that it requires
- Deep expertise in modern software engineering approaches, stay on top of developments, and are aware of what leading players are doing
- You have a confirmed ability to design, implement, refactor, and extend highly performant, scalable, resilient, reliable system
- Java, Python, Golang, and/or other program languages
- You have deep experience with Spark, Hadoop, Kafka or other distributed systems
- MySQL, Oracle, Postgres, or other relational databases
- Worked in cloud environments and are familiar with object stores, and other common cloud-native data storage and processing frameworks
- You have worked in CI/CD environments and understand scalable deployment and operational management approaches
- You have experience with pipelines and architectures that support machine learning development platforms and production applications
- You understand statistics and are capable of using data analysis techniques to understand data quality, profile system loads, understand the relationships between business metrics, and similar
- Design and implement pipelines, storage, and processing solutions using modern, distributed systems approaches and technologies - Advocate for the design and implementation approaches you propose - Follow standard methodologies in storage, processing, copy/synchronization, etc. appropriate to the scale and maturity of our products - Work in multi-functional teams to prototype new concepts and deliver end-to-end systems in an agile setting - Design and deliver high quality systems with excellent reliability and scalability, leading complexity and providing for efficient operations
Education & Experience
Bachelors, Masters, or PhD or equivalent professional experience in Computer Science, Distributed Systems, Software Engineering, or related field and experience designing, building, maintaining, and extending large-scale production data systems.