My research develops and evaluates tools that help programmers build, understand, test, and repair software. Across program analysis, automated repair, machine-learning-based developer tools, and coding agents, a recurring goal has been to connect foundational ideas with practical systems used by developers.
RSAR — Scalable interprocedural program analysis transferred into IBM Rational Software Analyzer.
ATA — Test automation from natural-language descriptions, developed at IBM and deployed through IBM Global Services.
MemInsight — A platform-independent memory profiler for JavaScript, productized by Samsung Electronics as part of the Tizen IDE.
Getafix & SapFix — Machine-learning-based automated program repair systems deployed at Facebook.
Aroma — Structural code search for code recommendation, piloted at Facebook and released as research software.
G4G (Gemini for Google) — An enterprise-specialized version of Gemini trained on internal software artifacts including code, diffs, documentation, and review history; in everyday use by Google engineers.
Passerine — An agentic system for resolving software issues, deployed at Google.
At Meta, I focus on developer productivity with coding agents as a key enabler. My research and development work centers on agent quality, correctness, and efficiency—how to make agents more capable while ensuring that their behavior can be evaluated reliably.
A related theme is realistic evaluation of AI for software engineering: developing tasks and methodologies that better reflect the work professional developers actually do. Recent work includes Agentic Code Reasoning and related efforts on evaluating coding-agent reasoning and behavior.
I study how AI systems for software engineering should be evaluated on tasks that reflect real developer work. Many widely used benchmarks are derived from public repositories or programming exercises; my work explores how evaluation tasks can instead be constructed from production software activity and realistic developer interactions.
Recent efforts include REAP, RubberDuckBench, and Agentic Code Reasoning, along with field studies of AI-assisted software development. This work considers not only what tasks to evaluate, but also how to curate evaluation sets, grade agent behavior, and determine whether benchmark improvements translate into practical developer impact.
I also study AI-assisted software development through empirical work with professional developers. This includes a large-scale randomized controlled trial measuring the impact of AI on development speed, as well as studies of how developers interact with AI systems, where those interactions fail, and what developers want from AI-powered tools.
At Google, I led technical work on AI-powered developer tools spanning code completion, code review, bug fixing, code migration, and developer question answering. A major focus was adapting large language models to Google’s internal software environment rather than relying only on general-purpose models.
I proposed and led the development of G4G (Gemini for Google), a specialized model trained on internal code, diffs, documentation, and review history. I also led Passerine, an agentic system for resolving software issues, and helped build a research effort within Google’s developer-tools organization around the evaluation and deployment of AI for software engineering.
Of historical interest: in October 2024, Google CEO Sundar Pichai reported that more than 25% of new code at Google was being generated by AI, with the generated code subsequently reviewed and accepted by engineers. This milestone was crossed during the period when I was leading AI-powered developer tooling at Google and illustrates the scale that AI-assisted software development (all pre-agentic) had reached inside the company! This was of course before coding agents took over.
At Facebook, I founded and led the Big Code team, focused on using machine learning to improve developer productivity. The work spanned automated program repair, code search and recommendation, predictive test selection, type prediction, and production debugging.
Systems from this effort included Getafix and SapFix for automated repair, Aroma for structural code recommendation, neural code search, and predictive test selection. Several of these systems were deployed in production, making this period an important bridge between research ideas and large-scale developer workflows.
My earlier research focused on program analysis, debugging, automated repair, and testing. Programming with Angelic Nondeterminism, Angelic Debugging, and SemFix developed logical foundations for fault localization and program repair. SemFix later received the ICSE Most Influential Paper Award in 2023.
At IBM, I worked on making interprocedural analysis practical at enterprise scale, with techniques that shipped in IBM Rational Software Analyzer (RSAR). I also helped develop ATA, which generated test scripts from natural-language descriptions and was deployed through IBM Global Services. Across this work, a recurring theme has been turning principled techniques into tools that operate on real software systems.