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