The constraints of everything

in

To build a pyramid, you need resources like employees, tools, and huge rocks.

And then you need time. Even with unlimited resources it will take time to build the pyramid, although more resources might reduce the time.

Then there’s the target – what sort of pyramid is to be built. The effort to build a one-tomb-without-a-bathroom -pyramid is less than the effort to build a five-tombs-with-three-bathrooms-and-a-kitchen -pyramid.

Finally, how well is the pyramid to be built. It’s less effort to build a pyramid that isn’t quite well built. It takes effort to make the rocks fit nicely to each other, and to assemble them well so that there’s no gaps in between them.

Same restrictions apply to everything. Resources, time, scope, and quality are harsh constraints – if they’re not in a balance, the outcome is not what was wanted. Software development is not any different.

Question is, which one(s) to sacrifice? And whether this is a philosophical question or not?