When it comes to outsourcing software development, I hear quite a few complaints. And not just from the whiney Slashdotters griping about why they can't find jobs, but from real people -- people who have actually worked through it. The number one issue seems to be value: for what they're paying, they're just not getting enough good code. But this isn't certainly always the case.

Take Tommy, for example, who was astonished by not only the sheer amount of code produced by their outsourcing partner, but the attention paid to detail. Now I suppose that one might argue that, in a strongly-typed language such as C#, validating that a Boolean is only true or false is unnecessary, but one should consider that doing so increases the lines of code. That, in turn, lowers the cost per line of code. And that, in turn, creates a better value. And who doesn't like value?

private bool m_ISO9001;
/// <summary>
/// Indicates whether or not the organization is IS9001 Certified
/// </summary>
public bool ISO9001
{
  get
  {
    //should return only true or false
    if (m_ISO9001.ToString().ToUpper() == "TRUE")
    {
      return true;
    }
    else if(m_ISO9001.ToString().ToUpper() == "FALSE")
    {
      return false;
    }
    else
    {
      return m_ISO9001;
    }
  }
  set
  {
    bool v_ISO9001 = value;
    //can only be true or false
    if (v_ISO9001.ToString().ToUpper() == "TRUE" ||
        v_ISO9001.ToString().ToUpper() == "FALSE")
    {
      m_ISO9001 = v_ISO9001;
    }
    else
    {
      throw new ArgumentException();
    }
  }
}