Biology insists – and common sense says – that I have started to become the old fogy I laughed at in my youth.
…THE THIRD YORKSHIRE:
Well, of course, it was difficult for us. We used to get up from the shoe box at twelve o’clock at night and lick the road with our tongue. We had two pieces of cold gravel, worked twenty-four hours a day at the mill for sixpence every four years, and when we came home, papa would cut us in two with a bread knife.THE FOURTH YORKSHIRE:
Law. I had to get up at ten o’clock in the morning half an hour before going to bed, drink a cup of sulfuric acid, work twenty-nine hours a day in the mill and pay the owner of the mill for permission to come to work, and when we came home, father and mother would kill us and danced on our graves singing Hallelujah.THE FIRST YORKSHIRE:
And you try to tell today’s youth that… they won’t believe it.
Now that I’m the old, gluttonous software veteran I once feared, I’ve been thinking about how work has changed—definitely for the better—and how today’s engineers (myself included) are incredibly lucky to work with the tools available today.
Image source: “Coding w/ Gedit” by Matrixizationized, licensed under CC BY 2.0
Those older days? Not much to get excited about.
Text editors
Unbeknownst to modern software engineers, prehistoric software engineering had no IDEs to help: no Visual Studio, IntelliJ, VSCode, Eclipse, Atom, nothing. No autocomplete. No syntax checking. No code navigation. No integrated debugging. Hope.
Instead, you wrote the code in (OMG) text editors like vi or emacs or even Windows Notepad (or edlin, when you’re desperate), enhanced by other tools (who’s been running lint from the command line lately?). And much like we discuss IDEs today, we discussed text editors back then. Engineers may be able to adjust the ones that were configurable, but in the end, it’s a damn text editor. Wrap your head around that.
Tab against spaces
How many characters to indent has been hotly debated since the dawn of structured programming—no Fortran fixed positions, thank you very much—but have you ever debated the pros and cons of tab indentation versus spaces? A senior engineer I was working with was adamant that cards speed up compilation times due to fewer bytes and insisted (demanded) that we do the same, IKYN. No supporting information is provided, but whoever speaks the loudest wins.
Hungarian notation
Hungarian notation is a (originally) C/C++ coding convention that helps identify a data type through naming, allowing engineers to infer the underlying data types without digging through the code, e.g. szName
is a zero-terminated string, i usCount
short unsigned integer.
Method names have become overly convoluted because the data types for the return value and each parameter are baked in; for example uiszCountUsersByDomain
accepts a null-terminated string and returns an unsigned integer. When a function accepted more than a trivial number of parameters, its name became unreadable and meaningless, so I usually only included the return type.
As cryptic as it is, the Hungarian notation was very useful in the pre-IDE days and I used it extensively. I am ashamed to admit that I initially applied it to Java, but I quickly realized the mistake.
Code reviews in paper form
It may be hard to believe, but code reviews predate pull requests and your collaboration tools of choice: physical, in-person, paper code reviews. Each engineer printed out the code for review and tagged it: questions, concerns, comments, etc. The code appeared in real time with all the people present in the same room, nothing virtual. The author took sharp notes – remember, no laptops, notebooks, tablets – and returned to his desk to make the agreed-upon changes. Finito.
Single screen monitor
Image source: “Big Old Monitor” by Harry Wood, licensed under CC BY-SA 2.0
Remember those old strums front and center on your desk? Not to mention the incredibly unacceptable screen resolutions. Or how were you limited to using one monitor due to hardware limitations, software limitations, hardware costs, physical space, power consumption, or whatever? Phew!
In my world, there is no such thing as too much screen space: multiple monitors, large screen sizes, higher resolution, virtual workspaces – I want more, more, more! In Dell, I had four monitors (19×12, meh) and four virtual desktops for a total of 16 screens. My home work environment has two 27″ 4K monitors plus my MacBook screen, far superior to what’s available on the rare trips to the office. Even traveling is difficult as I’m limited to my MacBook screen (although I do connect to the hotel TV when possible.) Boy, life is hard!
Primitive networks
Image source: “modem and phone” by BryanAlexande, licensed under CC BY 2.0
Before the acceptance of TCP/IP as the de facto network standard and the universal availability of the Internet, communications between computers were difficult. Companies sometimes set up site- or company-specific LANs, but rarely for external companies (only when necessary and at great expense). Dialup modems were all the rage at home until DSL became available in the late 1990s. Do you realize how exciting 9600 baud can be? No, you don’t!
The first distributed application I worked with had an application on a remote system that automatically selected a modem to connect to the central system, sent data for analysis, downloaded the generated results, and terminated the connection. Slow and efficient, but it worked. . . until someone in Finland flipped the modem switch and now the remote system can’t connect. Weeks of checking phone lines, reviewing log files and reinstalling applications until the modem was checked. oops
And not to forget
What else was there? 8.3 file names. Diskette-based software is installed using manually entered license codes. Blue screens of death that occur regularly (much more intermittent now). Primitive or non-existent security. Microsoft Radio for entertainment while you wait for paid support. There is no open source software: everything is bought or written from scratch. I’m sure there’s more.
[Fortunately, I never wrote COBOL programs with punchcards, though a friend did during her training at Anderson Consulting. And make sure you don’t drop your stack!]
Oh, you kids have it so easy. . . and with that statement I finally became the one the old people warned me about. Damned.