JetBrains recently announced that they are sunsetting Code With Me, their IDE feature for remote collaborative coding. They explain this decision with declining demand after the pandemic, stating that teams have found "different collaboration workflows".
As someone who has experienced the value of pair and ensemble programming, both sitting at the same computer and remotely, I find it sad to see that this kind of working is apparently in decline, or even at risk of dying out, if a product specifically developed for supporting this way of collaboration remotely is no longer economically viable.
Pair programming, and even more so ensemble programming, can be draining, yes, so I totally understand that not everyone likes this way of working. But in my experience, the shared mental model you build up over time by regularly working on a code base in a pair or ensemble is absolutely priceless. I have never experienced this level of alignment within a team with any other method of collaboration. It's hands down one of the best methods of building a shared theory of the program in a team, as described by Naur's classic paper "Programming as Theory Building". Such a shared understanding cannot be built through documentation, which, according to Naur, and confirmed by my experience, is always lossy. It cannot be built through code reviews either, but only through interaction, working together on the same task in the same code base.
I very much suspect that the declining popularity of Code With Me has a lot to do with the rising popularity of AI assisted coding and agentic software development. As I mentioned in my previous blog post, I have long tried to ignore this rising tide completely. Meanwhile, I have been using JetBrains Junie for a year or so. And I noticed repeatedly that the fact that everyone in my team has adopted an AI-assisted way of working in some way or another has reduced the amount of time we work together. I often use AI as a rubber duck and thinking aid, and it works. As a consequence, the threshold for reaching out to a colleague when struggling with a problem or having a question has quietly risen. This is not a conscious decision. It just no longer feels necessary a lot of times to ask a co-worker if your AI assistant can help you as well. We all know how difficult it is to get productive again after an interruption, there are whole studies that have examined and quantified this problem. So having fewer of those interruptions has some merit.
And no, this doesn't mean that we don't collaborate any more at all. However, a lot of the collaboration has become asynchronous and artefact-based, discussing merge requests or architecture decision records. It's a rare occasion that we come together synchronously for exploratory thinking, for example for technical refinements.
For theory building in the Naur sense, this is not great. AI doesn't accumulate understanding of the system across sessions, and if I use AI as a thinking partner, that thinking does not propagate to the team. We're as far away from the mind-meld experience of ensemble programming as you can get. While we probably get better at producing and reviewing artefacts, we become worse at building a shared understanding of the system. I also imagine that onboarding new team members will be more difficult because if you hardly ever work together on a problem, there are very few chances for transfer of tacit knowledge. Somehow, an AI-assisted team seems to have a tendency towards creating silos of knowledge.
As a team you have to find a good balance between individual efficiency (in this case, by reducing interruptions) and long-term productivity of the team (through collaborative problem solving, leading to a shared mental model of the system in the whole team). The question is whether you are aware of this shift, and whether you take a conscious decision of accepting the trade-offs or whether you take active measures against it.