Lines of Code vs. Program instructionsgreenspun.com : LUSENET : TimeBomb 2000 (Y2000) : One Thread
Hi, This is a long one so bear with me: I just read in an issue of USA Today published Friday, Nov. 13th that the Provident Bank of Cincinnati, "which boasts that it is 'among the nation's 100 largest banks, with 72 financial centers and over $6.7 billion in total assets'" just "upgraded for Y2K using a staff of 30 people in Cincinnati and 40 in Chennai, India, linked by satellite." "It also has about 8.5 million lines of computer code. . ." This sounds wonderful and I hope it is true, but due to my reading of your book Time Bomb 2000 it doesn't seem very likely. Now I have read that in order to correct a line of code it costs approximately $1.00 to $1.50 per line. Should I assume that it cost this bank $8.5 - $17 million to upgrade their system? And, granted it is a small price to pay considering the amount that is being spent at other institutions, how long did it take them to do so? It couldn't have been just a one shot operation. And when I was reading your chapter "Year 2000 impact on banking/finance" pages 113-116 talk about program instructions and how the average IT professional can only carry out 20-30 instructions per day. That means that if my assumption is correct (a line of code and a program instruction are synonymous), these 70 programmers linked by Satellite have been so for the past 11 years. Either that or they are super powered and they need to be gotten in touch with to be shared with the other parts of the industry as well as other industries. I know you spoke about lines of code in your book but I can't seem to locate where you discuss it. So please help me understand what exactly is a line of code, what exactly is a program instruction, and when faced with millions of lines of code in a computer's portfolio, how much actually manually has to be looked at or are there automated systems that help check the system? Thank you in advance for your response. Aaron Sherman ghoati@aol,com
-- Aaron Sherman (firstname.lastname@example.org), November 16, 1998
8.5 million lines of code......
An average programmer can handle 100,000 lines of code per year.
With 70 people working on it, based on those numbers it would have taken them about 14 months full time to complete the job.
-- Craig (email@example.com), November 16, 1998.
I think part of the confusion may be between how many lines of new debugged code a programmer can generate in a day (the 20-30 lines you quote), and how many lines of code a programmer could review looking for possible Y2k errors. Depending on the type of application, the number of lines of code that contain date arithmetic might be as low as 1%. Therefore, a programmer could scan several hundred lines in a day to find only a very few that needed remediation. And yes, there are automated means for search for likely problem areas - although I hear that some of these automated systems "leak like sieves". It certainly is reasonable that the cost of 70 people plus equipment and support costs over one to two years could fall into the range of $8.5 to 17 million that you calculate as an assumed budget.
-- Dan Hunt (firstname.lastname@example.org), November 16, 1998.
A lot depends on several other factors, discussed in a number of places. Examples are:
1) Extent to which 4-digit years were used in the code before the effort started. That Canadian insurance company (Mutual of ??) has been using full 4-digit years since the 1970's, so their task was simple -- mostly a matter of making sure it had been done correctly.
2) Degree to which standards had been set and followed. This can't be emphasized enough. It subsumes numerous categores such as coding practices, documentation practices, commenting practices, variable- naming standards, archiving procedures and so on. Reasonable and rigidly followed standards can reduce the task by a factor of up to 100, depending.
A line of code is a logical construct that depends entirely on the language being used. A program instruction (at least to me) refers to one of the elements of the hardwired instruction set known to the CPU. To give some perspective, a single line of C++ code can and often is compiled into thousands of program instructions (and this doesn't count lines of code that do no more than link in huge libraries).
The language chosen represents a lot of tradeoffs, including size and speed of executable module, how easy it is to read and maintain, and how suitable the grammatical contstructs are for the task to be done. Most banking code is written in COBOL, and most embedded system code (at the lowest system level) is written directly in the native instruction set of the microcontroller. Yes, there are C compilers for microcontrollers. These generally produce gawdawful code, but save the programmer about 1 day of learning the 20-40 instructions the microcontroller knows.
The linguistics of this are important, because quite often the fewer the lines of code (to do the same thing), the more difficult it is to find and repair y2k bugs. Highly compressed, multipurpose logic as very difficult to modify without breaking something else.
-- Flint (email@example.com), November 16, 1998.