There you are, quite happily using some framework or CMS to run a website, and you've just been asked to get it to do something which it was not originally designed. You begrudgingly agreed and start to work out how to implement what's been asked. You decide that you'll amend the core system files of whatever platform you've been stuck with because it's quick and easy, and because your boss used terms such as "quick wins" and "cost efficient".
Anyway, the requested functionality works and everyone's happy—except the poor person (that may still be you) who comes along a few months later to upgrade the platform to the latest version and…BANG! That amendment you made to the system core, forget it! It's been lost by overwriting it with the new files from the upgrade. Now, that crazy thing you were asked to implement no longer works and you're left trying to remember what you did to get it working. Then before anyone notices, it's missing, and you're left thinking...