June 5, 2017

Mark Harman on software engineering at Facebook scale

By: Mark Harman

I recently joined Facebook as an engineering manager on the developer infrastructure team. After a career in academia, I came to Facebook because of the opportunity to work with my team to achieve profound and lasting impact from our research work, and to do software engineering at Facebook scale.

The opportunity to see scientific research ideas migrate from the lab into practice, and Facebook’s commitment to open collaboration can benefit the whole software engineering community. Over the past couple of weeks I had the opportunity to speak to this community at several conferences such as SBST, the 10th International workshop on Search Based Software Testing; Mobilesoft, the 4th IEEE/ACM International Conference on Mobile Software Engineering and Systems; CSE-SI, the 4th International Workshop on Crowd Sourcing in Software Engineering; and ICSR 2017, the 16th International Conference on Software Reuse.

Speaking at conferences such as these helps my team and I to collaborate with the wider community on some of the biggest challenges we face together.  The key topics I’ve been talking about are automated mobile system testing, using intelligent computational search, and crowdsourcing domain knowledge into the automated software engineering process.

These are extremely important software engineering techniques as we approach pressing global-scale technical challenges: The mobile applications platform is increasingly important for countries’ critical national infrastructure, economic well-being, healthcare and commercial viability.

The scale of these systems means that the space of potential test scenarios is considerably beyond enumeration. Faced with this daunting challenge, intelligent computational search, an area that has become known as Search Based Software Engineering (SBSE), offers great promise and the hope to taming the enormous search spaces that face us. Although we cannot hope to enumerate the entire space of possible system tests, we can use computational search to intelligently navigate this enormous space, automatically optimizing and machine learning better test case designs.

Using SBSE we have demonstrated that software test design can, indeed, become largely automated, thereby improving the safety and reliability of systems, whilst simultaneously considerably reducing the effort and required to testing them. The work we are doing at Facebook is tackling these issues head-on with automated testing, something other Facebookers have also recently blogged about.

My colleagues, Yue Jia and Ke Mao, co-founders of the automated testing start-up Majicke, developed our scientific work at University College London and subsequently joined Facebook because of outstanding opportunities and challenges to work on software engineering at Facebook scale, with its 1.23 billion daily active users.

As well as the obvious tremendous excitement and challenge of working at this scale, Facebook’s commitment to creating a more open and connected world also resonates with our goal of achieving scientific research impact. Facebook has an impressive tradition of open sourcing its infrastructural tools and technology, such as the outstanding verification tool, Infer. As a result, not only Facebook itself, but the whole international community benefits from scientific and technological developments at Facebook, and we can play our part in tackling the challenge of improving the software systems that underpin the world’s infrastructure.