Backend Software Developer - Manufacturing Design Systems
Shanghai, Shanghai, China
Operations and Supply Chain
Imagine what you could do here. At Apple, new ideas have a way of becoming extraordinary products, services, and customer experiences very quickly. Bring passion and dedication to your job and there's no telling what you could accomplish. We are looking for an experienced Backend Software Developer. You’ll be joining our small backend team where you can have a large impact on one of the key systems that enables Apple to manufacture every product. This role requires skills similar to backend web development, but you’ll apply those skills to factory systems that assist the work of robots and humans alike.
- Strong skills in Go and/or PostgreSQL or other backend languages (e.g. Python, Ruby, Java, or Node.js) and relational databases (e.g. MySQL).
- Knowledgeable about Modern SQL, HTTP, TCP/IP, Linux, Git, Web Development, Distributed Systems, etc.
- Experience and desire to apply best practices for building reliable software: Automated Testing, Continuous Integration, Code Review, Pair Programming, etc.
- Desire to deeply understand the technologies you are using by reading documentation, articles, and the source code of libraries, databases, and operating systems.
- Good communication skills in written and spoken English.
- Manufacturing experience or exposure is a plus, but not required.
- Plan, develop and shape new features by collaborating with users, stakeholders, and other team members. - Write application code in Go and Modern SQL with great attention to detail, testing and documentation. Review code and collaborate on pull requests from your team members. - Constantly learn and improve your own technical skills by reading code, documentation, running experiments and talking to your colleagues. - Optimize SQL queries running against large databases containing billions of rows using EXPLAIN ANALYZE, creating indexes and refactoring table structures. - Plan and deploy PostgreSQL Schema Migrations that can be executed with zero or minimal downtime. - Design and execute load tests to explore the breaking points and bottlenecks of our systems. Analyze and visualize large data sets using Jupyter Notebooks, Tableau, Graphviz or similar. - Support the troubleshooting, mitigation, and fixing of production issues involving our Applications, Databases, Networks, and Proxies using Grafana, Prometheus, Kibana, WireShark, and other monitoring and debugging tools. An expert in the above can have a huge impact in this role, but we also support the growth of talented and fast-learning developers who are serious about taking their skills to the next level.