I am by no means experienced in my field, however this doesn’t seem to stop my peers from thinking I have some form of magical knowledge about how to rapidly deploy applications. The truth is I don’t employ some special knowledge to do things faster, much to their surprise I simply follow convention.
My philosophy is this, as good as I am in my field, I simply do not know everything. So I trust the experts who specialize and trust their advice in that field. One such idea is that you should avoid doing things manually and repetitive. The benefits of automation should be self evident of those in the field of programming, but experience and interaction reveals that many a programmer is perfectly content to do the same task over and over again.
The most common explanation is inexperience or ignorance, this I believed for the longest time as it made the most sense. I mean no one would do extra work if the didn’t have to…. right? Wrong, I personally know several brilliant engineers and developers that would manually copy over files while testing code for a project. When I say manually I don’t mean through a script with a command. No. I mean opening explorer in Windows, navigating and copying files over then closing the explorer window and repeating the process after a code change. I’ve seen someone do this whilst working on a neural net, it hurts to watch.
So much time is wasted simply by not having a build/deployment process. What may seem like only a few seconds of time adds up when you do it over and over again. It only takes a few minutes to setup proper tooling.
Take web development for example: if you find yourself reaching for an ftp client, stop yourself and ask why not use a shell script, and more importantly why aren’t you using an encrypted file transfer program? If you find yourself constantly changing file permissions or file context, why not write the command once in a script?
The first thing I hear from a never change my ways engineer is that they simply don’t want to maintain another script. That’s fine, use a CI/CD system and have it maintained for you. Most modern deployment systems even let you simply add a file to your VCS repository and track it as you make changes to your deployment process(awesome).
The point is, when you find yourself doing something over and over, take a minute and ask yourself. Could I save some time?