IBM Senior Storage Software Engineer - Core in CHICAGO, Illinois

Job Description

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 the development of the Java server application powering the storage nodes of the distributed Cloud Object Storage 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 object-oriented methodologies utilizing multi-threaded and asynchronous design paradigms.

Role Description

  • Develop Java software for the service responsible for ingesting, processing, and storing the data of a distributed object storage system. This includes:

  • Asynchronous design patterns and programming techniques

  • Architecture and design of scalable, fault-tolerant distributed systems

  • Proprietary binary network protocol (not an HTTP service)

  • Server network stack

  • I/O request handling and quality of service architecture

  • Multiple storage engines and on-disk data management

  • Performance tuning and optimization

  • Statistics and analytics frameworks to support system monitoring and troubleshooting

  • Take a hands-on approach while participating in all phases of the development process (Agile) with a constant focus on improving process and the overall quality.

  • Use object-oriented analysis techniques to gather and document requirements, code, and test cases.

  • 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.

Required Technical and Professional Expertise

At least 3-5 years of programming experience including object-oriented server-side development using a heavily asynchronous development model, with a strong preference towards Java

  • Programming language flexibility - Expertise in at least one language, familiarity with some of the common languages, and ability to pick up new languages quickly

  • Strong understanding of software development lifecycle

  • Ability to architect appropriate technical solutions

  • Debugging and troubleshooting - Ability to solve technical problems in areas both familiar and unfamiliar

  • Data structures and algorithms - Theoretical knowledge and ability to apply concepts to engineering problems

  • Collaborative team skills - Excellent written and verbal communication skills, sense of ownership, urgency, and drive

  • Familiarity with distributed systems and networking principles

Preferred Tech and Prof Experience

  • Experience programming with Python

  • Experience leading technical initiatives

  • Experience using and developing for a Linux environment

EO Statement

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.