Re: Nothing new ?
"Charging for changes is a huge money maker."
And those changes being harder than they should to implement is a great money loser.
Rule 1. Development is the process of launching a product into maintenance.
Rule 2. Maintenance is the longest part of the product life-cycle unless the product was canned PDQ.
Corollary: Good development prepares the way for easy maintenance.
Rule 3. Forget the "You ain't gonna need it" stuff. You will. Sod's law variation no 286 says that if you don't have it you're going to need it even sooner.
Rule 4. Think of the most general problem you can of which the immediate requirement is an example and solve that problem. You might find it's no more difficult doing it that way; if the additional requirements come in while you're working and you were already meeting them it'll actually be easier than chopping and changing.
Rule 5. If you tailor your program to fit the requirements exactly the requirements will become your program's limitations.
Rule 6. Your program's limitations may well become its bugs.