Imagine a scenario - a developer is working on some bash script that is supposed to run on a remote test server.

This remote server doesn’t have GUI, it doesn’t have copilot and doesn’t have our favorite IDE that make our life sufferable.

So what does this lazy developer do? He creates the script on his local IDE, CTRL-Cthe code and CTRL-V into the remote machine - Thinking this is a small script that will be ready in no time. Like usual, estimations are hard - Our developer is not special and of course, multiple attempts are needed to get our desired script, sometimes dozens of attempts or more.

So each time this lazy developer copies, pastes the code and hoping that this time will be the last.

This might be a simple task - copy and paste - but don’t underestimate it, this brings needless friction and another pain point to your constantly failing script.

You should always think - especially as a younger developer who is less experienced, how can I make my workflow easier, how can I be more lazy? How can I [[Fail fast and fail hard]]?

There are multiple solutions to make this workflow more efficient, depending on the tasks and other factors.

  • One solution might be to create a small script on the developer machine (Which has the IDE) that will copy the developing script over to the remote test machine and execute it - all automatically. Meaning the developer will write code, and with 1 click run this script that will copy-paste-run and the developer will see the results as fast as possible
  • Another possible solution will be to install an IDE on the remote test machine or even work using nano or vim. This should only be considered in very rare cases as it might lead to lost code that is not checked out to a SCM(Github/Bitbucket/etc)
  • If the development task is complicated which also has dependencies or a build stage. Might be worth it to develop some pipeline such as github actions, Jenkins, etc.