This kind of development is a terrible experience if the overall infrastructure isn't setup to support development also.
To have it be successful you need to not have persistent VMs that individuals are connecting to individually but rather ephemeral VMs that get created/deleted when a user needs one.
Those ephemeral VMs then need to be able to connect to the rest of the infrastructure that supports development - your artifact repositories, version control system, docker nodes, k8s clusters, etc.
Your artifact repository then needs to mirror public repositories where your source packages can be found, be it pypi, github, golang, helm, docker hub, etc. You will now have to setup your IDE or shell package manager to use this artifact repository as a proxy.
The developer tooling is usually an entire team and the infrastructure for the VMs is also.
Not an easy or cheap thing to setup. But it can be done so that the developer experience is good and so that you don't have developers running random versions of software.
To have it be successful you need to not have persistent VMs that individuals are connecting to individually but rather ephemeral VMs that get created/deleted when a user needs one.
Those ephemeral VMs then need to be able to connect to the rest of the infrastructure that supports development - your artifact repositories, version control system, docker nodes, k8s clusters, etc.
Your artifact repository then needs to mirror public repositories where your source packages can be found, be it pypi, github, golang, helm, docker hub, etc. You will now have to setup your IDE or shell package manager to use this artifact repository as a proxy.
The developer tooling is usually an entire team and the infrastructure for the VMs is also.
Not an easy or cheap thing to setup. But it can be done so that the developer experience is good and so that you don't have developers running random versions of software.