It always surprises me to see how code I've written is designed as if the application is never going to change. Apps need to be written (within available programming and time resources, of course) as if every damned part of them is going to be different: the database is going to change, the UI is going to be winforms instead of webforms, the app is going to have a different URL, the server name is going to change.
I'm fortunate because I'm responsible for applications that are in daily use and which I've re-engineered two or three or more times. I know applications and environments change. And yet I keep missing opportunities to use .config and metadata approaches to app design so when major changes do occur, a few global changes or isolated component updates finish the job.
I'm going to do better.