Static binaries

If you consider adopting a programming language, consider one where you can create statically-linked executables. This makes things so much easier.

E.g., compared to Docker

With a statically-linked binary, provisioning a program on a remote host is just uploading it. With Docker, you need to install and maintain docker-engine. Ideally you should have a nice way to provision the remote host with Docker, but then, why not use that nice way to provision other stuff directly ?

Docker is much more than packaging, but it seems a lot of people use it for that purpose.

By the way, statically-linked executables make building Docker images a breeze.

If you use Docker to deploy, you probably want a private registry, which is another piece to maintain. Static binaries are trivial to host on a static site. Or to mirror. And so on. Simplicity goes a long way.

See also: In praise of simplicity

Related: Learn packaging