People of Language Design and Implementation

An interview project in conjunction with PLDI 2019  

Claire Le Goues

Interview with Claire Le Goues

Claire Le Goues is an Associate Professor in the School of Computer Science at Carnegie Mellon University, primarily affiliated with the Institute for Software Research. Her research interests span software engineering and programming languages, and especially in how to construct, maintain, evolve, improve/debug, and assure high-quality software systems.


BL: Tell me about yourself. Where did you grow up?

CL: I grew up outside of New York City, between the Tappen Zee Bridge and the Bear Mountain. We were commuting distance from the city and we would go to the city sometimes. I grew up right near the IBM TJ Watson research facility. That's actually where my mom and my stepdad met when they were both working there.

BL: How did you get into tech?

CL: I played with computers in my youth. I was not a NeoPets person; I was more of a geocities person. I learned HTML when I was like 12. I remember that a friend of mine showed me the internet. I went home and said to my mom "Mom, do we have the internet?" A little later, when I was 14, my mom told me that I had to get a summer job. This was in like 1998. In my town there wasn't really that much, lots of strip malls, I remember it was like the A&P and the dentists office, but not much more.

There was, however, a web design company in one of those strip malls. And remember this was pre-first-web-bubble-bursting. I walked into this place, I'm 14 and I probably looked about 10 and I just ask them: "Hi! Can I have a job?" I didn't apply or anything, I just walked into the place and told them I could make HTML tables and I wanted to work for them.

BL: You just cold called them? That's so bold!

CL: Yes, I literally walked in and hit the little bell on the reception desk. In retrospect, it sounds a little bit insane. I think that my boss was initially really taken aback by it, but after a while, I think he appreciated it. I earned $5.75 an hour. I think he was really amused by me. I did lots of different things for that company. I did some prototype mock-ups and I learned how to program in ColdFusion, which is one of the early-ish web languages. I did a lot of data entry. They did websites for the local car dealerships and literally for days what I did was enter options and models of vehicles. I think I can still remember all of the options available on the Ford F-150 because I'd done all of this data entry.

BL: So you mentioned that your parents worked at TJ Watson. What do your parents do?

CL: My mom and my stepdad are both retired, but they both used to do research. My mom has a PhD in materials science that she actually got from Carnegie Mellon in this building [the same building that houses Claire's office]. She was down on the second floor, which I believe is still materials science. My stepdad has his PhD in physical chemistry. They were both researchers at TJ Watson for a long time. My mother eventually moved into a position in the CTO's office and my stepdad retired from research just recently. My dad and my stepmom are restaurant people. My stepmom is a sommolier and my dad is a maƮtre d'.

BL: Do you remember ever going and hanging out at TJ Watson when you were younger? It is interesting to imagine looking into that place as a kid.

CL: I remember actually my mom would take me to work on take your daughter to work day. While I was there, she would let me play with the electron microscope. I would take pictures of like flies or pollen or other stuff. I was a huge nerd.

BL: If you were there in the late 1990s, you might have crossed paths with people working in your research area now that are still active in their field.

CL: I have made some weirdly random connections. I actually interned there when I was in college, but before grad school. That was about 15 years ago now. My husband works for Google and there was a time when he worked for short period in an operations group. He joined that group and told me there was this guy, Paul, that I needed to meet because we had both been at IBM. It turns out that I interned in his team in 2005! It took us a little while to make the connection, but after a few minutes he was like "You've got an insulin pump!" and I was like "And you lived in New York and did the reverse commute thing!". I don't remember anyone from back when I was a kid though, only from the internship that I did later.

BL: It sounds like you had a lot of exposure to really interesting tech stuff while you were in high school and college.

CL: Yea, I did the usual stuff, I took computer science classes while I was in High School, we had the AP ones. But the thing that I was really into when I was in high school was debate. I was out every weekend doing debate. Well there were a lot of tournaments of different sizes and levels of prestige. Some are regional and some are national. I was very competitive and I did very well my senior year. Actually, after being so involved in debate, I thought I was going to be a lawyer.

BL: You wanted to go to college and get into law?

CL: Yes, I originally majored in what was called "Social Studies" at Harvard --- yes, I know it sounds like a middle school class --- but it includes political science, that sort of thing. It was fun and I liked it. I like philosophy and I really enjoyed all of the political philosophy that we were reading. But later, I found myself uninspired while I was trying to slog through The Wealth of Nations. Around the same time, I had some friends and a boyfriend who were doing computer science. I remember talking to them about what they were doing. I remember them explaining some theory of computation stuff to me and finding it really interesting. I had never taken any classes like that before and you don't learn that stuff in high school. Eventually, it was like I was spending more time having other peoples' homework explained to me than I was spending on my own homework. I realized that I needed to stop and reflect on my choices.

BL: Did you continue to do debate in college?

CL: I didn't. There were two reasons for that. The first was that Harvard's debate team did a different type of debate than I was used to, so I would have had to change the way I debated. The second was that during high school debate took up such a significant amount of my time that I made the conscious choice during college to do something else, so I moved away from it.

BL: Did you choose a replacement for debate after you stopped debating?

CL: No, not a particular single thing, but I had lots of other things that I was involved in. I did a lot of volunteering. I taught at a vocational high school in Roxbury, MA while I was in college. I taught math. This experience taught me many things, one of which is that I can get up very early if I need to. I was commuting by subway and I had to be there to teach first period, at 7:30. The high school that I was teaching at was in a little bit of a rough neighborhood, there were metal detectors and a child care site at the high school. I taught math in a somewhat remedial way, sticking to basic algebra, that sort of thing.

BL: That sounds challenging. I imagine that teaching high school math involves a pretty significant classroom management component.

CL: Yea, and I think that that's the sort of thing that some people can do and it really comes naturally and then it's really difficult for other people. I think I did alright. One of the things that debate prepared me for was to speak at the front of a room in front of a group of people. I've never had any trouble speaking in front of large groups and I think that it was because I did a lot of debate during my formative years.

BL: It sounds like debate really prepared you to be an academic.

CL: Oh, yes, 100% and for a few reasons. A lot of debate is constructing an argument: here are the pieces of this argument, here is the premise, here is the evidence. All the time we were thinking about constructing and taking apart logical arguments, which in some ways is all that science is. It's like what we do when we're writing a research paper. "This is a problem. Here is why it is important. Here is our solution. Here are our criteria by which we will know that we have solved the problem. We evaluate and generate evidence." That's all it is. I think debate is great for an academic career.

BL: There is also an improvisational component to debate.

CL: Yes, the improvisational part is actually something that I try to practice with my research group. You can beat a talk to death to get it ready for a conference, but it is actually really hard to practice for the Q & A section. We've tried a lot of exercises to practice at that. Interestingly, I try to avoid actual improve exercises because the point of those is to practice how to bullshit. I don't want my students to bullshit, I want them to make coherent arguments extemporaneously and know when to stop talking. I really love the improvisational component of our job. I am a little bit of a ham. I think many academics are hammy.

BL: Let's switch gears from professor life a bit. You just started a family! How is that going with your academic life?

CL: Well, I already had a family, I just expanded it by one. [laughter] We just had a new baby six months ago. I had the good luck of having a baby exactly between semesters. That kind of thing is a little difficult to plan, but it was really nice. The way leave is structured is that it aligns to semester boundaries. I'm actually not sure how you're supposed to have a baby if you have it in the middle of a semester.

I took maternity leave and at about week seven or eight of being home on leave I was shampooing every rug in the house and teaching myself how to make cassoulet from scratch. My mother, who was also a working mother, she told me "You really need to go back to work." We got lucky because our baby is very easy. We got a part-time nanny and then two and half days a week I would come in to my office and do things to support my grad students, nothing else. I tried to do basically no service and no travel. I really liked working part time. I think it helped me feel better about work and about starting out as a parent better to be coming in part of the time.

BL: Has time management changed at all since you had a kid?

CL: Well, it's summer so it hasn't been too bad at all. Ask me again in October. My exercise routine has definitely taken a hit. There's just not that much time after I get home and before she needs to go to sleep, so I usually just spend time with her instead of, whatever, going for a run. Instead, we might just go for a walk as a family or something.

One thing that has changed, and I've heard other people say this, too, is that I have become a little more efficient. I know that I have to be home at a certain time to relieve the babysitter or it will be a problem. I have to do some fixed set of things before that time. That forces me to be a little bit more efficient. I'm sure that when we have deadlines, I'll wait until she goes to sleep and then I'll break out my laptop to do a little more work.

So far, parenting has been really good and I am enjoying it, maybe even more than I expected to. We're having a really good time. I have a very supportive co-parent, which really helps. I feel very supported, I feel like we're a team. I know in some couples, one person is the "baby person", but in our situation, we're both the baby person, which has really made a big difference for both of us.

BL: Let's talk technical stuff. This year is your first PLDI paper and your work is really on the boundary between PL and Software Engineering (SE).

CL: I think of my work as applied program analysis.

BL: How did you end up working on applied program analysis?

CL: Well, I'm not sure I exactly decided to work on that as much as I ended up working on that. When I was a senior in college, I did an undergraduate thesis on algebraic type isomorphisms, supervised by Greg Morrisett, who was at Harvard at the time. It was a lot of Greek. I dug it up recently and looked at it and it was actually very beautiful. At the point when I did this project, it was my senior year and when I realized that I liked doing research, it was too late for me to apply to grad school. I ended up getting a real job for about 18 months. I was a software engineer at IBM in Cambridge, MA. It was a recently acquired startup, so it had a lot of nice startuppy things about it, but we also had good health insurance. I was effectively working on a compiler. They had accidentally designed a DSL to manage the internal state of this compiler. The team I was working on turned that accidental DSL into a real language.

BL: Working there influenced your research in the future?

CL: That project changed my taste in projects a little bit. I wanted to work on bigger things. We had this test suite that would run over night. It was really big. I wouldn't call it proper continuous integration, but it was close. You would push a change and they would run all the tests again overnight. What I worked on as an undergrad was applied mostly to these baby ML programs. This job taught me that in the real world there are much bigger programs that people care about. When I went to grad school, I was looking at how I could make analysis relevant to programs that were bigger, to improve code quality. When I got to grad school, I wanted to work on something to do with bugs, to automatically make code better. I also knew that scaling up was important.

My advisor, Wes Weimer, was very new to [University of] Virginia. He'd been there about 10 minutes. I got there and he said to me "Hey, do you want to figure out how to fix bugs automatically, instead of just finding them?" There was a lot of grumbling from practicioners that we were hearing about bug finding tools: "Stop giving us more bug reports, we already have too many bug reports. Do something to fix the bugs." That eventually led me to work on automatic program repair.

BL: That's does sound like it is really on the boundary of PL and SE research.

CL: Yes, and one of the things that I love about the interaction of PL and SE is that PL has all of these beautiful theoretical foundations, semantics, everything is proven. My area of SE takes those results and extends or modifies them to make them applicable to real systems. This year at PLDI, the work that's being presented by my student, Rijnard van Tonder is about lightewight program transformations based on what we call "parser-parser combinators". We take the parser combinator idea and we apply it to transform programs in useful ways, very very quickly. It's useful on large-scale programs, across github.

BL: Sounds like really interesting work. What is your impression of the relationship between the PL and SE communities?

CL: It's funny, this is my first PLDI publication, but I think for each of about the last ten years, I've begun a PLDI submission. We have been moving slowly toward PLDI. I've never thought of it as very far from the SE world. In the SE world, the bread and butter is to come up with new analyses and run them at scale across very large code bases on github. There is a real focus on evaluation in the SE world. I think one difference is that in SE, they care about millions of lines of code, but in the PL world, people care more about the formalism. I think both are important, and our emphasis has been to take formal ideas and demonstrate their applicability to real systems.