Bruce's Photo

    Assignment 1- Fallout From Y2K

CEN-4020 Software Engineering

Bruce Neufeld
Jan. 24, 2000

The Y2K problem has been both the greatest failure and the greatest victory for software engineering in the short history of computing. Perhaps it was the ad hoc nature of the software engineering process in the early days of computing that gave rise to the problem. Standards were loose in the early days of computing and cost was often seen as more important than long term viability of the code base. Of greatest import was the early lack of the century digits in the date field in almost all early programs and operating systems. The extra two bytes needed to represent the century was considered too expensive in memory overhead. Much of today’s functional code base was originally written in the 1950’s, 1960’s and 1970’s, when programmers knew they would be retired, dead or at least no longer working for their companies by the year 2000. So they either ignored or were told to ignore the obvious problem of what would happen when their code no longer reliably interpreted the year. Several warnings were sounded in the software engineering community, as early as 1970. These were ignored as alarmist or extremist, due to the mistaken belief that computers would probably all be running completely new code in the future. Then, by 1994, several more alarms were sounded by concerned computer scientists, this time with greater effect. The media began picking up on the story by 1996 and by 1998, it began to dawn on most of the world that a major catastrophe would happen if the Y2K related flaws in the world’s computers were not corrected.

Governments and big business had already begun the work of Y2K amelioration in earnest by 1995. In particular, the United States had begun preparations early. By December 1999, it was estimated by CNN that American government and business had spent 300 billion dollars to correct the century rollover problem. One of the fixes used was the "window" method, where the software was patched to recognize the century correctly by looking for a range of dates, but not actually using the century digits. Other software was more appropriately modified to add the century digits to the code and stored data. Many countries were considered to be significantly less prepared for Y2K and many thought that there would be significant problems for them on January 1, 2000. The United States prodded many other countries into working hard to bring as many of their essential computers to Y2K compliance as possible. The strategic nuclear forces of America and Russia were monitored at a joint command post in case of a failure in either nation’s command and control systems.

At the turn of the century, the world waited with baited breath, hoping that the worst predictions would not come true. As the clock struck midnight around the world, the electricity did not fail, airplanes did not fall out of the sky and people were able to draw funds from their bank’s ATM’s. All those who holed themselves up in concrete bunkers with 12 month’s worth of supplies sheepishly resurfaced when they found out the world had not come to an end. All the work that was done proved to be largely effective in preventing a major worldwide disaster, so much so that now many people are asking if it was worth all the expense. The simple fact that no major problems occurred, from a potential array of results such as nuclear war, worldwide electrical outages and economic chaos, shows that the work put in was completely necessary. What was inappropriate was the poor planning that originally happened back in the 1940’s when computers were new to the world. While the problems of Y2K are yet to be fully experienced, there are good reasons for confidence. The world has passed the most important milestone, the turn of the millennium, with a minimum of problems. Software engineering’s greatest lesson has been learned.

Last updated
All code, editorial content and images copyright © 1994-2008, Bruce Neufeld, unless otherwise stated.

Return to Home Page
Go Back