* If you fire up an editor on the remote machine, there is going to be typing lag, unless your Linux machine is in your local network. You can ameliorate this with software such as Mosh, but that comes with its own disadvantages (losing scrollback buffers).
* If you edit locally but save the files to the remote system, you have to worry about getting disconnected or your machine shutting off and losing changes.
* If you edit and save locally, then transfer changes later (e.g., using Git), you run and test your code on the remote machine, and have to worry about attaching a debugger to the remote program and other fun stuff.
I guess it just depends on how big the project you're working with; but I would have a hard time working with more than, say, 10 files on a remote machine.
Other solutions aren't exactly optimal either. A virtual machine takes up precious RAM and it is slower than bare metal. You're not using all of your machine's resources. WSL works for most things, but fails for others (e.g., Docker, Kubernetes, I/O isn't as fast as it can be).
I've come to the conclusion that doing development on Linux on bare metal is the solution with the least compromises; the biggest one being the loss of access to work-related productivity apps such as MS Office, Outlook, and Adobe products.
If you fire up an editor on the remote machine, there is going to be typing lag, unless your Linux machine is in your local network. You can ameliorate this with software such as Mosh, but that comes with its own disadvantages (losing scrollback buffers).
No typing lag for me on remote machines (< 70ms). I don't use mosh but the scrollback issue can be solved with tmux which is a must for remote dev.
If you edit locally but save the files to the remote system, you have to worry about getting disconnected or your machine shutting off and losing changes.
Yes, tmux can reduce the pain significantly. But what if you're using anything graphical for development? VS Code, Jetbrains IDEs? I guess you can use X forwarding. But what a pain. And if you're creating a webapp, you still want to see how it looks on a web browser.
But you make some fair points. I will try to use tmux for remote development for a few days.
Oh yes, this setup works smoothly only if you use a console editor like vim or emacs IMO, some IDEs/editors let you edit remote config files but I don't like that flow.
* And if you're creating a webapp, you still want to see how it looks on a web browser.*
You know the browser is a networked application right? just like you use your local ssh client to connect to the remote ssh server, you use your local web browser to connect to your remote web server.
Personally I just use a macbook and develop over ssh.