PG Podcast - Episode 14 - Carrie Cai on pivoting into computer science after college
October 2016 (perspective of an assistant professor)
Carrie Cai (@carryveggies) is currently a Ph.D. student in computer science at MIT CSAIL. She works on human-computer interaction research. I've known her since we worked together on the Wait-Learning CHI paper when I was a postdoc in her lab.
In this PG Podcast (which we held as a one-hour live Google Docs text-based interview similar to what I did with Eugene and Keith), we talk about how Carrie pivoted into computer science after graduating from college in a completely different field. I remember when we first met back in 2013, we spent over an hour in front of the lab whiteboard charting out the fascinating journey that brought her to MIT. Ever since then, I've wanted her to dive into those details in an online interview. Well, the wait is over!
Update on 2017-08-27: for your listening convenience, here is me reading out the transcript of our interview:
Philip Guo (PG): HI CARRIE! What are you super passionate to talk about?!?
Carrie Cai (CC): Recently I’ve been getting a number of questions about what it’s like to transition from the humanities and social sciences to computer science, so let’s talk about that.
PG: Cool. What was your undergrad background in?
CC: I did my undergrad in Human Biology (“Humbio”) at Stanford, an interdisciplinary major with a mix of biology, psychology, sociology, linguistics, health policy, etc.
PG: During undergrad, did you consider computer science or engineering at any point?
CC: At the time I had a misguided impression of what it meant to do computer science -- I thought I had to enjoy tinkering with computers, so I didn’t consider it. Halfway through freshman year, my freshman advisor also said that if I didn’t already know I wanted to major in engineering, it was probably too late to catch up on coursework. In retrospect I think he was wrong.
PG: What did most people in your major do post-graduation?
CC: About half the students were pre-med, so they went to med school. The other half went into all sorts of fields, anywhere from health and public policy to psychology research, graduate school, etc. I ended up doing a 1-year masters (called a “coterm” at Stanford) in education, where I learned about designing educational technology and did team projects with students from other majors like mechanical engineering and computer science. That was when I became interested in human-computer interaction and user interface design.
PG: So you’re currently a Ph.D. student in computer science at MIT, which is a path that I’m sure very few (if any!) people from your undergrad+masters background went down. How did you get the necessary motivation and skills to pursue this path? How did you even know where to start looking, given that you were on a very different trajectory in undergrad?
CC: Honestly, it was not easy. I was working a 9-to-5 job, so there weren’t a whole lot of opportunities to get the necessary skills.
PG: In your mind back then, what did you think were the necessary skills you had to learn? I would personally find it super hard to transition to an entirely new career path. I wouldn’t even know what I needed to know or learn in the first place!
CC: Well, I knew I enjoyed the UX design aspects of educational technology, but was missing the engineering skills to build anything. I had taken exactly one engineering class at Stanford, so I contacted that professor to ask what pre-requisite coursework I would need in order to apply to graduate programs.
PG: Graduate programs in what field? You already did a masters in education, right?
CC: In either Computer Science (CS) or Mechanical Engineering (ME), since both tend to have design components. The professor connected me with one of her colleagues who directed the engineering program at a community college nearby -- the College of San Mateo. From there I enrolled in 3 courses (Engineering Design, Intro to Java, and Physics) to maximize my chances of 1) figuring out whether I was more interested in CS or ME, and 2) getting the proper prerequisites to apply to grad school.
PG: Nice! Quick question: How did you approach that one Stanford professor, who was your only and vital link to propel you to the next step in this journey?
CC: I think it was pretty unusual for a Humbio major to take her engineering course, so highlighting what made me different helped jog her memory. While at Stanford, I had also briefly helped her with curriculum development after taking the class. In my email, I made sure to remind her of that.
PG: Were you taking the community college classes while working full time? If so, how did you balance your time? What was your intended “endgame” for this community college pursuit?
CC: I did take a few evening courses while working full time, and had to be diligent about my work schedule so that I could get to class during rush hour. Eventually I knew I would have to do classes full-time because many of the best engineering courses were scheduled in the middle of the day. I gave myself one semester to decide between ME and CS, but didn’t have a clear plan yet of what to do next.
PG: That’s a big decision to take classes full-time, but the one-semester time constraint probably helped stave off decision paralysis. OK, so you’re now full-time taking classes ... what was your most prominent memory of your community college days?
CC: I remembered spending an entire afternoon in the computer cluster, writing code to produce the fibonacci sequence and creating my own variants on the homework problems. They were like fun puzzles to me. I think that was the key moment when I knew I wanted to keep doing computer science.
PG: Wow, fibonacci sequence is more motivating than I thought :) Was that your first exposure to computer programming?
CC: Pretty much -- I didn’t take any CS courses in undergrad (again, because I mistakenly thought they were only for people who liked taking apart computers). The fun part wasn’t the fibonacci sequence or the math, it was getting a “for loop” to do so many different things!
PG: OK now that you were hooked on programming, what next step did you try to take? Fibonacci sequence is still a long way from pursuing a Ph.D. in computer science at MIT.
CC: At this point I started looking for post-baccalaureate programs, since my med school friends mentioned these things exist for people who needed to take extra coursework before applying to med school.
PG: What’s a post-baccalaureate program? OMG so many different programs!
CC: It allows people who’ve completed a bachelors but didn’t have the proper grad school pre-reqs to take courses before applying to grad school. They exist for pre-meds, but I couldn’t find any for computer science!
PG: Oh noes! Then what did you do?
CC: Well, I had to invent my own post-baccalaureate program. I found something called Concurrent Enrollment at UC Berkeley, part of UC Extension, that allows outsiders to take normal Berkeley classes with Berkeley students. Only a narrow set of basic classes were allowed to be taken, and only with professor approval, and only if the class was not already full (which was very often the case).
PG: How did you get into the exact classes you wanted, given such high demand from Berkeley students? And like in community college, did you have a targeted goal and limited timeline? Because otherwise you can take classes indefinitely forever.
CC: At this point it was spring 2010, and my hope was to apply to grad programs in fall 2010 or fall 2011, so I aimed to take the 3-course introductory sequence in CS (61A, B, and C). I decided to be a bit daring and asked the CS 61A summer instructor if I could meet him in person at a class he was teaching. This way he didn’t need to make extra time for me, and I could see what the students and class environment would be like. As for over-enrollment, the regular students would usually drop the class within the first week if they couldn’t get in because they were juggling multiple classes, whereas I could wait it out much longer, so that was how I got into the classes. Summer classes also tend to be easier to get into because they’re smaller.
PG: How did you think that those classes would help you in your eventual goal of pursuing a research-based Ph.D. degree? They’re certainly a good prerequisite for building up your knowledge. But that's not really indicative of what Ph.D. students do.
CC: Well, I’d only been doing CS for a few months at this point, so I was wary about jumping into anything too soon, PhD or otherwise. I just stayed focused on getting the proper CS fundamentals, and seeing if I would continue to enjoy it. I remember riding BART (the subway) to class every day and once rode past my stop because I was so engrossed in doing a recursive programming problem for CS 61A. It was really fun, like playing a game -- very different from what I had imagined CS to be, and it certainly did not involve taking apart computers!
It was actually critical that I took CS 61A in the summer and not fall. In the summer, the class was substantially smaller, so I could more easily find peers to do team projects with -- they became my support network throughout my time at Berkeley, and I still keep in touch with them now. The small class size also meant I got to know all the teaching staff, who knew about my situation and connected me to professors with research projects.
PG: How did you go about choosing which research projects to work on?
CC: Because I had limited programming skills, I thought I’d have a better chance being integrated into a project if I could offer something valuable, in exchange for CS research experience. So I joined projects related to education, where I could tap into my prior experiences and skills.
PG: Timing seems critical throughout this story. How long were you at UC Berkeley before deciding to apply to Ph.D. programs? And why did you apply in the first place?
CC: I had only been there for the summer and part of the fall when I applied, so the only CS classes on my transcript were that community college Java class and the Berkeley CS 61A class. I had been doing research on 2 CS projects for about 3 months each (in parallel). I considered applying a year later instead, but I figured I could apply this year and still describe the classes I was currently taking and my plans for future-semester CS classes. It was a toss-up whether to apply that fall or the next fall, so I just decided to give it a shot.
The professors I worked with noted that I was potentially better suited to PhD programs than Masters programs given my interest in research and unusual background. PhD programs are more amenable to that because they value interdisciplinary thinking and tend to be long enough to allow for catch-up.
PG: So when you applied, what did you think your chances were?
CC: I felt there was no way I could be more prepared on the CS side than other applicants applying with CS undergraduate degrees. So in my applications I made it a point to emphasize my unusual background, and my experience in the behavioral sciences that made me uniquely positioned to do the research that I wanted to do.
PG: In retrospect, what parts of your application do you think stood out enough to get you into a top-ranked Ph.D. program in computer science at MIT? What would you point to as making you stand out the most amidst a highly-competitive applicant pool?
CC: First, the personal statement: My undergrad research was in childhood language learning. So my personal statement started with an anecdote about why I was passionate about language education, and stated loud and clear that my background was in the behavioral sciences (not CS), but that I wanted the CS and research skills to design novel technologies for education.
Second, I had kept in touch with my undergraduate research advisor and updated her on my career shift. She ended up writing one of my letters of recommendation. I think this was pretty important because, even though I hadn’t done much CS research, I had done about a year of psychology research, which she could speak to in the letter. PhD programs want to know you have potential to do novel research. Research in a different field is still research, and can even mean that you bring in a new perspective.
Lastly, because my transcript had very little CS / engineering coursework, I created a separate section of my CV that listed all the math, CS, or engineering courses I had taken so that they wouldn’t be overlooked, as well as a plan for which courses I was planning to take in the upcoming semester.
PG: How did you feel when you got into MIT and decided to go? It’s a huge change from what your undergrad+masters career trajectory was just a few years earlier.
CC: It was both thrilling and daunting. MIT said at the time of admission that I would be given an extra semester or two to catch up on undergraduate CS coursework, before taking the graduate courses and qualifying exams -- that was a relief to hear. I think it was wise to negotiate this early on, at the point of admission, before starting the program.
PG: Interesting. How long was this entire process from the start of your desire to do something different with your career to getting into the MIT Ph.D. program?
CC: It was about 1.5 years, and was only possible through connecting with people I already knew from Stanford, finding new friends and allies who were well connected at Berkeley, and relying on my raw senses to keep doing what I felt was most exciting at the time.
PG: Wow! I feel like that's the most impressive aspect of your story: connecting with the right people at the right times in the right ways. To wrap up ... how do you think you developed these keen intuitions to make those wise decisions and to reach out to those key people at just the right times? To me, that is the critical lesson that others can learn from you.
CC: It was all part of my experience growing up. I was the first in my family to attend college, so didn’t have immediate mentors. Growing up I saw how my mom found timely resources through friends and friends of friends -- from putting me in classes with better teachers, to applying for me to switch schools. Also, people tend to have a good heart but just not enough time. So tell them implicitly why they should care about you, and then make it super easy for them to help you: when asking for help, tell them who referred you to them, what you have in common, and, if it’s a project, explain why you would bring value to their project (not just what you need from them). Finally, update them afterward with what happened. You’re actually in a good position because it’s hard to forget someone with such an odd career-transition story. Your network is larger than you think! You just have to put yourself out there and ask.
PG: Yay! OK let’s wrap up here ... any parting thoughts or fortune cookie advice?
CC: Don’t let anybody tell you it’s too late to switch fields, or tell you that you’re not “technical.”
PG: Ah, one last question, maybe an encore/epilogue ... I noticed we were both very careful not to use the words “technical” and “non-technical” throughout this interview. Any final thoughts about what you’d like to see in the future with regard to this set of terminology, coming from someone who has experienced very different academic fields firsthand?
CC: First, dividing the world into “technical” and “non-technical” is dangerous because real-world, messy problems require both. Even at MIT, which is known for its “technical” rigor, I’ve been more successful on projects where I could borrow concepts from the humanities and social sciences. We really ought to come up with a better synonym for “non-technical” -- one that doesn’t sound like it’s missing or lacking something.
Second, this binary classification raises the barrier to entry to computer science for people who don’t see themselves as “hackers” or computer lovers. If I’m a biologist who codes to analyze genetic data, or if I code casually to make a personal website, does that make me technical, or non-technical? With the recent rise of online programming courses, I hope that we won’t just teach people how to code for the sake of coding, but inspire them to use coding as a tool for solving problems in their own respective fields. Instead of “computer science + X”, it should be “X + computer science”!