Community of Practice / Community of Theory
Will Crichton, 8/3/2023
Several years ago, an incoming Ph.D. student asked me for advice about how to do good research in PL/HCI (programming languages and human-computer interaction). The advice I gave them at the time was:
With a few years of hindsight, I would now amend this advice to say:
In short, a community of practice is a group of people who share a central activity or technology that they learn and work with together. My main community of practice is "people who use Rust." I have a colleague in the community of practice of "people who knit." One of my former advisors is in the community of practice of "people who design self-driving cars."
A community of practice is valuable because it helps you find important problems. You get to understand the day-to-day challenges of engaging in the practice. The people in the community can give you feedback on your ideas from the perspective of real-world use, as opposed to hypotheticals. When you succeed in doing good research, these people can immediately benefit from your work.
A community of theory, a term I made up, is a group of people who share a common goal of advancing the boundaries of a conceptual framework. My main community of theory is "people who want to figure out design methods for making programming tools more usable." My knitting colleague is in the community of theory of "people who want to find correspondences between mathematical abstractions and real-world design problems." My self-driving advisor is in the community of theory of "people who want to understand the principles of efficiently bootstrapping a machine learning model."
A community of theory is valuable because it helps you orient your thinking towards big ideas rather than solely the needs of the present. Communities of theory emphasize putting ideas in context of prior work, which helps avoid redundancy and find unexpected connections. And, of course, you have to publish papers to get through academia — it helps if your peer reviewers are excited about your work.
Generally, communities of practice exist in industry and hobbyist circles. Generally, communities of theory exist in academia. Many great researchers that I have seen have both a community of practice and a community of theory, and critically: these communities are harmonious. Work in one community is valued and respected within the other community. Conversely, I have seen Ph.D. students bomb out of their program because they either (a) lacked one of these communities, or (b) could not find harmony between them. Here are a few supporting anecdotes:
-
I started off my Ph.D. with no community of practice and a loose community of theory (systems researchers). I built very interesting systems, but struggled to find a community of practice who might adopt the systems or their ideas. I also struggled to get the systems community to care about the same aspects that I did, namely human factors.
In my fourth year of the Ph.D., I pivoted hard. I shifted my community of practice towards Rust, where I knew people that valued my ideas. I shifted my community of theory towards programming languages, where people were far more receptive to human factors research. I am so much happier now than I was then, having found people on both sides who value the same work. As a corollary: a Ph.D. is a great time to figure out your respective communities!
-
I saw a Ph.D. student who did really cool work in a PL community of practice, even having significant members of the community as co-authors on their papers. But they never succeeded in convincing their community of theory (PL researchers) that their work was "interesting" enough for publication. This student left their Ph.D. program as a result.
-
I've seen many Ph.D. students around PL/HCI who do really great research that can get published in HCI, SE, and sometimes PL conferences. Their community of theory values their contributions. But lacking a community of practice, these tools rarely find real-world adoption, and thus have limited impact. Down the line, this causes burnout (e.g., "the only people who read my papers are the peer reviewers"), and this makes it harder to find an academic job.
The practice / theory distinction is extremely common in research. The purpose of this note is to draw attention to the social aspects of this dichotomy. During my Ph.D., at no point did anyone encourage me to stop and think: what exactly is my community of practice? My community of theory? And are they in harmony? Prospective researchers should think hard about these questions. If the answers aren't satisfactory, then now is the time to improve them.
Two additional thoughts. It's less useful to think of a research sub-area like "programming languages", "computer vision", "complexity theory", etc. as your community of theory. A better rule of thumb would be "the set of people who review your papers", or "the set of people whose papers appear in the same sessions at a conference or the same workshop," or "the set of people who will advocate for you in the faculty hiring committee."
A community of theory is clearly a necessary condition for success in academia. Publish or perish. The role of a community of practice depends on where your research falls on the spectrum from basic to applied. For researchers in, say, abstract mathematics, theory is not really distinct from practice, so those communities are the same. But then again, I personally have no idea how those researchers pick problems and have any confidence that their problems are worth solving. All good researchers have a keen sense of interesting problems, and I rely on my communities of practice to hone that sense. If you intentionally avoid a community of practice, it may be worth reflecting on what instead guides your problem selection.