IBM Senior Storage Software Engineer - Platform in CHICAGO, Illinois
As a Senior Storage Software Engineer, you will be part of the Cloud Object Storage development team responsible for ensuring the architectural integrity and successful delivery of a scalable object storage platform. You will be responsible for participating in the development, testing, and delivery of products and features in support of IBM’s Cloud Object Storage system. You will join a small, agile engineering team and participate in all aspects of the development process, from requirements gathering through delivery and production support.
This team's focus is on all aspects of disk management and monitoring, including disk initialization, fault monitoring and handling, and reporting. This functionality is at the heart of the low-level storage utilized by the IBM Cloud Object Storage system and is critical to the operability and health of the overall system. Successful candidates will have a strong software engineering background in server-side development with an emphasis on performance and quality. The candidate must be able to design and architect software using solid design patterns.
Develop applications to monitor and manage disks utilizing data provided by Linux and various forms of storage hardware (SATA/SAS drives, disk controllers, etc.).
Extensive development in Python with occasional endeavors requiring a variety of languages to support open source software, such as the Linux kernel.
Design new and innovative mechanisms to predict, detect, isolate, and recover storage hardware failures of all kinds.
Integrate with Cloud Object Storage applications and monitoring frameworks to create an easily monitored and managed solution.
Take a hands-on approach while participating in all phases of the development process with a constant focus on improving process and the overall quality.
Develop estimates for your own assigned work and complete assigned software development, testing and/or maintenance tasks.
Identify potential problems with applications/systems and research/recommend alternative solutions.
Utilize defect tracking system to track defects and change requests.
Assist with resolution of customer issues that arise in the deployed products.
Work with team to generate new innovations and future roadmaps.
Required Technical and Professional Expertise
At least 5 years of programming experience including scripting (e.g. Python), systems programming (e.g. C), and object-oriented development.
Strong technical background - Expertise in the architecture of a modern Linux distribution, including kernel mechanics, services, configuration, monitoring, and management. Advanced knowledge of algorithms and an understanding of the nature of memory management, interrupts, multi-threaded programming, and database structures.
Ability to architect appropriate technical solutions - Ability to define the best integration approach based on solid design principles and maintainability.
Debugging and troubleshooting - Ability to solve technical problems in areas both familiar and unfamiliar.
Data structures and algorithms - Theoretical knowledge and ability to apply said concepts to engineering problems. Experience in object-oriented design, data structures, algorithms, and problem solving.
Preferred Tech and Prof Experience
Proficiency in Python programming language.
Proficiency in C programming language.
Understanding of disk-level protocols such as ATA and/or SCSI.
Understanding and usage of POSIX systems with an emphasis on Linux.
Strong Linux shell skills.
Experience leading technical initiatives.
IBM is committed to creating a diverse environment and is proud to be an equal opportunity employer. All qualified applicants will receive consideration for employment without regard to race, color, religion, gender, gender identity or expression, sexual orientation, national origin, genetics, disability, age, or veteran status. IBM is also committed to compliance with all fair employment practices regarding citizenship and immigration status.