Shane McIntosh joined the Cheriton School of Computer Science this summer as an associate professor. His research area is empirical software engineering, with more specific focuses on release engineering and software quality. He has made many significant research contributions in intelligent release pipelines, code review analysis, and mining software repositories.
He leads the Software Repository Excavation and Build Engineering Labs — the Software REBELs for short. The mission of the Software REBELs is to enable the development, maintenance, and operation of intelligent release pipelines. He and his students perform empirical studies that mine data that is generated during the development and operation of large-scale software systems. His team’s research focuses on release engineering — the process of assembling, verifying, and delivering releases of software systems — and software quality — deriving practical guidelines for developing more reliable software systems.
As of August 2020, Professor McIntosh has published 19 international journal papers, 35 full-length conference papers, and 12 short international conference papers, all in top research venues and leading journals of the field. His papers have been cited more than 2,700 times with an h-index of 30 from Google Scholar.
Professor McIntosh’s work has been recognized with several awards. For example, he was one of two PhD graduates from Queen’s University’s class of 2015 to be recognized with the Academic Gold Medal from the Governor General of Canada for his outstanding doctoral work. Before joining the University of Waterloo, Professor McIntosh was an Assistant Professor in the Department of Electrical and Computer Engineering at McGill University, where he held the Canada Research Chair in Software Release Engineering.
Tell us a bit about yourself.
I did my grad studies at Queen’s University, a PhD under the supervision of Ahmed Hassan who himself was a graduate of the School of Computer Science at Waterloo about 15 years ago.
My PhD work was about software build systems. The build system is the tool by which a software system, which is written in code, is turned into a deliverable format that your customers or users expect. That format could be an app in the app store or software that’s deployed to a web server so users can access it. I study the glue between the code, the coding teams and the users of the code.
Did you spend some time in industry?
Yes, I was back and forth a bit in industry. My path in academia as a career was more zigzag than a straight line.
After my undergraduate degree I spent about a year in industry. And after my master’s I spent about three years in industry before going back to university to get a PhD. During that time, I worked as a software engineer and as a release engineer.
When did you become interested in computer science?
It never was the case that I just picked up a computer and instantly fell in love with computer science, but computer science touched all the areas where I had a strong interest while growing up. It was from there that my interest in computer science had begun.
I played a lot of baseball and that’s a game that’s heavily influenced by statistics. I’d watch a baseball game and saw that people were making projections and predictions. For example, on a sunny day, two days after it’s rained, this particular player hits better than on other days. I started wondering, how is that possible. The question is a part computer science — data mining — and data mining and its analysis are what make these sorts of predictions possible.
Later on, I became interested in music. A lot of music performance nowadays is supported by software. I have an electric drum set and I’ve played the drums for about 15 years now. So, my interest in music was also touched on by computer science. And, like a lot of kids, I played video games, which is possible because of the underlying computer science.
What attracted you to the Cheriton School of Computer Science?
I grew up in Ontario, so Ontario is home for me. The University of Waterloo has always been at the top of the list for computer science generally and for software engineering specifically. The software engineering program here is very well run and it’s recognized widely as unique. The program is offered jointly by faculty in computer science and faculty in electrical and computer engineering and the program is strongly focused on preparing students for industry. By being at Waterloo, I will have access to a strong pool of talented students and I hope it will accelerate both their careers and mine.
Even before I joined the School of Computer Science, I had met many of the software engineering profs here, for example Mei Nagappan, Jo Atlee and Mike Godfrey, among others. In fact, I met Mike at the first software engineering conference where I presented a paper. Mike Godfrey was a session chair at the conference.
Tell us a bit about your research.
The research group I lead is called the Software REBELs, an acronym that stands for Repository Excavation and Build Engineering Labs, and that name captures the two main thrusts of the work we do — software repository mining or repository excavation and build engineering.
We strive to make the maintenance and operation of release pipelines more intelligent, more efficient and easier to use — basically, making it a more effective and more enjoyable experience to write software. We try to make the pipeline flow more smoothly and more transparently, rather than having an opaque and slow build process.
We’ve built solutions that project how long a build will take and we’ve built solutions that extract information from the build to support software engineers. Based on what you’ve changed, for example, we can tell you it’s going to impact this many customers and impact that many platforms. In general, our work is about making that pipeline more effective and efficient.
Do you see opportunities for collaborative research, given the breadth and depth of work conducted at the Cheriton School of Computer Science?
I’ll obviously be working with members of the School’s software engineering research group, but I see many places for collaboration with other researchers.
One of the things I talked about during my faculty interview was the idea of a repeatable build — something in which you can explain each input artefact and the exact set of commands that translated them into the artefact that’s delivered. That’s surprisingly difficult to do even today — to be able to guarantee exactly what the steps were and what the inputs were that produced this output.
There are some examples of high-profile companies that couldn’t prove that this code is what ended up in this executable or library and because of that they lost contracts. This is a problem, or the kind of problem, that would be good to work on with people in the security and privacy group.
My group also does a lot of data mining. If we’re mining, say, all the build records of GitHub we end up with tons and tons of data that needs to be stored, accessed and mined efficiently. For this kind of work, it makes sense to work with researchers in the machine learning and data systems groups.
What do you see as your most significant contribution or work to date?
Some professors see their role as producing research, others see it as producing researchers.
If I were to talk about significant contributions in producing researchers, I’d say that I’ve had the chance to mentor some exceptional graduate students who have gone on to bigger and better things. Some of my former students are now working in academia in places as far away as Australia and New Zealand (which I was really looking forward to visiting before the pandemic!). Others are in industry, in research labs. I’m proud of both my students who’ve gone on to be academics and those that are in industry.
In terms of research, the contributions we’ve made that have had the biggest impact are on mining code reviews — trying to get a better understanding of what makes an effective code review — and the work we’ve done on build systems, understanding the impacts and how much it costs to maintain them. Some of my most cited papers are on code reviews.
I’m also proud of some of our other work that hasn’t been cited as extensively but has made an industrial impact. Some of the work we did with Dell EMC is really interesting and it’s being used today by their developers on a daily basis.
Who has inspired you most in your academic life?
Over my studies I’ve met a lot of fascinating and motivated people who have inspired me. Of course, I wouldn’t be in the position I am today without the amazing guidance and support of Ahmed Hassan, my PhD advisor at Queen’s. Ahmed did his PhD under Ric Holt, who was a professor at Waterloo’s School of Computer Science.
Bram Adams, who was a postdoc and mentor of mine at Queen’s when I was a graduate student, also had a very big influence on me. Bram started his academic career at Polytechnique Montréal and has just recently moved to Queen’s University.
What do you do in your spare time?
As I mentioned this earlier, I’m a drummer. Now that I’m in a bigger space, I have my drums set up at home rather than at a rehearsal space. I used to play drums in a heavy metal band, and for a while I thought that might be my career.
I also like baseball and still play it. I’m also into basketball, which I enjoy watching.