There is never a missing Software Build System. There is neither a bad Software Build System.
It’s always the case of the above listed two categories. If there is
a case without any Software Build System, then there is no Software at all. By
whatever crude — half cooked — incomplete — fragile —
temporary — mechanism the Software builds, it still a Software Build System. Even
if it’s not good at doing it, but it still serves the purpose of a
Software Build System — build the Software. Whether good enough to help the
developers, or annoyingly bad and remain a painful experience for the
developers, a build system would always be there.

The not so good Software Build System would eventually be replaced by something that
is better than the existing Software Build System. On the contrary, the Good Software Build System
would never undergo any major/visible change. And for most of the
developers, such a Software Build System would be a very opaque system. A good Software Build System
would, on its own, work as an invisible gel that is used to build up
the Software stack.

It is not a good idea to learn from a not so good Software build
system. And, since a good Software Build System would evolve to be an
invisible/opaque system, it would be a difficult task to learn
from such a system.