On Being a Student Again
I head back to classes again this week as part of my Ph.D. at Berkeley and, before I do, I wanted to take a moment to reflect on and share my experience returning to school after 5 and a half years. While in industry, I didn’t make time for a regular reflection practice — I always figured my annual reviews were supposed to help me do that. Looking back, I see that a workplace annual review is not especially well-suited to meaningful self-reflection. Your focus is on considering the value you bring to the company you’re working for, not evaluating whether or not the work is still meaningful to you. You reflect on your year in highlights, but you don’t, as Mike Bostock advises, think critically about if you’re still enjoying the day-to-day.
To that end, here are (a handful of) my reflections on the first semester of my Ph.D., and what it’s meant to me to be a student again.
What I expected going into my Ph.D.
If you’ve read some of my past writing on renature
and my open source fellowship at Formidable, you’ll know that I hold a tremendous amount of reverence for open source software. Being involved in open source has fundamentally altered my life’s trajectory. It’s given me the opportunity to speak at conferences, to work closely with people I admire, and to find mentors and friends that have influenced me beyond just the code I write. Open source has also given me an avenue to contribute to the act of open knowledge-making, to share ideas transparently in an age when they feel increasingly locked behind paywalls or tangled up in gated institutions. Beyond its exceedingly tenuous financing model, there is so much about open source that speaks to my personal ethos.
Part of the reason I decided to start a Ph.D. was that my full-time work in industry didn’t afford me enough time to be involved in open source in the way I wanted to. My contributions happened mostly during the evenings and on weekends, taking precious time away from being with my friends and partner. I imagined that a Ph.D. would allow me to reorient this imbalance. Similarly, my time in industry was dominated by thinking about how to best serve the clients I was working for. When my own interests, be they technical or personal, didn’t align with those of a client it forced me to forego pursuing them altogether. I again envisioned a Ph.D. being a panacea to these ails, allowing me to explore deeply those questions that I’d always abandoned in order to meet a client deadline.
Beyond this core motivation, I also held a preconception that the timing was right. Five years away from school, I thought, had given me perspective and experience that would positively reshape my relationship to formal education. I imagined I would adjust naturally to the independence of graduate school and to conducting my own research. I had no shortage of ideas for things I wanted to work on. Most of my journey with software engineering had been self-directed to that point, and I had learned to embrace my inner autodidact. If anything, grad school seemed like an opportunity to center the type of lifestyle I’d been pushing to the periphery for so long.
Relearning and re-unlearning my student identity
Here’s the thing I didn’t fully foresee about going back to school after time away — you kind of forget how to be a student. You’re out of practice when it comes to reading papers effectively. You haven’t had to do the same kind of writing that you do in an academic setting. You haven’t been involved in the same types of conversation with quite the same sharpness and detail. In short, you’re (more than) a bit rusty. While I’d expected there to be some challenge to getting back into a classroom setting, I wasn’t fully cognizant of the degree to which I’d struggle to regain my sense of self as a student.
It didn’t help that I was switching disciplines as well. My formal background is in Geography and Arabic and I’m now starting down a 5- to 7-year journey towards a Computer Science Ph.D., focusing on programming languages (PL) and human-computer interaction (HCI). Many of my peers and some of the faculty in my department didn’t seem quite sure how to place me at first — something with maps, UI, data viz, maybe? And of course that’s natural; geographers love to talk ad nauseam about how misunderstood our discipline is (🤫 I think every discipline loves to do this). But Berkeley is a welcoming, interdisciplinary place, and I’ve found that with a bit of explaining folks are exceedingly curious and excited to better understand my kaleidoscope of a background.
The harder part for me was having a large disciplinary knowledge void, which led to an uncomfortable dislocation for some time. Those first weeks of classes were filled with peers name dropping certain researchers, referencing famous papers, and laughing at a particularly memorable joke concerning the uncanny resemblance between a young Edsger Dijkstra and PL researcher Adam Chlipala. All of these went over my head. My friends in PLAIT Lab were very generous to provide context on these references as they arose, but it’s hard to shake that early feeling that you’re out of the loop. That you’re missing essential pieces of your discipline’s background that everyone else has. That your imposter status is already easily detectable and on full display.
This feeling was exacerbated by how generally inscrutable the course material was to me in those first few weeks. Tackling concepts like operational semantics, symbolic execution, inductive proofs, and abstract interpretation, I left most classes with a pit in my stomach knowing that I’d only (generously) understood about 25% of what had just happened. I came home early most afternoons and napped for several hours to recover some energy. I sent my advisor an anxious email my third week saying I thought I should drop down to some undergraduate courses to help backfill some of my foundational CS knowledge gaps. Looking back now, it’s easy to see what I was doing those first weeks. I was panicking.
On the surface, I thought my panic was the result of a lacking background that made courses especially difficult. My last math class had been AP Calculus in 2011 (yes, a full decade had gone by since I’d done any math in school). Now I was being asked to apply all of the set theory I hadn't learned in that discrete math course I’d never taken in undergrad. The phrase, “As you’ll remember from your undergrad compilers class” cast a spotlight on me each time I heard it, laying plain that I did not, in fact, remember anything about compilers because I’d never formally studied them. But upon thinking about my panic further, I realized that the source of it was deeper than just feeling out of place with course material. I’d learned a myriad of new programming languages, libraries, and techniques to do my job over the last 5 years, and I felt I’d been good at it. Why, this time, was I struggling to swim when thrown into the deep end?
I soon realized that my relationship to being a student hadn’t evolved much at all in those 5 and a half years since leaving school. I hadn’t fully unlearned my fixation on quantified academic success. I hadn’t let go of the idea that I could learn almost anything quickly. In fact, the abundance of software engineering resources online had given me a false sense in industry that the key to understanding nearly any complex topic was hidden just behind the right Google search. Most vitally, I was ignoring an essential piece of advice that my education professor at Middlebury, Jonathan Miller-Lane, had given to me: “Don’t let your schooling get in the way of your education.” In taking time away from school, I assumed that the experience and perspective I’d gained would’ve magically rectified the more troublesome habits I had developed as a student earlier in life. But it became plain quite quickly that, in order to have a good time in graduate school, I had to actively reshape my relationship to being a student. I had to center what I wanted out of my education rather than what my schooling expected of me. I had to relearn to be a student, and I had to re-unlearn all of the elements of being a student that no longer served me.
The switch
Realizing I needed to actively reconstitute my identity as a student didn’t come to me as a single, discrete epiphany. Rather, it was the product of many conversations I had with my advisor and peers over the course of the semester. I’m exceedingly lucky to be advised by Professor Sarah Chasins. Sarah has a unique way of quietly but firmly instilling confidence in her students. Two key ways in which she does this are:
- Letting students guide weekly research 1:1s
- Leading with trust, empathy, and transparency in discussions with her students
This second point might sound a bit vague, so let me give a concrete example. I was feeling frustrated early in the semester by how difficult I was finding course material on denotational and axiomatic semantics. Because I had never encountered either before, and because courses tend to work with these concepts in the context of a simplified programming language, I felt little motivation (beyond my looming prelim exam) to really grok these concepts. Their difficulty, combined with my inability to see their usefulness, just bred annoyance and, if I’m being honest, even some mild contempt at the concepts themselves. I was about to blow a gasket the next time I read the sentence, “The rest of the proof is trivial.” Trivial for whom?
I think Sarah detected this escalated frustration when I asked for her help in understanding the reasoning behind the heavy focus in classes on formal semantics. She pointed me to a language I love and know well, JavaScript, and the glaring lack of formal semantics in its design. Every time I had dealt with a cross-browser quirk in the past — the result of a gap in the language semantics that had led to divergent browser implementations. Every time I had debugged an error that only showed up in production builds but not in development — oops, JavaScript build tools aren’t especially good at ensuring deterministic evaluation across all of the different module setups the language has (if you’re curious, check out this issue I came across recently). She also explained that many of the qualities that are pushing developers to fall in love with languages like Rust come out of advances in formal semantics and type systems that have evolved much earlier in the PL community. You may not know it, but people have been writing about ownership-based type systems since the early 2000s!
As part of this conversation, Sarah also reassured me that these concepts are not things I should expect to understand immediately the first time I see them. Repetition and consistent exposure would be key. It would take more than a few classes and skimming a chapter of Winskel’s The Formal Semantics of Programming Languages to feel confident with this material. And what did I realistically expect — that every part of graduate school would come easily to me? It sounds ridiculous reflecting on it now, but in that moment my panic was convincing me that I was understanding less than I actually was. I was being my own worst enemy, and Sarah’s patience and confidence in me helped me to recognize that before it spread too far.
Likewise, I owe much of my turnaround this semester to my friends in PLAIT Lab, especially Justin Lubin, Gabriel Matute, Hellina Hailu Nigatu, Logan Caraco, Slim Lim, Eric Rawn, and Lisa Rennels. Each of them spent patient hours helping me understand something from class, guiding me to a book or a paper or a podcast that would clear up an idea, or even just opening up about their own experiences and struggles over lunch. I’ve learned quickly that success in grad school is at least partly about surrounding yourself with a community that brings a lot of different expertise and experiences to the table. More than that, surrounding yourself with friends makes it easier to come back to things after a particularly hard day. Not all days in grad school end on a high note. As my patient, supportive, and infinitely wiser partner Bess can attest, some of them end in tears. But knowing you have a community to support you makes the day-to-day much more enjoyable.
On being a student again, again
I don’t mean to make my first semester of grad school seem like an overly wrought tale of struggle and triumph. There were plenty of other struggles and plenty of other triumphs and, all things told, I came away feeling quite proud of what I accomplished this first semester. I ran 14 sessions for an observational need-finding study I’m working on (more on this soon hopefully). I dove deep into the world of contextual inquiry and thematic analysis to work with all of the rich qualitative data that came out of those interviews. Along with my colleague Logan Caraco I wrote a new library for automatically reverse engineering data visualizations from the DOM. And I developed great new relationships with older grad students in the Programming Systems group (many of whom seem to be my age or younger, but we won’t focus on that too much 😅).
Most significantly, I think I rediscovered who I am and who I want to be as a student and as a researcher moving forward. A key part of this is spending less of my energy comparing my motivations, my work, and my achievements to others. I used to make so many of my decisions as an undergraduate by inferring what others wanted and expected of me. I spent so much time this semester just trying to relearn how to unlearn that. And now I want to refocus all of that back on to what matters to me — making usable, delightful, and impactful programming tools for journalists, social scientists, and climate scientists. If I’m making even a little progress on that each day, I’ll be happy. And hell, there will be days when I don’t make any progress. But as I’ve figured out, that’s part of the fun and joy of grad school. It’s a gift to be given so much freedom and have so little asked of me in return. I fully intend to make the most of it.