In this position you will join a fast-paced team developing new, cutting-edge firmware or validation coverage and tools for Solidigm Solid State Drives (SSD). You will utilize and grow your experience in embedded architecture, external interfaces, and product constraints, along with the ability to develop architectures/features that meet these constraints while providing new value for the platform. You will use and gain experience in storage interface standards such as SATA, SAS, PCIe, and NVMe. The role will include development, design, validation, and implementation of new product and test features from internal or customer demands. The team utilizes Agile development methodologies and good communication skills, and the ability to work closely with team members in local or remote locations is required.
As an undergraduate development intern, typical responsibilities are but are not limited to:
- Develop, review, document, and maintain product source code in C/C++
- Analyze and develop firmware per internal and external (customer) specifications
- Create validation plans and test software using Python and other tools in an internal framework
- Develop an understanding of industry-standard communication and specs to support knowledge in this field (NVMe, PCIe, NVME-MI, and others)
- Perform unit and system level testing including failure analysis and debug of product issues as part of development and validation phases
- Participate in and role model an Agile/Kanban development culture which emphasizes product quality, team accountability, and continuous improvement
A successful candidate will demonstrate:
- The ability to listen, understand and respond professionally to partner questions and issues while building trust
- Excellent written and presentation skills
- A history of embedded systems coursework and good overall performance in embedded systems and computer science classes.
Preferred Skills:
- Prior internships working in embedded systems or demonstrated work on public repositories.
- Experience with embedded hardware development (such as with Arduino, Raspberry Pi or others)
- Structured software development and practices, analytical problem solving, innovation and a mindset of continuous improvement
- Enterprise storage interface protocols (e.g., SATA, SAS, PCIe, and NVMe) or understanding of basic industry standard communication such as I2C and UART.
- Basic working knowledge of assembly language in any architecture.
The candidate must be enrolled in a bachelor's degree program for Computer Engineering, Electrical Engineering, Computer Science or a related field. Candidates must be in their second year of study or later.
3+ months of experience (including coursework) in the following areas:
- Software or firmware development experience in an embedded systems environment with programming in C/C++ or advanced Python.
- Experience with software or hardware debugger tools, and basic understanding of source control management tools.
- Experience in managing, collaborating or presenting outputs and results of shared projects.
- Must be available to work in an office location on a semi-regular basis.