In many projects, software requirements change, sometimes meaning we software engineers have to throw out our work and start over. Heck, we have entire methodologies built around the assumption that requirements will change.

So, why are requirements changes allowed to happen in cases where the software engineers then have to put in more work to fulfill them?