OneMain Financial Jobs

Job Information

IBM Lead Software Engineer in Pune, India

Introduction

At IBM Software, we transform client challenges into solutions. Building the world’s leading AI-powered, cloud-native products that shape the future of business and society. Our legacy of innovation creates endless opportunities for IBMers to learn, grow, and make an impact on a global scale. Working in Software means joining a team fueled by curiosity and collaboration. You’ll work with diverse technologies, partners, and industries to design, develop, and deliver solutions that power digital transformation. With a culture that values innovation, growth, and continuous learning, IBM Software places you at the heart of IBM’s product and technology landscape. Here, you’ll have the tools and opportunities to advance your career while creating software that changes the world.

Your role and responsibilities

As a Lead Software Engineer, you will extend our multi-language static code analysis platform by adding support for additional programming languages and enhancing our program analysis capabilities. You will design and implement language front‑ends, abstract syntax navigation, type reasoning, and program‑graph constructions that enable crypto‑security analysis across modern software ecosystems. You will work closely with architects, researchers, and security engineers to ensure analysis accuracy, scalability, and extensibility across diverse runtimes and languages:

  • Design and implement language support for one or more modern languages (e.g., Go, JavaScript, TypeScript, Node.js, C, C++, C#, Rust, Kotlin) within a multi-language static analysis framework.

  • Develop and maintain robust parsing, syntax-tree navigation, and semantic modeling for supported languages.

  • Build and extend program‑analysis components such as control-flow graphs, data-flow graphs, type propagation, symbol resolution, and inter‑procedural call modeling.

  • Collaborate with architects and product managers to define requirements, analysis depth, and extensibility goals for new language integrations.

  • Ensure correctness, determinism, and performance of analysis across large and complex codebases.

  • Participate in code reviews, design reviews, and evolve engineering best practices for program analysis components.

  • Work with security teams to model cryptographic APIs, language ecosystems, libraries, and vulnerability patterns.

  • Author technical documentation, specifications, and reusable language‑enablement patterns.

  • Mentor junior developers on language modeling, program analysis techniques, and best practices in static analysis engineering.

Required technical and professional expertise

  • Strong experience in compiler or static analysis development, including parsing, AST manipulation, semantic analysis, or intermediate representations.

  • Proficiency with designing and extending grammars (ANTLR or equivalent), parse-tree traversal, and language‑specific syntax modeling.

  • Deep understanding of program analysis fundamentals such as control‑flow, data‑flow, type inference, and inter‑procedural analysis.

  • Hands‑on experience building or extending language front‑ends, static analyzers, linters, or similar tools.

  • Strong programming skills in Java or another systems language used to build core analysis components.

  • Solid grasp of software engineering fundamentals: design patterns, modular architecture, testing methodologies, and performance optimization.

  • Familiarity with cryptography concepts, secure coding principles, and common vulnerabilities.

  • Excellent debugging skills, especially when working with large codebases and complex language constructs.

  • Strong communication skills and the ability to collaborate across platform, security, and research teams.

Preferred technical and professional experience

  • Experience with multiple programming languages and their ecosystems (e.g., Go modules, npm/TypeScript, Cargo for Rust, C#/CLR, JVM/Kotlin, or C/C++ build systems).

  • Practical familiarity with compiler frameworks or program analysis tools (eg ANTLR, or Tree‑sitter).

  • Knowledge of advanced type systems (generics, templates, traits/interfaces, unions/options).

  • Expertise in data‑flow or dependency‑graph analysis, symbolic execution, or advanced slicing techniques.

  • Exposure to cryptographic libraries, standards, and post‑quantum cryptography concepts.

  • Experience contributing to open-source static analysis tools, compilers, or language runtimes.

  • Background in research‑driven fields such as programming languages, compilers, formal methods, or program verification.

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, sex, gender, gender identity or expression, sexual orientation, national origin, caste, genetics, pregnancy, disability, neurodivergence, age, veteran status, or other characteristics. IBM is also committed to compliance with all fair employment practices regarding citizenship and immigration status.

DirectEmployers