Yeah, SSD is a must for any serious work on a Pi, although I still can’t imagine running something like IntelliJ IDEA directly on it.
With the recent release of browser-access VS Code, I feel like we’re only a few years away from cloud development as dominant paradigm. We’ll grouse about it here (“what happens when my network connection fails?”) but I suspect using a “terminal” to develop on a remote machine is likely to be the only option for future generations of developers.
Coding in an ephemeral development environment is actually kinda nice. Whether that is a fully remote system or inside a Docker container. It’s nice to have a fully specified development environment that can be recreated at any time. I’ve started doing this for some newer projects and it’s refreshing. You don’t need to install compilers or libraries on your live system — it’s all stored in the container.
This is what I see as the winning paradigm. Whether that environment is remote or local is almost an implementation detail, and should be unimportant to the developer at the keyboard.
But the remote development aspect is even more important if you do notebook-style data analysis (which is increasingly more like traditional programming). In this case, browser/HTML based notebooks have been a game changer in that you can have long running sessions on heavy duty servers, controlled from smaller local machines. And the local machine only has to have a web browser.
Incidentally, my first foray into this development model was when I was trying to use my iPad as a dev machine. I hooked up an RPi to the iPad over USB-C and connected to the RPi running code-server (before vscode had their own remote server option). It worked surprisingly well, but the biggest hinderance was storage. And if you’re already connecting over a web browser, no need to limit yourself to a locally attached RPi…
With the recent release of browser-access VS Code, I feel like we’re only a few years away from cloud development as dominant paradigm. We’ll grouse about it here (“what happens when my network connection fails?”) but I suspect using a “terminal” to develop on a remote machine is likely to be the only option for future generations of developers.