Software Development Engineer - Storage

Apple | Cupertino, Ca

Date listed

7 months ago

Employment Type

Full time



Total Funding

$6.2 billion

Glassdoor Rating

4/5 (15000 reviews)

Keywords: perl bash python ios

Are you a big-picture thinker who loves setting ambitious goals? Do you have a passion for understanding how each line of code affects all the others? In the Core Operating Systems group, you’ll ensure the OS is inseparable from each device’s identity as a whole. That’s because this group is committed to building fully integrated operating systems that combine hardware, software, and apps into a single Apple experience. Your dedication to cross-disciplinary collaboration will help develop groundbreaking technologies, such as iOS, macOS, watchOS, and tvOS. By crafting these distinct, holistic user experiences, you’ll continue to uphold and advance the excellence people expect from Apple devices. The Storage Systems team within Apple’s Core OS Organization is looking for a talented and inspired software development engineer in the disk management team. The team is responsible for storage device management in iOS and macOS. This position’s primary focus will be storage device management, arbitration, configuration and notification. Software developed and tested will have deep interaction with the OS kernel, disk devices, local and network filesystems, and other system software tools and utilities. You will work hands-on with teams of development and quality engineers on the development of new features, protocols, and hardware, as well as provide world-class support for existing deployments.

Work with a highly skilled engineering team in the design, implementation and support of storage devices related technology in Mac and iOS platforms. Performance analysis and debugging. Triage kernel, driver, and user application issues from internal engineering teams. Develop new tools to automate the triage and identification of software bugs

Skills & requirements

  • OS kernel mode and low level user mode programming experience, good knowledge on Operating Systems, computer architecture.
  • Good understanding of block-based disk devices as well as filesystems in modern Operating Systems
  • Proficiency understanding and ability in programming languages in C and C++ or obj-C. Capable of building scripts using bash/python/perl. Knowledge about x86/ARM assembly is a plus.
  • Capable of using gdb or lldb to do the debug, core file analysis, and triaging.
  • Comfortable in working with cross-functional teams to drive efficient bug resolution.
  • Ability to work independently and be proactive in task completions.
  • Highly professional with the ability to deliver solid work on tight schedules.
  • Excellent communication skills, both oral and written.
  • Excellent organizational skills.
  • Must be detail oriented.

BS/MS in Computer Science or related field
  • Preferred Experience:
  • Understand disk and partitions, partition types, file system types, disk RAID, familiar with the boot sequence from EFI to desktop, understand things like resource access arbitrations from file open/close to device access file system mount unmount, user privileges, and have a good knowledge about end to end data IO path from file read write to disk IO.
  • Experience with file systems such as HFS+, FAT, NTFS etc. Understanding of storage interfaces including PCIe, NVMe, AHCI, SATA, SCSI, USB,
  • Familiarity with Source Control Management with svn or git