A colleague and I have been trying out JetBrains ‘Code With Me’ – a very nice new pair programming plugin for IntelliJ / CLion / etc. It works very well as an adjunct to other pairing solutions like tuple and zoom.
tl:dr; use Code With Me alongside Tuple to get a very slick and flexible coding experience
It allows one user – the host – to share their IntelliJ or CLion session with other programmers. When the partner connects, it downloads an intellij-based client application — not your own local copy of IntelliJ but a new app with the same IDE engine and much of the same tooling.
So then, both of you can code together. You can either use a ‘follow mode’ where you’re both editing the same file and share a cursor, or you can code independently and each edit different files. So, either you’re doing tight pair programming, or one of you is writing tests while the other writes documentation, say. It’s flexible.
So far we’ve found it useful to use both tuple and Code With Me in the same session.
Here’s my first impressions;
– Code With Me only shares your IDE session. E.g., it won’t share a browser if you’re web programming or sharing docs.
– Code With Me lets you do most things exactly the same as the original JetBrains app, like building, running a Run/Debug configuration, code highlighting, etc. Editing is fast and low-latency.
– Code With Me can be left running even if one person is called into a meeting. This is amazing. If I’m called into a zoom call, my partner can keep working. If I’m late getting back from lunch, my partner can work.
– Code With Me lets people work on different files at the same time.
– There is a degraded experience when running tasks. When running tests, participants don’t get the nice visualisation with a tree of tests with green ticks — they get stdout. For builds, you can’t click on a compile error to jump to the broken file. This may only be for Rust code in CLion, since people report this works fine for JVM projects.
– Code With Me does let the participant request terminal access. That’s nice since it allows someone to
kubectl logs or
mvn install, etc.
– Tuple provides the best synchronisation experience. The participant sees exactly the same as the host, and doesn’t get any of the degraded experience.
– Tuple shares much more – other apps, voice and camera.