This article barely addresses what really causes trouble in practice, namely non-portable tools. Sed for example has different switches on macos and linux. MinGW is another world.
Also check out https://github.com/c3d/build for a way to deal with several of the issues the author addresses (but not posix portability)