"Back in 2001, I worked for a company that brought on a couple dozen highly-paid consultants to set up a series of websites," Mark Steyn writes, "I was one of a small number of permanent employees working alongside the consultants, and it quickly became clear that consultancy supplied us with a number of extremely talented developers who knew exactly what needed to done and how best to accomplish it. Unfortunately that number was 1."

"The remainder were... somewhat less capable. I'll cite as evidence this JavaScript date validation function I stumbled across when a bug report noted that a tester had experienced problems trying to sign up for the site. Their date of birth was consistently rejected. I forget the exact date, save that they were born on the 28th.

function verifyDOB(dateStr) {

  var day = dateStr.split("/")[0];
  var month = dateStr.split("/")[1];
  var year = dateStr.split("/")[2];

  var dayOk;
  var monthOk;
  var yearOk;
  
  dateOk = false;
  monthOk = false;
  yearOk = true;
  
  if (day == "1" || day == "2" || day == "3" || day == "4" || day == "5" || 
      day == "6" || day == "7" || day == "8" || day == "9" || day == "10" ||
      day == "01" || day == "02" || day == "03" || day == "04" || day == "05" || 
      day == "06" || day == "07" || day == "08" || day == "09" || day == "10" || 
      day == "11" || day == "12" || day == "13" || day == "14" || day == "15" || 
      day == "16" || day == "17" || day == "18" || day == "19" || day == "20" || 
      day == "21" || day == "22" || day == "23" || day == "24" || day == "25" || 
      day == "26" || day == "27" || day == "27" || day == "29" || day == "30" || 
      day == "31") {
    dayOk = true;
  }

  if (month == "1" || month == "2" || month == "3" || month == "4" || month == "5" || 
      month == "6" || month == "7" || month == "8" || month == "9" || month == "10" || 
      month == "01" || month == "02" || month == "03" || month == "04" || month == "05" || 
      month == "06" || month == "07" || month == "08" || month == "09" || month == "10" || 
      month == "11" || month == "12") {
    monthOk = true;
  }

  var dateOk;
  if (dayOk == true && monthOk == true && yearOk == true) {
    dateOk = true;
  } else {
    dateOk = false;
  }
  
  if (!dateOk) {
    alert("Please enter a correct date of birth");
  }

  return dateOk;
}

Mark adds, "as an aside, I also remember the demands from the marketing department that we collect as much information about users as possible. This led to the sign up process consisting of 30 different questions spread across 3 pages, all of them mandatory. Curiously fewer people signed up for the site that the marketing department anticipated..."

[Advertisement] BuildMaster allows you to create a self-service release management platform that allows different teams to manage their applications. Explore how!