How the Year 2000 Problem Works
by Marshall Brain
You will be hearing about the "Year 2000" problem constantly in the news this year. And
you will hear a lot of conflicting information in the process. There is also a good
bit of "end of the world" rhetoric floating around on the Internet. What should you believe?
In this edition of How Stuff Works we will discuss
the Year 2000 problem (also known as the Y2K problem) so that you understand exactly what is happening and
what is being done about it. You can also explore a variety of
links. From this information you draw your own informed conclusions.
What Is the Y2K Problem?
The cause of the Y2K problem is pretty simple. Until recently, computer programmers
have been in the habit of using two digit placeholders for
the year portion of the date in their software. For example, the expiration date
for a typical insurance policy or credit card is stored in a computer file in MM/DD/YY format (e.g. - 08/31/99).
Programmers have done this for a variety of reasons, including:
- That's how everyone does it in their normal lives. When you write a check by
hand and you use the "slash" format for the date, you write it like that.
- It takes less space to store 2 digits instead of 4 (not a big deal now because
hard disks are so cheap, but it was once a big deal on older machines).
- Standards agencies did not recommend a 4-digit date format until recently.
- No one expected a lot of this software to have such a long lifetime. People
writing software in 1970 had no reason to believe the software would still be
in use 30 years later.
The 2-digit year format creates a problem for most
programs when "00" is entered for the year. The software does not
know whether to interpret "00" as "1900" or "2000". Most programs therefore default to 1900.
That is, the code that most programmer's wrote either prepends "19"
to the front of the two-digit date, or it makes no assumption about the century and
therefore, by default, it is "19". This wouldn't be a problem except that programs
perform lots of calculations on dates. For example, to calculate how old you are
a program will take today's date and subtract your birthdate from it. That subtraction
works fine on two-digit year dates until today's date and your birthdate are in
different centuries. Then the calculation no longer works. For example, if
the program thinks that today's date is 1/1/00 and your birthday is 1/1/65,
then it may calculate that you are -65 years old rather than 35 years old.
As a result, date calculations give erroneous output and
software crashes or produces the wrong results.
The important thing to recognize is that that's it. That is the whole Year 2000
problem. Many programmers used a 2-digit format for the year in their programs,
and as a result their date calculations won't produce the right answers on 1/1/2000.
There is nothing more to it than that.
The solution, obviously, is to fix the programs so that they work properly. There
are a couple of standard solutions:
- Recode the software so that it understands that years
like 00, 01, 02, etc. really mean 2000, 2001, 2002, etc.
- "Truly fix the problem" by using 4-digit placeholders for years and recoding
all the software to deal with 4-digit dates. [Interesting thought question - why use
4 digits for the year? Why not use 5, or even 6? Because most people assume that no
one will be using this software 8,000 years from now, and that seems like a
reasonable assumption. Now you can see how we got ourselves into the Y2K problem...]
Either of these fixes is easy to do at the conceptual level - you go into the code,
find every date calculation and change them to handle things properly. It's just that
there are millions of places in software that have to be fixed, and each fix
has to be done by hand and then tested. For example, an insurance company might
have 20 or 30 million lines of code that performs its insurance calculations.
Inside the code there might be 100,000 or 200,000 date calculations. Depending on how the code
was written, it may be that programmers have to go in by hand and modify each point
in the program that uses a date. Then they have to test each change.
The testing is the hard part in most cases - it can take a lot of time.
If you figure
it takes one day to make and test each change, and there's 100,000 changes to make, and a person
works 200 days a year, then that means it will take 500 people a year to make all the changes.
If you also figure that most companies don't have 500 idle programmers sitting around
for a year to do it and they have to go hire those people, you can see why this can become
a pretty expensive problem. If you figure that a programmer costs something like
$150,000 per year (once you include everything like the programmer's salary, benefits,
office space, equipment, management, training, etc.), you can see that it can cost a company tens of millions
of dollars to fix all of the date calculations in a large program.
What will happen on 1/1/2000?
On January 1, 2000, software that has not been fixed will
stop working or will produce output that is incorrect. The big question is,
"How big an effect will that have on the world as we know it?"
Some people are predicting that the world will end. For example,
worldwide power failures, a total breakdown of the transportation
infrastructure (meaning food cannot get to stores, etc.),
planes falling out of the sky, and so on are the scenarios these
people foresee. The prediction is that the fabric of society will collapse,
people everywhere will riot and the world will burn to the ground. Of course,
the people making these predictions all tend to be: A) militia members, B) survivalists and C)
religious zealots. It is important to recognize the source of these predictions.
In reality, nothing will happen. There may be a week or two of inconvenience as
unforeseen problems present themselves and are worked around. Otherwise there
will be no effect. That is an easy prediction to make because:
- Most companies and government agencies will have their software fixed, or will have work-arounds in
place, by the end of 1999. If they don't they will go out of business, and that's a strong incentive
to get the job done.
- No matter how dependent we think we are on computers,
most everything is run by people, not silicon.
Take food for example. The tomatoes and lettuce will keep growing, and
the people that pick it will keep picking, and the cannery will still can it,
the truck drivers will still drive their trucks and the grocery stores
will still sell it. In other words, the world will not stop
even if a few computers do.
- Some companies will not have their acts together and will have problems. They
will go out of business. That
is normal capitalism at work. There will be a little disruption as the
winners and losers sort it out, but what else is new?
Another thing to keep in mind is that we experience inconvenience all the time
and it has little or no effect on us. For example, when UPS (United Parcel Service) went on strike in 1997,
it shut down something like 80% of the package delivery infrastructure in the U.S. The world
did not end - everyone used the Post Office and Fedex instead. On 1/3/1999 Chicago and Detroit experienced their
worst snowstorms in 30 years. It shut down air travel nationwide, delayed
the opening of the Detroit auto show, stranded tens of thousands of people,
etc. Somehow we all managed to survive with the inconvenience. On 1/1/2000 there
will be a some companies that have problems. But there will be
lots of other companies that don't. It may create inconvenience, but that is
all that it will create and two weeks later we will have sorted it out. It's no
different from a big snowstorm or a big strike - we figure out ways around the problems
and life goes on.
There are many scare tactics and exagerations used around the Year 2000 problem.
In all of them there is a fairly broad assumption that people cannot do their jobs anymore.
The important thing to recognize is that, even if many of the computers in
the world were to suddenly shut down on 1/1/2000, the total effect would
be minimal because people know what they are doing. Let me show you why:
- Let's say that every ATM in the U.S stopped working. There are still tellers and you can still
talk to a teller at the bank during normal business hours to make deposits and withdrawals.
- Let's say that every computer at UPS were to shut down. UPS is a bunch of people driving around their
brown trucks, and they can all read address labels. The packages will still get delivered.
- Let's say that every barcode scanner in the stores stopped working. Cashiers can still
type in the prices.
- Let's say that every computer at the FAA were to shut down, and all the automatic pilot
computers in airplanes stopped working. Air traffic controllers are people, and pilots
can still fly airplanes. We might not be able to land 2 planes every minute at busy airports, but
planes will still fly.
- One of the biggest scare tactics used around the Y2K problem is "failure of the power grid".
Let's say that there was something that went wrong somewhere. There are thousands of competent
people who manage and repair the power grid - these are the same people who put the grid back together
after every major hurricane, ice storm, etc. Also important to note is that the power grid is not something
magical. Please read How the Power Grid Works and educate yourself. The grid is
made up of passive wires and transformers. Electrons will still flow through wires on 1/1/2000.
There is an assumption among doomsdayers that somehow, on 1/1/2000, every computer will fail
(which is silly), AND that every human being will somehow "fail" as well. If you think about it,
you can see how untrue that is. We all know how to do our jobs, and we all want to live our lives.
On 1/1/2000 we will all be the same. We will get in our cars and we will want to go buy something.
The people selling the something
will still want to sell it so they can make money. That is never going to change.
Links
© 1998 BYG Publishing, Inc. All rights reserved.