We've given the UCL students direct exposure to industry-scale systems and the opportunity to tackle genuine engineering challenges alongside Bloomberg's engineers. This clearly demonstrates what’s possible when industry and academia work closely together to create lasting impact."
The challenge
Fixing bugs is one of the most time-consuming parts of software development. Automated Program Repair (APR) tools promise to speed this up by automatically generating software patches that fix problems. However, in practice, these tools are often ignored when engineers find that suggestions arrive at the wrong time, lack context, or simply create extra work.
Previous research has shown that when automated fixes are presented in new pull requests (a request for colleagues to review and approve changes before adding them to the main code), only a small number are accepted, sometimes as few as 5%. Instead of saving time, these tools can clutter developers’ workflows.
At Bloomberg, where tens of thousands of C++ projects and thousands of C++ libraries power complex systems, engineers faced this same problem. Automated tools could identify issues, but not in a way that fits easily into day-to-day development. The challenge was clear: make automated bug fixes useful, relevant and easier to use.
Of course, this challenge extends far beyond Bloomberg. In fact, with new development tools constantly being released, developers everywhere face a similar struggle to adopt solutions that genuinely enhance their workflows.
The breakthrough
A collaboration between Bloomberg and UCL Computer Science set out to tackle this problem. Their answer is B-Assist, a tool that brings automated fixes into the heart of the development process.
Instead of generating new pull requests, B-Assist works inside GitHub’s existing workflow. When a developer opens or updates a pull request, Bloomberg’s continuous integration system runs a series of analysis and repair tools. B-Assist takes this output, checks which fixes apply to the lines of code being modified, and presents them as suggested changes within the pull request itself.
Developers can review, accept or reject these suggestions with a single click. This approach means fixes appear at the right time, in the right place, and for the right person: the engineers who are already working on and reviewing that code.
Early feedback shaped every stage of B-Assist’s development. In an initial survey of 34 Bloomberg engineers, almost everyone preferred receiving fixes within existing pull requests rather than as separate ones. The Bloomberg engineers also wanted clear explanations and control over whether to accept or ignore each suggestion.
With this input, the team built and deployed B-Assist as a GitHub app integrated with Bloomberg’s internal static analysis tools.
This work is part of a broader collaboration with a team of London-based engineers from Bloomberg’s Engineering department, which was initiated within the UCL Industry Exchange Network (UCL IXN) in 2022 and has engaged over 20 MSc students, two PhD students and two professors from UCL thus far. Providing our students with the opportunity to join a team of experienced researchers and engineers tackling real-world challenges is at the heart of our teaching and research programmes.”
Real-world impact
B-Assist has changed the daily routine for hundreds of Bloomberg developers. When B-Assist was tested in real development environments, the response was overwhelmingly positive. In a final study involving eleven Bloomberg engineers, 74% of automated patch suggestions were accepted outright or with small changes. Engineers rated the suggestions as useful or very useful in almost 80% of cases.
Simple fixes, such as code formatting and dependency management, were the most widely accepted. Even when engineers chose to handle a problem in their own way, they valued B-Assist for spotting issues early and helping them stay focused on their work.
Many described B-Assist as an extra pair of eyes that helped them maintain code quality without having to switch between tools. Others noted how convenient it was to accept changes directly in GitHub rather than returning to the development environment.
Within the first week of release, multiple teams of Bloomberg engineers had already installed B-Assist and begun using it successfully. Initially designed for C++, the tool is meant to be language agnostic, and there are plans to extend its usage to other programming languages, including Java and Python. Further, as B-Assist primarily uses publicly available GitHub features, the approach is also extensible to other industrial and open source settings.
The ongoing partnership between Bloomberg and UCL Computer Science demonstrates how research can directly improve how engineers work. By focusing on timing, context and user experience, B-Assist turns APR from a distraction into something genuinely helpful, and demonstrates how improving usability is the key to making APR tools a standard of everyday software development.
The value of this work has also been recognised beyond Bloomberg. The resulting paper, “User-Centric Deployment of Automated Program Repair at Bloomberg,” won the ACM Distinguished Paper Award at the 46th International Conference on Software Engineering (ICSE 2024) 2024 – the premier venue for software engineering research – for its innovative focus on making APR tools more accessible to developers in industry.
"Innovation is one of our core values at Bloomberg. Our ongoing collaboration has combined UCL’s research expertise with Bloomberg’s production-scale engineering environment to create an immensely rewarding exchange of ideas and experience for the participants. We have brought research techniques for advanced automated program repair into a production environment where it can be made truly usable for software engineers.