There is no C in the repo I'm describing. It's Go services with a Python tooling sidecar, and yet the thing tying it all together is a Makefile. Every time I mention this someone suggests a shinier task runner. I keep not switching.
The reason is dull and persuasive: make is already installed on every box I touch, the syntax is mostly muscle memory by now, and make <tab> after a few .PHONY targets gives me a menu of what the project does.
.PHONY: build test lint fmt
build:
go build ./...
test:
go test ./...
python -m pytest tests/
lint:
go vet ./...
flake8 .
The footguns are real. Tabs not spaces. Every recipe line runs in its own shell, so cd foo doesn't carry to the next line. And dependency graphs on phony targets get silly fast. But for "here are the dozen commands a newcomer needs to know," a Makefile beats a wiki page that nobody updates. It lives next to the code and it either works or it doesn't.