Great article.
How do people deal with the lack of branches, esp in a full time setting where it's common to have a few independent features on the go?
There are still branches, but they aren't named by default. You give them names with "bookmarks", which you can push to remote git repositories as branches.
This lets you work on things without having to worry about giving it a name. This turns out to be pretty helpful when you're experimenting — just "jj new <revision>" and start editing. If it turns out to be something you want to share, "jj bookmark create <name>" and then you can push it. (You can also push without giving it a name, in which case you'll get a git branch with a name based off of the change id.)
Change IDs stay constant with each change, so you use those as a type of branch name when switching between the features you're working on.
A change ID is stable over time as you tweak the message of the change or the files edited by the change. Each of these changes become a new immutable git commit under the hood.
The fact that change ID is stable is very convenient for humans - means you have something explicit to hold on to as everything else may change over time.
So, with VCS in general you don't really need to have branches to be able to track multiple independent changes. (With Git you do, but that's an artifact of Git's model, not an inherent property of source control.)
What you do need is a good way to visualize what work you have in flight. With Jujutsu that's as simple as typing in `jj` on the command line.
At Facebook it was common for even junior devs to have 5-6 changes in flight with nary a branch in sight, and experienced devs like myself routinely had dozens.