Remote Desktop Coding
Recently, i have join a which has a 3 months length contract. After hearing about domain, technical stack and all the things that i…

Recently, i have join a which has a 3 months length contract. After hearing about domain, technical stack and all the things that i concerned about in that project, a strong wave of confidence running through my brain since i got everything loud and clear.
The thing that i didn’t expect was that we would write code in a remote machine, if that ever be a remote SSH development or something such as VSCode remote development then i wouldn’t complain. We had to connect to a VPN that is hosted in another country and use the Remote Desktop Protocol to write code on a Windows machine.
But why in the first place did they do that?
Well, they had many layers of protection, that’s good. First of all, they enforce VPN connection in order to connect to the development environment. This will prevent unauthorized actors to access our development environment.
Second, we have to do everything on the remote machine. This is understandable since the news has been posting about many cases that are related to source code and secret key leaking in the industry, it would be safer to put everything under the organization network and infrastructure (the remote machine). Moreover, if the machine of the developer gets hacked, the hacker won’t be able to pull something valuable from that machine since everything was put in the remote place (Actually the hacker could actually get access from the developer’s machine by planting a backdoor, but that’s a different story then).
The thing that they didn’t expect (We didn’t expect, too)
Usually, the productivity correspond to the level of the developer. For example, if you want to do something fast, hire a senior developer instead of a fresher one.
However, in this case. We have a team of multiple senior developers but still couldn’t deliver the code in time with the desired quality. The unstable connection and the latency brought us down. At some point of the day, for example at 5PM when the internet traffic is high, every keystroke we press takes 2 seconds to actually reflect on the screen, everyone complained.
That one point quickly became the “Single Point Of Failure”. The thing that bugged us further is that we could only fix production bug on that remote machine. The stress that network connection put on us is way much more than the pressure from the Project Manger.
The coding and debugging experience was not so great either, we all have some utility tools or stuff that we are familiar and use them daily, but cannot use it in the remote machine. For example, i usually use Vim and Vscode with Vim key binding. Just imagine the time i spend just to set them up on the remote machine and found out that they are not useful and actually slow me down.
The remote machine didn’t have a great specs either, i have a 32GB laptop which runs I9 12th Intel processor, eveything is snappy AF. On the other hand, the remote one has a decent but not as powerful processing power. It’s kinda frustrating because i have a bigger gun here and not allowed to use it to do stuff but have to connect to a smaller and weaker one to compile code.
The fix
Sadly, there was no fix at the time because they prioritize security over everything else so we had to adapt, we tried avoid rush hour, i woke up a bit early in the morning because the connection is more snappier. Sadly but fortunately, the contract was 3 months long so i could only tell that’s an unforgettable experience.
What would you do in this situation?