Some Inconvenient Truths About Software
What Every Business and Software Design Team Should Know, by Jonathan Rasmusson
Then there are the three simple truths that need to be accepted before you can successfully manage your own software project.
1. You will never have all the requirements going in.
2. The ones you do have are going to change.
3. You will always have more to do than time and money will allow.