Make is one of my favourite tools, both professionally and personally. It allows for essentially interactive READMEs and project instructions; instructions are by default interactive with Makefile Targets, and as such are easy to use and make sure (ha!) that they still work over time. No more stale instructions wrote multiple versions of the project ago!

It also has the benefit of making CI/CD processes more tooling-agnostic, since you just need to figure out how to run make build or make test and not have to mess with a bunch of tool-vendor-specific things. Plus Make is a pretty common package on most every OS/distro, so you likely don’t even need to figure out how to install it wherever you are either. (This is another benefit of sticking with the “standard” tool Make vs say Just, one less thing to install).

Sure Make has some downsides, the language isn’t the easiest to write and understand sometimes, but on the plus side once you get a solid Makefile written for a type of project or language, reusing (copy/pasting) it on others is pretty trivial.

Here’s a couple examples of mine for different languages:

Python - https://github.com/toozej/python-starter/blob/main/Makefile

Go - https://github.com/toozej/golang-starter/blob/main/Makefile