Writing software for my own—or my kids—use and delight is almost always a fun and successful endeavor, if expectations are not well managed, I throw it away, no problem. Likewise, when programmers write software for their own use, there are more chances the software can be steered gracefully to a useful end.
It is quite different writing software for paying customers when the business value is a moving target. One development management strategy is to isolate the development team from such dynamism for at least a short period of time (30 days in the case of Scrum). Then reflect how close we are from the adjusted target and plan the next short development cycle based on current priorities. Enabling the growth of the functional capacities the business actually needs. The whole point of the adaptive methods of development is to give chance to the related parties —and especially to the Product Owner— to learn, to realize, to corroborate, what is the actual —up to a given point in time— need; and to direct the development effort only toward that need.
In addition, if involved people lack the awareness of what entails this style of development for each role —like the accountability for steering the effort by the Product owner— then, agile and lean fads become the new excuses for brittle software.