We all know that hard-coding is a bad thing in software. But most developers think of hard-coding simply as typing a literal value into your program whenever you need it.
So what's wrong with doing this? Nothing - as long as the value is never going to change. But what's the chance of that happening? In fact, what's the chance of anything staying the same (never changing) in our application requirements and resulting code?