This is a long posting. Read it anyway.
In the book of Isaiah, we read the phrase, "seeing, they will not see; hearing, they will not hear." Jesus quoted it in Matthew 13. Theologians call this condition judicial blindness.
In the history of man, the Year 2000 Problem is by far the most remarkable example of judicial blindness.
This story is classic. Don't worry about the details. It is the 1974 question and the response that matter.
* * * * * * * *
Joe Guy's Y2000 Story
Y2K Fun in 1974 by Joe Guy - October 19 1996
I have been reading a great deal in the press lately about the Canadian Computer industries struggle to find good people. "There is such demand and we cannot fill it" they say.
I will tell you why they cannot fill it.
One day in 1974 I was sitting in a Systems Analyst's class at Humber College. Systems Analysis is the art of designing the actual hardware and software of the system that is used by the final user. This is a lucrative and prestigious position. The hierarchy in the ProGeek business goes like this: Systems Analysis, Programmer, Operator. They get paid in that order, too.
There are exceptions. John Carammak, who programmed Doom and Quake, collects Ferraris and certain operators can write their own six-figure ticket.
Still, I was determined to enter the field of programming even though it traditionally paid less than System Analysis. I chose this path became I love programming. I love it a lot. I wanted to make a living doing what I loved. I found systems analysis boring at the time, and today I regard it as something that must be done and gotten over with.
The teacher in this class was laying out a file record diagram on a blackboard. A file record is what the data is stored in in a data file. For instance, they allocate 40 characters for a first name, another 40 for a last name 60 for an address etc. The record has a certain finite length. The file is made of one record after another. Sometimes there are millions of them. When anyone enters data on you in a computer, at least one data record is either being created or updated.
When the computer looks for a data record, it cannot run through all of them! It would take too long. It uses an index to order and point to the data records and looks through the index at an advanced speed. To give you an idea as to how powerful this is, if you have a billion records on a hard disk finding one selected at random would take an average, on the long run, of 500 million record examinations each time. This would take minutes every time you wanted a record, and would put great wear on the disk drive. That is not acceptable.
But with an index that sorts the data records into some specified order, say last name, the computer would go through the index like you would use a phone book. You open the book in the middle, if the name you are looking for is in the left section, let the right section fall and open the left in the middle. If the name is in the right section you drop the left one and open the right one in the middle. Repeat as necessary until you have your name. Fast isn't it? Now you know why phone books are in alphabetical order.
With one billion records your 'binary search' index would find the record (or determine it wasn't there) in a maximum of 32 record examinations. Not 32 million. Just 32. With a modern computer you couldn't get your finger off the Enter key before your data was on the screen. And it's not even the best way to do it! That's why indexes are here to stay.
Back to the class of 74. The teacher was putting the date fields on the blackboard. "Two characters for the year, two characters for the month and two characters for the day"
Now - one of the reasons date fields even exist is to build indexes from them. In order to do this you have to be able to order them, that is, to be able to say that one date is greater than, less than or equal to another.
Today's date is, in this field form, 971019. This six-digit number is smaller than tomorrow's date, which will be 971020. So the index works.
It works right up until 1999 when the last day will be 991231 and the next day will be 000101. 101 is not greater than 991231. The index does not work anymore. The system will crash on January 1, 2000. So I raised my hand.
"What is it Smith?"
"What happens when the century changes?"
There was a moment of stunned silence - then the class burst into incredulous laughter. How could anyone be so stupid? Everyone knew that the century would last forever.
Mortified, I shut up.
Now here's the point of this lecture. EVRYONE IN THAT CLASS KNEW HOW AN INDEX WORKED. I learned how an index worked in that class! I wrote the previous words so now YOU know how an index works!
YET - the man who taught me how an index worked in front of a room full of people who knew how an index worked was designing an index that would not work in 26 years. And he knew it. And he still did it. And no one seemed to 'get it' that this was bad.
Would you attend a school of architecture that planned a building that would fall down in 26 years? Our work has to last forever! Why can't they see that? Why is there no vision?
This is my seminal memory from Humber College.
Today, you might think that someone who spotted the now-trendy year 2000 or 'Y2K' problem as an undergrad in 1974 might be a big shot today. Not true, I am unemployed.
Why? Because I am in an industry that is driven by trends and short-term immediate results, and, at 41, I am too old. I feel like telling these human resources people 'I am not going out for the rugby team here'. If you are not a 20-something up on the latest software, you are nothing. This is called being 'Beta-maxed'
No one will wait for you to do a tutorial and catch up in say, Powerbuilder, in 2 months, which I could do. No one will care about your native ability, and mine is plenty. You have to hit the ground running or you are useless. In the terrible algebra of programming skills, 100% equals 100 % and 99% = 0.
The reason this industry is crying out for people is that people who are 90% there cannot get in. There is no vision. And where there is no vision the people perish. Or at least can't find good help.