Principal Data Systems Software Engineer
Oracle · Bangalore, India · 3d ago
Build the next generation of Oracle Zero Data Loss Recovery Appliance (ZDLRA) software, helping fortune 500 enterprises protect and recover their business-critical Oracle databases. Work on software where data integrity, recoverability, cyber resilience, and performance at scale directly affect customers' most important operations.
Join our growing engineering team in Bengaluru and collaborate with experienced ZDLRA engineers in India and the US. You will contribute to shared product priorities, deliver new features and projects, and help evolve an enterprise data protection platform. This role offers the opportunity to help shape a new team while building deep product expertise within an established global engineering organization.
The work spans Oracle database kernel development and systems programming, primarily in C and PL/SQL on Linux. You will tackle engineering problems involving buffers and caches, memory management, storage, file systems, I/O, networking, concurrency, and distributed systems. Strong algorithms, thoughtful design, and an understanding of how these components interact will be central to delivering correct, efficient, and maintainable software.
You will participate throughout the development lifecycle: understanding problems, exploring the codebase, identifying root causes, designing solutions, implementing changes, writing tests, and validating results. The work combines new development and enhancements with complex defect resolution, including issues encountered in customer environments. As your product knowledge grows, you will take increasing technical ownership of assigned features and components, contributing to design decisions, code reviews, ongoing maintenance, and knowledge sharing.
We value engineers who investigate problems systematically, use documentation and diagnostic tools resourcefully, communicate clearly, and help colleagues succeed. You will use modern engineering tools, including LLMs and AI coding agents, to accelerate code exploration, development, and testing while applying independent judgment and rigorous validation to the resulting designs and code.
We welcome experienced developers with strong C, Linux, system programming skills and practical knowledge of database internals, storage, distributed systems, or other demanding enterprise software. Prior Oracle Database, RMAN, PL/SQL, or backup and recovery product experience is an advantage. Strong systems fundamentals, curiosity, and the ability to translate complex requirements into reliable production software are essential.
This position is based in Bengaluru, India.
Product development and technical ownership
- Design, implement, and maintain ZDLRA features and enhancements in C and PL/SQL on Linux, contributing to Oracle database kernel and systems software development.
- Translate requirements and technical problems into clear designs, manageable tasks, and deliverable milestones. Evaluate alternatives and document trade-offs involving correctness, performance, scalability, compatibility, and maintainability.
- Apply appropriate algorithms and data structures to build efficient, reliable software. Reason about memory use, concurrency, synchronization, and behavior under demanding workloads.
- Develop and improve assigned components involving buffers, caches, storage, file systems, I/O, networking, and distributed processing, with careful attention to data integrity and recovery behavior.
- Build product expertise through code exploration, technical documentation, collaboration, and delivery of fixes and enhancements. Progress toward ownership of assigned features and projects, including subsequent development, maintenance, and defect resolution.
Investigation, performance, and quality
- Investigate complex defects, including issues reported from customer deployments. Reproduce failures, trace relevant code paths, establish root causes, and implement durable fixes.
- Use GDB, core dumps, logs, traces, profiling tools, and Linux utilities to gather evidence and understand software behavior across interacting components.
- Diagnose performance and scalability bottlenecks involving CPU, memory, storage, I/O, and networking. Establish useful measurements and validate the impact of changes against representative workloads.
- Design and implement tests alongside production code. Cover functional behavior, boundary conditions, regressions, concurrency, and relevant failure and recovery scenarios using the team's engineering and test frameworks.
- Use shell scripting and automation to improve diagnostic data collection, issue reproduction, testing, and other repeatable development tasks.
- Follow secure coding practices and engineering standards. Evaluate error handling, resource management, backward compatibility, and versioning implications when modifying existing code or interfaces.
Engineering execution and collaboration
- Take assigned work through the software development lifecycle, from analysis and design through implementation, review, testing, integration, and maintenance.
- Plan work realistically, identify dependencies, and communicate progress, design decisions, risks, and blockers. Coordinate with the engineering team to deliver agreed project milestones.
- Collaborate closely with ZDLRA engineers in India and the US and with relevant database engineering teams to resolve cross-component issues and deliver shared product objectives.
- Participate in design and code reviews, providing constructive feedback on correctness, clarity, performance, security, test coverage, and long-term maintainability.
- Write and maintain useful design notes, implementation documentation, and troubleshooting guidance. Share findings so that investigations and engineering decisions benefit the wider team.
- Use internal documentation, specifications, and existing code resourcefully to understand unfamiliar areas. Ask focused questions, seek timely feedback, and help colleagues solve technical problems.
- As product expertise grows, provide technical guidance, mentor colleagues, and contribute to improvements in the team's development practices and engineering quality.
AI-assisted engineering
- Use LLMs and AI coding agents to accelerate code exploration, problem analysis, implementation, test development, and documentation where they are useful.
- Critically review AI-generated suggestions and verify them against the actual codebase, requirements, and observed behavior. Validate changes through appropriate reviews and tests, and remain accountable for the correctness, security, performance, and maintainability of delivered software.