The initial wave of software-application development began in the 1960s, when applications were developed for mainframe computers. In those days, computing was expensive, so applications were designed to take as little space as possible. One shortcut that many programmers took was in the storage of dates, specifically the year. Instead of allocating four digits to hold the year, many programs allocated two digits, making the assumption that the first two digits were “19″. For example, to calculate how old someone was, the application would take the last two digits of the current year (for 1995, for example, that would be “95″) and then subtract the two digits stored for the birthday year (“65″ for 1965). 95 minus 65 gives an age of 30, which is correct.
However, as the year 2000 approached, many of these “legacy” applications were still being used, and businesses were very concerned that any software applications they were using that needed to calculate dates would fail. To update our age-calculation example, the application would take the last two digits of the current year (for 2012, that would be “12″) and then subtract the two digits stored for the birthday year (“65″ for 1965). 12 minus 65 gives an age of -53, which would cause an error. In order to solve this problem, applications would have to be updated to use four digits for years instead of two. Solving this would be a massive undertaking, as every line of code and every database would have to be examined.