The Joel on Software Discussion Group (CLOSED)

A place to discuss Joel on Software. Now closed.

This community works best when people use their real names. Please register for a free account.

Other Groups:
Joel on Software
Business of Software
Design of Software (CLOSED)
.NET Questions (CLOSED)
TechInterview.org
CityDesk
FogBugz
Fog Creek Copilot


The Old Forum


Your hosts:
Albert D. Kallal
Li-Fan Chen
Stephen Jones

Productivity improvements (back in the day)

Don't tell an old-timer about improving productivity by switching to the latest language of the day, or some spiffy new IDE tools. That's not a big improvement, it's a mere blip on the screen compared to what we've seen already. Why, back in the day...

There was no email. If you wanted to get a message to anyone, you walked over and popped your head in his office or you called him on the phone or hand-wrote a little memo and tossed it into the company mail bin. Mail pickup and delivery was twice a day, so you could be fairly certain your associate had your note within 24 hours. Unless he was out of town, then 2 to 4 days maybe.

For more formal correspondence, you would write a letter on official company letterhead. The engineer you wrote to might have been sitting 3 feet away, but for legal reasons there needed to be that paper trail. You'd hand-write the letter and drop it in the secretary's in-box. Depending on what was on her agenda she'd return the first draft in 10 minutes or a couple days. You always tried your best to be on good terms with the secretary. Flirting was a wise business practice. Heaven help you if you got on her bad side. Your work would never get done right. After you reviewed the draft, made a correction or two, she'd retype the whole thing again and return it for approval. You'd either make more edits or sign it. She'd put it in the company mail bin to the addressee and whoever else was marked for copies and also place it in your official letter book. Anywhere from a day to a week might have elapsed since you started the process.

Software was all on punched cards. Stacks and stacks and drawer after drawer full of cardboard cards. You wrote your program by hand on large sheets 80 columns wide where each line represented a punched card. Then you trudged down to the keypunch room to have the code typed on those precious cards. The room was a gridwork of machines five across and seven deep, staffed by young women who absolutely hated every moment of their day and brooded over why they couldn't have the cushy secretary jobs. It was terribly noisy and terribly boring and the supervisor stood over them like a slaver on a Roman Galley. It was doubly important to flirt with the keypunch girls. You'd try to make eye contact with as many as you could when you entered the room, but the mother superior glared at any who glanced back in your direction. If you were in good with a couple of the keypunchers, they might find a way to sneak your job off the bottom of the stack. The turnaround on card punching was another day at least but could be a week.


Woe to those who dropped a box of cards and got them out of order. If they didn't have sequence numbers, they couldn't be properly sorted mechanically and you'd have to spend hours putting them back together. Sometimes there was paper tape but that was a bit too advanced for most of our remote entry terminals. The input method we used was called Marge. The job entry terminal was a big room full of card readers, tape readers, printers and plotters and Marge, the data entry clerk, blocking entry to all but the anointed priesthood. You didn't flirt with Marge. Marge controlled your life even more than the secretary and she wielded her power with an iron fist.


Marge just loaded the cards in the reader and pushed a button, so they'd better be set up properly or you were back to the end of the queue. You had to have a set of job control cards preceding your program deck that told the system to load the compiler and if you were brave to link and run the program immediately. But usually this was two separate job submissions. You were better off doing the compile/link deck until it had no more errors before trying to run anything. A program run failure caused Marge to sneer and give you the evil eye.


So let's assume you got all the way through a program link. You'd spent at least a week getting this far on even the most trivial program and every source code change you made was going to cost from 2 to 8 hours. So the program run with a graceful exit was almost fait accompli itself. Who cared if it ran correctly, it ran and that was a big deal all on it's own.


Now, we didn't have a whole lot of memory to play with on those old mainframes. In time sharing Fortran you could have up to about 8K, that's kilo, not mega or giga, just 8,000 bytes, so you needed to think real hard about how big of an array you wanted to create. That's why the old programs even had one and two character variable names because the code size mattered too. That's not even scratching the surface because CPU cycles were just as precious and there were hundreds of tricks of the trade to save CPU cycles. Do you know why it's so important to do X+X instead of 2*X or better yet X*X instead of X^2? Never mind, it doesn't matter any more. Instead of timesharing mode, batch runs submitted through Marge had a 32K limit but never more than that. That's where tricks like program overlays and offline storage came in.


I'll give a huge bonus of 20,000 game points to anyone under the age of 40 who has ever heard of program overlays and can describe what it means. Hah, no takers I see. Go ahead, look it up on the web, you'll find a few publications from the 60's. That's where you would have a main program who's function was merely to swap in and out other program sections in the same memory space. The only thing the overlays had in common was a defined data block. This still exists in the Fortran specs as the common block. People today shun it at all costs but ye olde timers know how to use it and still may.

But suppose the program data requirements went beyond the available memory? Well, there were tape drives. I'm sure you've seen old movies where the computer room was filled with bank upon bank of tape reels spinning and reversing and spinning some more. That's where all the other Marges were kept busy. The computer center used to be staffed 24x7 with operators who ran back and forth feeding the tape drives. Your program would have to do some calculations and save the output to a tape, overlay the sub-program with the next computation unit and read that information back off the tape, maybe saving it, maybe overwriting it, and sometimes crashing due to the unreliability of tape reels. A computationally large program might use as many as 6 tape reels simultaneously.

Of course when you think about that, the effort to try to save a few CPU cycles seems fruitless, but it was not. These things all added up. Why would it matter, you say, whether the computational part took 10 seconds or 20 seconds when the next operation, tape read and write could take 3 minutes? Because you paid for every CPU second and waiting in the tape cue was a lower cost. The company mainframes with their huge staffs had to pay their own way in the corporation, so they had to charge for their services. It was all internal charges and no real money changed hands but the accounting was necessary to see whether it was being managed well or not. Cut to the chase, it was not, but that all changed in the 80s anyway. So on top of everything else your office had a computing budget to watch and toward the end of the fiscal year you were at risk of not being able to use the mainframe for fear of overrunning your budget.


Graphics? What can I say, paper was the only medium for graphics. You had no video, no CRT display. You had a big flatbed Calcomp pen plotter, or maybe a small one. The small one was the size of your kitchen table. The big one, well it was more like the size of a competition billiards table. It was an off line device, meaning your program had to generate a plot command tape in the Calcomp format and the tape had to be labeled and shipped over to Marge and she had to load it and press yet another button. Another day delay at least. It was fun to see the expression on her face when you got your scale factor wrong and it drew out a postage stamp sized picture on a 3 by 4 foot sheet of paper. Marge lived for days like that just so she could ridicule another dumbass engineer.


So don't talk about productivity to an old timer. We've gone through several orders of magnitude improvement in productivity. You might think it's a wonder anything got done at all back in the day. In terms of what did get done, it was trivial when you think back on it, but that was as advanced as it got. If you ask the old timers in your company about it, they won't tell you they miss it at all, except for the flirting maybe. We don't even have secretaries any more. There's no such thing as a keypuncher and Marge, she retired a long time ago. I think she was replaced by a program manager or something.
SumoRunner
Thursday, February 01, 2007
 
 
I'm old enough to remember vacuum tubes. Not the electrical variety, but physical email, haha!! For anyone that doesn't know that technical wonder, a network of plastic piping that allowed you to send a paper message in a cartridge to someone in another office. Those were the days...
Bluebeard
Thursday, February 01, 2007
 
 
>> We don't even have secretaries any more. <<

When I got my first job out of college, mom asked me if I had to share a secretary, or if I had my own.  I had to explain to her that the days of secretaries who would take steno notes & fetch coffee were long gone.

BTW, people under 40 might have heard about overlays, if they worked on some of the early versions of DOS with tools like Clipper.
xampl
Thursday, February 01, 2007
 
 
I'm under 40 and I remember program overlays... back in the mid-80s, trying to run a BBS on a Commodore 64. The BBS software, written in BASIC of course, had quite a few lines with nothing but line numbers and separators (:). Into that blank space we'd load the message subsystem, the email subsystem, etc. The machine only had 38 KB of usable memory, with an extra 4 KB that you could use for machine language. I'd like to think I'm a better programmer for having worked in those conditions...
jalbert Send private email
Thursday, February 01, 2007
 
 
Ah, Sumo, thanks for the memories.

Yes, Brooks was talking about, in no Silver Bullet, "an order of magnitude increase in productivity IN THE NEXT 10 YEARS".  And he wrote that in 1986.

It was republished in 1995, in the 20th anniversary edition of The Mythical Man Month (MUCH better than the 1975 version by the way) along with a chapter "No Silver Bullet -- Refired" which analyzed the prediction and the results.

So yes, there's been HUGE productivity improvements since the batch card and paper tape days (ending around 1975, actually).  But productivity improvements since 1986 have kind of leveled off.  Visual Studio and Auto Completion has made some gains -- but the Visual Studio IDE has been basically complete since VS5 in 1997.  OO has NOT brought the kind of re-use and leverage of other people's efforts that were promised for it.

The Eclipse platform, with all those plug-ins, has made productivity gains too.  But you'll still find Unix guru's using "vi" happily and productively.

So there's still a dissatisfaction that software productivity hasn't followed the hardware price-performance curve.  For me, that's not a problem with software productivity, I think the hardware price-performance curve is unique.

But thanks again for the memories, it really took me back.  To 1974 or so.
AllanL5
Thursday, February 01, 2007
 
 
Great story! Thanks for writing that.

Did it blow your mind when you saw your first line editor?
Grant Send private email
Thursday, February 01, 2007
 
 
I remember punch cards. We used to use them as scratch paper in elementary school.
dev1
Thursday, February 01, 2007
 
 
Get back to me in 20yrs and I'll betcha our work flow sounds as absurd as the story in the original post.

When my unborn son graduates high school, I'll tell him how back in the day when we wanted a custom way to manage data companies had to hire special people known as programmers to make a program.  They had to type cryptic text commands into something called the IDE and that a computer was a box you had to plug into the wall and would sometimes reboot randomly loosing all your work.
TravisO Send private email
Thursday, February 01, 2007
 
 
Grant said,
"Did it blow your mind when you saw your first line editor?"

Gotcha, you just dated yourself!
TravisO Send private email
Thursday, February 01, 2007
 
 
Back about 1989 I was talking with a woman who had been selected for programmer training back in the day, which I take to mean between 1960 and 1965. To impress the passers by of Manhattan with the cool, high tech tapes, the big company for which she worked had its machine room visible from the street. This meant that it wasn't just Marge who could see when you made an error and the program abended, it was any old body on the sidewalk.

I recall punch cards as useful for removing snow from windshields (not, of course, if you were going to use them again), but not really up to ice.

Next time: what happens when the fire department soaks down your paper tapes....
George Jansen Send private email
Thursday, February 01, 2007
 
 
... it was the summer of '69 ...

... I wrote my first code, Fortran, punched cards, ...

... suddenly a whole magical world appeared before my 16 year old eyes ...

Oops, I think I just revealed my age...
Mike S Send private email
Thursday, February 01, 2007
 
 
Travis,

Nope, not that old.  Having to proofread thousands of DATA statements to get that first checksum program in COMPUTE to work is about as old-school as I can get.  I didn't even realize it was generating Hex codes at the time.
Grant Send private email
Thursday, February 01, 2007
 
 
Shades of Monty Python:

http://www.greenspun.com/bboard/q-and-a-fetch-msg.tcl?msg_id=003KZC

I am sure that Verity Stob has probably done something similar. One of her best that I could find:

http://www.theregister.co.uk/2002/01/20/borlands_dead_c_scrolls/
Robert Cowham Send private email
Thursday, February 01, 2007
 
 
Forgot this one:

The history of ComputingL 8086 and all that
http://www.ddj.com/184410313
Robert Cowham Send private email
Thursday, February 01, 2007
 
 
Great post SumoRunner!
Nick Hebb Send private email
Thursday, February 01, 2007
 
 
I sometimes wonder how I ever managed to program with a 80x24 VT-100 terminal.  These days I have about a dozen or more windows open on my monitor.  11x14 computer paper listings helped.
EMF
Thursday, February 01, 2007
 
 
Overlays were made use of right throughout the '80s. I'm early thirties and spent plenty of time back them making use of them.

Also, paying for CPU usage on mainframes hasn't changed since then either. I'm sure the actual amount has, hopefully! But the principle's just the same.
K
Thursday, February 01, 2007
 
 
" But you'll still find Unix guru's using "vi" happily and productively."

No, we all use VIM now, but I can lapse back into plain vi without even thinking about it. Oh, how many times I still hit Esc or / while in TextPad I can't even count.

" Did it blow your mind when you saw your first line editor?"

It still lives on with sed scripts, almost the same syntax. I have a few lines in my product nightly batch builds that do line editing.

" To impress the passers by of Manhattan with the cool, high tech tapes, the big company for which she worked had its machine room visible from the street."

I had a boss in the mid 80s that still wanted to do that. The computer room was right off the main entrance. We built a glass wall so visitors would be impressed by our Vax systems on the way in. It was a letdown when he saw it had only one tape drive and not enough blinky lights. Being the system manager / system programmer / system operator / chief cook and bottle washer, I was less than thrilled to sit in a fish bowl.

Well I guess overlays laster longer than I remembered. Last time I did them was about 1981 on a Z80 with CP/M.
SumoRunner
Thursday, February 01, 2007
 
 
So many memories. We used overlays heavily with PL/M-80 on CP/M. This was a version of PL/1 that the Digital Research (Gary Kildall) folks wrote. It was one of the few *high level* programming languages around for CP/M other than Basic.

Our first commercial software was written using PL/M. The users had 8080 or Z80 boxes with 8" Floppy Disk Drives. We'd spend countless hours juggling overlays trying to squeeze all the code in.
Neville Franks Send private email
Thursday, February 01, 2007
 
 
"I'll give a huge bonus of 20,000 game points to anyone under the age of 40 who has ever heard of program overlays and can describe what it means."

I have used this technique many times on my Atari 800.
39 year old
Friday, February 02, 2007
 
 
PocketSoft had made a fine product called .RTLink that you could use to split up your MS-DOS program into a main block and several overlays that were automatically swapped in & out of memory as needed.  As a way to get around the 640 KB boundary, you see.

PocketSoft is still around, they're making the popular .RTPatch program, but .RTLink is no more...
Chris Nahr Send private email
Friday, February 02, 2007
 
 
" PL/M-80 on CP/M. This was a version of PL/1 that the Digital Research (Gary Kildall) folks wrote. It was one of the few *high level* programming languages around for CP/M"

I had a Fortran IV compiler for it. I can't recall where I got it from. Otherwise I used 8080 asm. I wrote an ftp program in 8080 asm and published the source and docs. The company librarian said it was the most requested title she had in years.

CP/M itself came with the source. The whole OS occupied only 8Kb. Kinda like Vista, no?


" PocketSoft is still around, they're making the popular .RTPatch"

I still use RTPatch for product updates.
SumoRunner
Friday, February 02, 2007
 
 
Heck, I'm 34 and I 'remember' overlays. We used them when programming the PlayStation (one) in the 90's! (It only has 2M RAM).

Tape drives I only had to use for chip design, and punch cards we used in high school to build a tower in some competition. I'm okay with that.

Ben
Ben St. John Send private email
Friday, February 02, 2007
 
 
I'm sub-40 and recall overlays as well.  However, I have also used, for work, machines that booted from paper tape, and were debugged with leds on the front panel.  In octal. 

Up hill, backwards.  Both ways.

Never had a secretary, though.
Dan Fleet Send private email
Friday, February 02, 2007
 
 
I remember hand-drawing data flow diagrams and giving them to  an admin assistant who redrew them in ink and then typed in all the text labels, so we could present an impressive-looking design document to the client. Wow, she was good! Talk about non-agile though!

I finally threw out my plastic diagramming templates last year when I moved desks. Probably should have sold them on ebay as valuable antiques.
Mike S Send private email
Friday, February 02, 2007
 
 
As a summer intern, I worked on a paper-tape based minicomputer. To write code, you loaded the line editor from paper tape, read in your source code from paper tape, editted it, punched out the changed code, loaded the compiler from paper tape, read in your source code, read in the source again for the compiler second pass, punched out the executable, loaded the executable, read in the input data, found a bug and repeat.
Mike S Send private email
Friday, February 02, 2007
 
 
>> Shades of Monty Python: <<

Oh man.  I've got that album.  On vinyl.
xampl
Friday, February 02, 2007
 
 
Bluebeard > I'm old enough to remember vacuum tubes. Not the electrical variety, but physical email, haha!! For anyone that doesn't know that technical wonder, a network of plastic piping that allowed you to send a paper message in a cartridge to someone in another office. Those were the days...

The Pneumatic Post of Paris
http://www.compulink.co.uk/~mhayhurst/jdhayhurst/pneumatic/book1.html

Pneumatic tube
http://en.wikipedia.org/wiki/Pneumatic_tube
TheFred
Saturday, February 03, 2007
 
 

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics
 
Powered by FogBugz