Honestly, if the makefile is well written, I will take that any day. Good makefiles are 😙👌.
They are extremely rare, tho...
I guess the solution would be a declarative language that compiles to makefiles. So that people don't have to know the nitty gritty of writing good makefiles, and can just maintain a file of their dependencies and settings...
The essence of that article can be summarised in: