The IEEE Computer Society recently selected Facebook London’s Mark Harman as the recipient of the 2019 Harlan D. Mills Award. The award recognizes those who have demonstrated long-standing, sustained, and impactful contributions to software engineering. Previous winners include distinguished scientists from NASA, Microsoft, and AT&T. Learn more about Harman’s research here.
In addition to his full-time role at Facebook, Harman is a part-time professor of computer science at University College London. He was recognized for his “fundamental contributions throughout software engineering, including seminal contributions in establishing search-based software engineering, reigniting research in slicing and testing, and founding genetic improvement.” In the academic community, he is known as the cofounder of the highly active field of search-based software engineering. He has also made scientific contributions to source code analysis, software testing, app store analysis, and empirical software engineering.
Here at Facebook, Harman manages the team behind Sapienz and SapFix, tools we use to continuously test Facebook’s suite of Android and iOS apps. The technology behind Sapienz grew out of decades of work by the software engineering research community. It leverages automated test design to make the testing process faster, more comprehensive, and more effective. Sapienz aims to test millions of lines of code, nearly in real time, and adds comments using the same code review mechanisms that human engineers use, making it seamless and friction-free. It designs tests to expose potential faults, reducing the burden on engineers and thereby freeing them up to work on more creative aspects of coding. The combination of end-to-end testing and fixing makes Sapienz unique in its level of friction-free code checking.
Once Sapienz pinpoints a specific portion of code in need of a fix, that information is passed to SapFix, our new hybrid tooling for automated fixing. It’s powered by Getafix, which “learns” from a pool of the fixes most often used by engineers in the past and proposes the most effective fixes for the issue at hand. SapFix then evaluates these fixes by applying and testing each one. Once a proposed fix is reviewed by a developer and accepted, SapFix automatically deploys the fix. Together, these tools help us automate code testing and fixes so our engineers can spend less time on tedious code-testing work and more time accelerating the deployment of new features. Read more about our experiences using SapFix.