People of Systems & Architecture: James Mickens

With most systems and architecture conferences taking the online route, we figured it’s a great time to get to know a few people in the systems/architecture research community. People of Systems & Architecture is a series of interviews conducted this year, and continues in the same vein as the People of PL, People of POPL, and the People of Language Design and Implementation interviews done by John Wickerson, Jean Yang, Brandon Lucia, and Minjia Zhang.

In this edition, Akshitha Sriraman meets James Mickens, who is the Gordon McKay Professor of Computer Science at Harvard University.  

James is well-known in the community for his incredible sense of humor and wit. He has a great approach to research, solving real-life problems, and giving unforgettable talks that combine technical insight with humor. Prior to being a Professor at Harvard University, James was the Galactic Viceroy of Research Excellence at Microsoft Research.

A: Tell me about the journey you took to get to where you are.

J: Well, I was born a simple country boy in Georgia. When I was a kid, I always thought technology was super interesting. Initially, I wanted to go build robots (which sounded really cool). But then, I realized that it’s very dangerous physically – when you point a laser at your eye you go blind, the robot can chop you up and stuff like that. So, I thought that this was probably not for me since I have a low risk tolerance. 

Then, I thought that maybe I want to be an architect of buildings. I really like looking at buildings. But, I quickly discovered that having an interest in drawing buildings is different from knowing how to build them successfully. I’d play with physics simulators and stuff like that, and then I’d design all these amazing buildings and when I turned gravity on…instant collapse! Unrecoverable.  

So then, I said “okay, maybe I like Chemistry”. If you take the intro to Chemistry classes, they actually make perfect sense. But then, I took Organic Chemistry and I hit “unsubscribe”. It was all memorization. When I talked to my chemistry friends, they would tell me about how they’re memorizing things like ethyl methyl peptide. But, every once in a while, there’s one called aspirin, um well, for historic reasons.

I was a freshman in college when I took my first computer science course. I had always been interested in computers before then, but I hadn’t really programmed much. I really liked my first CS course. It was challenging and it had aspects of architecture, in terms of how you design programs to have features you want. But, more importantly, there was no danger of having a structurally unsound building collapse on me. So, I gave this a chance and took my second CS class which was on Java. That, um, was experience building. Java was a bit of an acquired taste, but I still found the idea of creating things fun. Being able to connect people across vast distances, send a video to someone, or play a game with someone remote, is super interesting to me. 

As a systems person, I’m naturally inclined to think about performance, correctness, and robustness. But, I find that it is increasingly important to think about issues on fairness, equity, and how the software we build might help/hurt privacy. I’m increasingly excited to work on these topics. 

A: How do you pick your research problems?

J: Well, you know, it helps being a genius. I wake up each day and just know things. [laughs]. Kidding, of course. [James Mickens later claimed that he was not kidding.] 

I come up with research problems in a couple of different ways. First, I think about the frustrations I have had with technology myself. For example, a lot of my work is on web service optimization to make web pages load faster. I still remember the exact moment I became interested in this problem. I was in an airport hotel, which as many of you may know, is the worst type of hotel. I was at a PC meeting and tried to load a web page…it was just the most self-negating experience I’ve had in my entire life. Clearly everyone else at the airport was also trying to load a webpage. So, I just see this webpage sort of slowly fade itself into existence. I think I was trying to load CNN. I see nothing at first, just blankness, which is quite psychologically disturbing because a browser’s intended use case (if you didn’t already know this) is to show content. Next, I see a bunch of unformatted text since even CSS hasn’t arrived yet. So I’m like, “ah, good grief”.  I then just somehow had one of those spiritual experiences, where I knew there was a second version of me. He was like, “James, you’re a computer scientist. You could fix this if you wanted to”. And I respond, “Oh, yes, I could do that”. So I went to the little desk in my hotel room. It was just a misshapen thing, like an Ikea minus minus desk. I picked up those postage stamp size sheets of paper they give you and started sketching out some ideas for how to improve a webpage load time. That actually led to a paper I published about a year afterwards. 

Other times, I get ideas by talking to people. I try talking to people who I think I don’t have anything in common with. Like theoreticians. Just to be clear, I largely don’t have anything in common with theoreticians. When you talk to theory people and say “ hey, what are you up to”? Maybe about 80% of the time, they’re like, “Oh, I’ve been thinking about hyper-dimensional sketching”. I regret asking them then. But, every once in a while, they’re like, “Oh, I was thinking about this issue”, which gets me thinking about how I could use modular prime theory to do whatever it is I’m trying to do.

Other ways I get ideas are by going to conferences, attending talks, and reviewing papers. Reviewing is a great way to force yourself to learn something, because a good reviewer should ramp up on the topic even if they get assigned a paper that’s outside their expertise. When I was at Michigan, I overlapped with Ed Nightingale. We were at a reading group and were talking about some paper and I said, “Oh man, this paper is so difficult to understand.” Ed told me that with any topic, you should be able to find a book that you can read over the weekend and at least have an average insight level about something new. And I was like, “well, it’s cause you’re a genius”. He said “no, it’s a skill that you develop”. That’s a quote that really stuck with me. 

A: What’s your secret to giving such absolutely phenomenal talks?

J: Thanks! Well, the first thing is to figure out 2-3 important things that you want the audience to take away. That’s more important than your slide content. It’s also more important than if you put jokes in there, or anything else. I’ve attended many talks where I remembered nothing in the end; the talk just passed through me like a neutrino. 

One of the greatest pieces of advice I got from my advisor, Brian, was that every sentence in a paper must serve a purpose. If it doesn’t, you must get rid of that sentence. This advice is particularly true for talks. With a paper, a reader still has some time to asynchronously reconsider a poorly-worded sentence. But, you can’t really do that with talks because they constantly move forward. So, it’s incumbent upon the presenter to figure out the things they want to put in somebody’s mind.

This is actually a great power – with a talk, you have 20 minutes to construct a universe of your choice.

Once you know the overall talk narrative, you want to take a top-down approach rather than a bottom-up approach to designing your talk. Think of your talk like a movie you’re directing. You start with the narrative arc for the hero. You say that the hero is first going to experience a great tragedy. Then, they win the lottery. Finally, they find out that it was all in bitcoin, so it’s actually worthless. Once you have the movie narrative determined, you have to figure out the purpose that each slide must serve. 

If you accomplish all of that, you now have an opportunity to add that “special” quality that only you can add to your talk. Think about what that might be. Maybe you’re really good at graphic design, or telling jokes, or sharing personal anecdotes that motivate the work. These things take your talk to the next level, but you never want to start with these razzle-dazzle things too early. Oftentimes, people start with the shiny stuff and forget about the underlying structure that the talk must have.

I personally find it effective to structure scientific talks as a story that involves personal experiences. Doing this really helps to capture audience attention. In my talks, while talking about technical stuff, I introduce a lot of humor that expresses my frustration with the problem. When thinking about how to string the audience along, it is helpful to consider what magicians do. Magicians know that the eye tends to jump ahead and see things in a straight line. So, to prevent your eyes from following along the straight line, magicians take some crazy nonlinear paths that stop the eye from predicting where it needs to look next. Such tricks increase audience engagement because when things are unpredictable, people are bound to be curious about the outcome. A lot of engaging talks have the same unpredictable element in their narrative. I put a lot of work in crazy sequences that tend to jolt the audience awake and make them say, “Oh my goodness, I need to follow what’s happening right now”. I also like to tell stories with ridiculous characters doing ridiculous things, and sometimes I even introduce myself in there. It’s human nature to want to be interested in a narrative about people or things, rather than a dry academic talk.  

At the end of the day, we are computer scientists. We’re lucky to be in this job and to be able to think about crazy new problems. So, don’t be so serious all the time and have fun with what you do.

A: There’s another interview where you talk about how you didn’t want to be in academia because you found it “unnecessarily competitive”. What made you take the plunge and apply for an academic position?

J: That’s a good question. I think a part of the reason was that I felt more confident in my technical skills after having been at Microsoft Research. It’s tricky to figure out the best thing for you to do at each stage of your career. One of the trickiest things coming out of grad school was figuring out whether I was ready for an academic job. You’ll get a lot of advice from people about this. But, the key thing about advice is that it’s partially autobiographical. Most people don’t intend to mislead you or set a trap for you. All they’re saying is, “well, this seems to have worked out pretty reasonably for me, so you should do it too”. 

Coming straight out of grad school, I knew that I liked teaching and working with people, but I wasn’t sure if I was ready for the other set of stressors in an academic job like writing grants or the tenure clock. So, after graduating, I thought that going into industry would be a better fit because I felt that I could mature more without having a ticking tenure clock. 

I certainly don’t intend to discourage people from going into academia. But, I will say that a difference between industry and academia is that work-life balance is better in industry. That said, an academic job is more meaningful to have. You get to work with students, teach them, and give them insights that only you could have given them. I find it very fulfilling to see my students go out and be successful in their own careers. That’s something you cannot get in the industry. You could mentor interns, but it’s certainly not the same. 

The intellectual freedom in academia is also very nice. Even at industry “research labs”, a lot of times, you have to take “suggested directions” that come from above. As an academic at a university, it’s a great feeling to be able to just come to your whiteboard every day, draw a bunch of boxes and arrows, feel pretty good, and tell yourself “I don’t think I’m going to get fired today” (modulo not getting tenure). 

A: How does it feel now that you have tenure? Is life any different than how it was before? 

J: Yeah, it’s much better! It’s funny because people who have tenure would sometimes tell me that not much changes when you get tenure. Uh #False. All you young people out there, that’s absolutely incorrect. Maybe these tenured professors I was talking to just happen to be geniuses who are already living in an eighth dimensional plane. So, getting tenure is not a big deal for them, but I, for one, feel a hundred percent better. With tenure, it’s much easier to be chilled out and not read too much into any particular success or failure. 

When you’re pre-tenure, people are usually very supportive. It’ll never be the case that you submit a paper to a conference and it doesn’t get in, and your colleague Todd’s like, “you should leave. Now. That was your one chance, you’re now off the rail and you’re never gonna get back.” So, of course your colleagues are very supportive and well-intentioned and tell you that people have ups and downs. To me though, that always sounded like, “Oh, so now you’re saying I’m having a down?!”. That was not what I wanted to hear. 

More broadly, I find that if you go into academia, there has to be a part of you that is internally motivated. Whether you go into a university or a research lab, there should be a part of you that just wants to do research. Research isn’t for everyone. There will be peaks and valleys, and moments where you’re the only person in the world who knows a certain fact because you just discovered some insight; that feels amazing. But, there’ll also be moments where you’re the only person who knows you had a terrible idea that you’ve just proven incorrect. And you’re like, “thank God, I didn’t tell anyone else!”. 

Once you get tenure, it’s much easier to have perspective on these peaks and valleys and tell yourself that it’s okay that my papers this year got rejected. It’s probably just dumb luck. Maybe next year, they’ll all be accepted (again due to dumb luck). 

When pre-tenure, it’s much more difficult to be spiritual about these things.

When working with students the first couple of years as an educator, you will want to allow your students to develop at their own pace (which is totally the right thing to do). But then, when you’re in the shower, you’re like “What’s that? What’s that sound?! Oh! It’s my tenure clock. And it’s ticking down!”. So, you end up doing things for your students, like write code or run experiments, which is unfair to them. Once you get tenure, you can afford to be more philosophical. You can tell them “Oh right, why don’t we do another iteration of the experiment just to get it perfect?”. You become more comfortable with taking a longer-term approach.

A: What do you like the most about your job?

J: Working with students is the most fun part of my job. Research is fulfilling and teaching is great, but I think there’s something really special about working closely with people. It’s intrinsically rewarding to be working with a small group of people, particularly students, because you can see them developing and growing to the point that they give you insights as well. 

It’s really fun when you’re working with a student and you kind of have your cranky old person energy. You’re like, [impersonates an old person] “it’s never gonna work [shakes fist]. They tried this in the eighties. We shouldn’t try it again.” But then, a student comes up and tells you [impersonates a young ‘un] “But, what if you look at it this way?”. And you’re like “That’s never gonna….. Ohh!! You might be onto something.” 

A: What do you like the least about your job?

J: Oh, I can tell you that right away. It’s writing grants and being on committees. Now, there’s no deep insight into what I just said, but I did really feel the pain of these things. Early me also had a fear of these things. When I was in grad school and would talk to professors and ask them what’s going on, they’d almost inevitably have an angry scowl on their face and tell me that they just got out of a committee, or they were writing this NSF grant. By the way, these NSF grants have a success rate of like negative 12%. 

Writing grants is like writing an irritating book report where you don’t want to write the book report, the people reading it don’t want to read your report or probably read the book even, but yet, we must all somehow do this. It’s like this weird life cycle from the animal planet documentary. You write these reports, then people meet in DC somewhere and just make these decisions which are then revealed to you.

Oh and yes! If there’s one thing I want readers out there to know, it is that I’m available to be sponsored. If you are a rich aristocrat, or some type of wealthy industrialist, know that I am ready to be sponsored. 

I find that being in committees is also very unfulfilling. In theory, the nice thing and the bad thing about a university is that the professors run everything. The ironic part about this is that professors want to do almost nothing. If you ask a professor about what they wanted to do with their time, they’d probably tell you that they want to do research and teach. But, there are so many things professors need to help decide. For example, if you ask a professor about when classes should start, they’d probably say “I don’t care. They should start at some point and then of course end at some point, because that’s how we mark the progression of time”. But, no, you have to be in a committee to decide that. Initially, you are open to collaborative leadership with your colleagues, and you have these grand theories of human organization. But when you get a real email that tells you that you’ve been put in a committee, you realize that you’re actually an anarchist. I realized that I really believe in decentralized grassroots stuff. This community stuff, it’s just for the birds. So, when people tell me things like “Oh, you didn’t say very much in that meeting. You’re usually pretty talkative”, I’m like [puts on a deadpan face] “I didn’t want to be in that meeting, that’s why I didn’t say anything.” But also, why would I say something that’s just like “Yes, I agree with what Sandra said”?! Sandra said it first, she said it best. 

So yeah, grant writing and committees…it’s for the birds man.

A: What advice do you have for students and junior faculty?

J:  First, the only way to get better at research is to actually do research. This is of course very zen and tautological, and therefore worthless. But, I think this is critically important for students and young professors to know. As a young researcher, you tend to look at all these esteemed figures and think, “man, they just sneeze papers out”. But, one thing you realize only when you’re on the other side is that their papers get rejected just like everyone else’s. They probably have a higher hit rate, but in no way, shape, or form, are they just scribbling something down on a napkin and getting papers out.

How do you get better at something? The answer is practice. If you’re in grad school right now, get into the habit of going to reading groups and job talks. Get yourself to see good and bad examples of the things you eventually want to excel at. 

Engineering is actually a very social field. The academic community, particularly in systems, is not that big. The core set of systems professors who frequently attend conferences are certainly less than 200 people. As a graduate student, these are the people you want to get to know early on, because you are going to be seeing them a lot. These are also the people who might help you with recommendation letters, getting tenure, collaborations, etc, so it really pays to establish a connection with them. It also makes your research experience more wholesome because you start to feel like you’re a part of the larger community. When you have those inevitable low points in your career, you can turn to these people in your community for strength and advice. 

A lot of students tend to think that it’s sheer technical excellence that will take them to the next level. 

While technical excellence is certainly useful, remember that there are a lot of geniuses who don’t have a job of their choice because they didn’t take the time to build social connections.

A: In one of your prior interviews, you talk about how you would like to influence the culture around systems research. How do you plan to do this?

J: I really try to encourage people to think about the larger implications of technology. A lot of my keynotes try to make people actively think about the implications of their research on society at large. I think it’s very easy for systems people to lose sight of the societal implications of their work because they operate at a very low level. For example, as a hardware engineer, it is hard to think about what out-of-order execution has to possibly do with bias in machine learning. But ultimately, everything we do, even the performance hacks, are to make a certain application better.

Technology is increasingly starting to pervade many aspects of human life. As systems researchers, it is important to think about the applications that we improve at the end of the day. Systems researchers often just want to build stuff, because building new things is fun, and they tend to let others worry about the societal implications of their work. This behavior is analogous to debugging. Everyone knows that debugging is not pleasurable. If left to our own devices, we’d probably be sitting in a cave somewhere typing out code for eight hours straight without even seeing if the code compiles, and letting the next person figure all that out.  

Let’s look at finance as an application. There are all kinds of performance tricks that systems designers develop to make high frequency trading operate at a higher frequency. But is this a good idea? Do we even need a higher frequency trading? Name one type of business which could not be funded if we didn’t have high frequency trading.  I do not know the answer to that question. On the contrary, there are many amazing things that were built without high frequency trading — like the pyramids, the Empire State Building, and the Hoover Dam.

I think it is important to ask yourself time and again why you would want to work on a certain problem. How does it help society? Current research needs to start actively thinking about these questions. That’s the kind of cultural research change that I want to bring about. 

A: My next question is a little blunt. What is it like being a black person in the academic systems community?

J: In general, I find the community to be pretty supportive. For example, USENIX is very devoted to trying to have a diverse set of PC chairs and members. People are also more aware of social justice issues these days. For example, people know that they can’t just go around wearing a T-shirt that says “I hate black people”. 

That said, I find that biases are more subtle these days. For example, when you look at  the job applicant pool and then see who gets hired or gets called for an interview, that’s when you’ll start to notice some discrepancies. Even in these pandemic times, you’ll see that it’s oftentimes the women researchers whose careers get affected the most. For example, women often end up with the burden of child care. There are several studies that show how female authorship has declined during the pandemic. 

I also think that there is a real need for professors to tailor their mentoring when advising students from underrepresented groups. I participate in several initiatives that seek to improve diversity in terms of ethnicity and gender. One of the biggest things I often hear is that students from underrepresented groups are often implicitly/explicitly discouraged from pursuing a career in CS, particularly “hardcore” aspects of CS, like systems. There’s still a lot of work that needs to be done to improve this mentoring pipeline to enable underrepresented students to pick a CS major, go to grad school, etc. 

A: What are some concrete steps that the systems community can take to be more welcoming of diversity?

Mentoring is the first important thing. Several young undergrads, particularly from traditionally underrepresented groups, might not even have CS on their radar. They probably didn’t have role models in CS to look up to as well. As a professor, it is important to not assume that a student is not interested in CS/systems just because they didn’t happen to mention it; there are implicit societal factors that might be preventing them from even considering this as a career option.

It is also really important to have diversity in teaching staff and teaching assistants. A lot of students are really looking for someone like them who is succeeding in the area that they might also want to succeed in.

People should really try to become aware of their implicit bias. There are several good online tests that can help point out your implicit bias. Everyone has some sort of implicit bias. It’s not just white men. As a black guy, when I took the test, I thought “good grief!” I had no idea that I felt a certain way towards certain kinds of people. I realized that I really had to improve in terms of several metrics.

If you go to a random person at a conference and say, “Hey, do you hate black people?” Of course, no one is going to reply with a “yes” to that question (with a very high probability). But, that’s not enough. People need to start thinking more explicitly about an implicit bias that they might have. For example, people need to explicitly think about questions like: who are the faculty candidates we hired? Who are the teaching assistants we hired? Whom did we invite for colloquiums and as keynote speakers? It is not enough to just say that I contribute to the ACLU (or <insert favorite group>). People need to explicitly remind themselves about diversity and actively work to improve it.

I also feel like a very important part of my mentorship is to self-calibrate the confidence of men downwards. Let’s say I have two students in a class with the same numerical grade. I go talk to one of them, Susie, who’s a woman, and ask her how things are going. Susie, who has a 93 out of 100, is just despondent. She talks about not just leaving computer science, but tries to excuse herself from modern society and talks about going to a monastery and shaving her hair off her head. Then, when I go talk to Todd, the male student, Todd might say things like “well, first of all, it’s going really awesome. Second, I look forward to an active conversation where you tell me about how you stole some points from me that I should have had in the first place”.

Another great example is the difference in recommendation letters written for female vs. male candidates or black vs. white candidates. For underrepresented groups, letter writers might needlessly emphasize social aspects like having a “pleasant personality. However, when writing for a white man, letters often talk about how this person could build up the Eiffel tower with their own bare hands and raw technical charisma which is just off the charts. So, if you are a letter writer who is more aware of these biases, you can explicitly make sure that your evaluation of a candidate does not include such biases.

A: Moving on to my most favorite question, what do you think you would do for a living if you weren’t in CS? I know you are the sole member of two heavy metal bands. Do you think you might have been a professional musician?

J: Being a full-time heavy metal guitarist…hmmm. The problem is that I’m cursed with both a vivid imagination and a deep desire to have healthcare and a roof over my head. So, oftentimes, there’s a tension between those things. If money was of no consequence and I had a wealthy benefactor, I’d probably be in a band or would direct movies. If money was important, I think I might’ve gone back to architecture school. Well, to clarify, I can’t have gone back to architecture school given that I wasn’t there in the first place, making this sentence a future subjunctive hypothetical sense. But, I still like to look at buildings, although there’s strong evidence that I wouldn’t really be good at building them. So yes, an architect with a poor understanding of mechanics.

A: What is a movie you really liked, but would have directed differently?

J: That’s a good question! I know a lot of movies I didn’t like that I would have directed better. Oh, yes! My answer is Godfather 2. Afaik Godfather 1 was a perfect film. That’s why this movie is aired on AMC like 75% of all days, and during all holidays as well. I watch it every single time; I know, it’s a problem. Godfather 2 is also good, but I have an intricate set of edits in mind that most people might not have discerned. For example, people who actually know the science and art of filmmaking would understand things like cutting a call 500 milliseconds early would allow more dramatic tension to be built up.

A: Those were all my questions. Thanks very much, James!

J: Nice talking to you!

Bio: Akshitha Sriraman is a PhD candidate in Computer Science and Engineering at the University of Michigan. Her main interests are in software systems and computer architecture. Specifically, she works on improving the performance, cost, and energy efficiency of large-scale data centers through hardware-software co-design.
She hopes to enter academia after her PhD program, and will be on the academic job market (for tenure-track faculty positions) this upcoming cycle.

Disclaimer: This post was written by Akshitha Sriraman for the SIGOPS blog. Any views or opinions represented in this blog are personal, belong solely to the blog author and the person interviewed; they do not represent those of ACM SIGOPS, or their parent organization, ACM.

Leave a Comment