When updating Sql columns that need a minimum or maximum date, consider using the defaults from the System.Data.SqlType namespace:
1: DateTime minDate = SqlDateTime.MinValue.Value
3: // and
5: DateTime maxDate = SqlDateTime.MaxValue.Value
This can be a lot safer than putting hard-coded "magic date" constants in your code.
I like this article by Nathan Henkel, its essentially about assessing risk and scope of projects and strikes me as a simple truth about the uncertainties you encounter in every project:
Information about any project can be divided into four categories:
1. Things we know (and know we know)
2. Things we know we don't know
3. Things we think we know, but don't (i.e. things we're wrong about)
4. Things we don't know we don't know
Obviously, if you were to try to actually figure out where everything falls, you would put everything into 1 or 2. Everything that should be in 3, you would put in 1 (you're not going to have known mistakes in your information), and everything that should be in 4 would simply be missing.
However, without dealing with specific items, I do think that it's possible to guess at how much "stuff" goes in each category. You can take into account your history ("I tend to often be mistaken about X"), or a general feeling of ignorance ("I've never used framework Y before") to guess how much goes in each category.
Sometimes, I think we get so wrapped up with what we “know” about a project that we fail to quantify what we don’t know, or the degree of certainty to which we actually know what we think we know. As with solving any problem, the first step is to find a way to quantify and measure uncertainty and risk in order to minimize it.
If you track this measurement over time, it should also help your estimation and planning on future projects.