Simo Virokannas

Writings and ramblings

The Three-Axis Problem

Generation X, Gen-Y (or millennials), Gen-Z. These are terms we use in everyday language to categorize the last three generations that form the majority of global workforce. What are they? Where did the labels come from? Why is this article amidst software development articles?

First, investigating these labels, or boxes people are put in, can help understand the thought processes that influence their actions. And second, in software development, there’s an interesting phenomenon stemming from these generational differences.

X

Generation X generally consists of people born between 1965 and 1980. None of these year ranges are exact, several other factors contribute to which generation an individual identifies with – for example, they may be the youngest child in a family where all other children have been born before the 80s.

This is the generation that grew up after computers were invented, but well before Internet.

A typical household purchased a personal computer during their childhood. It was new, beige, simple, and shipped with a BASIC interpreter.

There was a general understanding of the what a computer is, and what the different components were. This was partly due to them being physically separate, with beige wires between them, labels on the ports denoting “KEYBOARD” or “JOYSTICK”, later even “MOUSE”. Output was to a TV either through a composite cable or a modulator to include the computer as a channel. It was as clear as being able to tell that the wheels on a bicycle are a separate part, or that electricity comes to a house through wires and you can turn on a hair dryer only after plugging it in to a wall socket.

The thought pattern that instinctively formed was this: If I, the user, press a key on my keyboard, this is relayed to the computer. It makes something happen, and that goes through the wire to the TV. I must give commands to the computer using the keyboard, and it will execute them. For some reason, LOAD"*",8,1 loads the first program on the floppy, which I can then RUN.

Almost every kid who grew up in the 80s understood these concepts. Happily, not all of them became software developers – but at some point, many Gen-X’ers wrote and executed a program.

Y

Generation Y, or millennials as they may be affectionately called, were generally born between 1981 and 1996. In their lifetime, IBM PC became a standard. At the point where most of them started being interested in computers, their world (and everyone else’s) was revolutionized by the sudden explosion of Internet. No one had an idea how fundamental effect it would have on everything. Then everyone got a cell phone. Then the smartphone. Computers got multiple cores.

Millennials learned the thought model of everything can change at the drop of a hat: don’t get too used to anything, the only way to survive in the information age is to adapt.

Z

The Generation Z were born after the mid-90s, into a different world.

Gen-Z’ers have always had a magical pocket monolith that communicates with the whole planet. As consultant and software developer Dylan Beattie once said, “humanity had captured lightning inside a rock and made it think”.

Virtual three-dimensional worlds exist. All questions have an immediate answer. There are existing practical applications of artificial neural networks. You can ask the magical pocket monolith to describe a digital elephant in the style of Dr. Seuss and it will do it.

Handoff

X started developing using BASIC, then perhaps some assembly, C, Pascal. They were always working close to the hardware. It was easier when the hardware didn’t go through a complete overhaul every 6 months.

Ironically, the term “Generation X” in modern use was popularized by Douglas Coupland, a Canadian author. He himself was tired of being labeled as a “Baby Boomer”. He took the name of Billy Idol’s breakthrough band and created a new label, Generation X, meaning something unknown, not wanting to be defined by a category. Later, others gave it a definition and age bracket, a box was created, letters started going up from X, overflowing to the Greek alphabet.

A self-proclaimed X’er, he wrote an influential book in 1995: Microserfs.

The book, in addition to predicting the dot-com bubble, describes a novel, fictional way of programming – where a developer simply connects pre-made, Lego-like elements to each other to build out complex program logic.

Modern operating systems have either been written or are currently maintained by X’s. The same generation created most of the “modern” programming languages frameworks. The thought of the existing connection between components is strong with Generation X. This is in no small part due to having to physically connect components to make a computer work. At the same time, these were the people who felt both the pain points and the joys of building things from scratch.

They then made the tools that were handed over to the next generation, Y.

Y learned development using objects, Visual Basic, Visual C++, integrated debugging, virtualization and hardware emulators. Often times, these are taken for granted, as if they’ve always been there, and despite the label, the question “why” is rarely asked. Why does something work as it does? Why does writing to the disk take a millisecond once, ten the next time?

Y started off with several megabytes of RAM, moving on to thousands. Why would you need to care about memory management?

The tools given by X to the Y enabled them to rapidly adapt to new languages, frameworks and technologies. Then, they built on top of those, and just as the dot-com bubble eventually happened, together X and Y created the tools described in Microserfs.

Great, right?

Disconnect

This is not referring to the technology-induced disconnect from real life new generations may be experiencing.

Generation Z, who have a magical pocket monolith that communicates with the whole planet, also have the most powerful tools for software development ever imagined. Meanwhile, there’s no consistent way for them to gain experience or knowledge about the underlying mechanics. The disconnect between writing code and things happening on a computer is growing bigger every year.

This disconnect is also leading to disparity. As it’s easier to create new tools, it also means some of those tools are designed for development. And when it’s possible to browse through a hundred tools to find one that does exactly what you need, you’re less likely to figure out how any of them work.

What happens if the knowledge gap isn’t closed before all of X retire? Are we heading deeper into a digital dark age?

Hope

Speaking of art, this 25-foot sculpture in Vancouver is “Digital Orca” by Douglas Coupland. I took this photo in 2018 and it wasn’t until writing this article that I realized this is the same Douglas who coined the modern use of term Generation X and wrote Microserfs.

In a life imitating art way, the Internet Archive already started its mission to preserve information from corruption and disappearance, the same way the Foundation did in Asimov’s fiction of imagined future history.

There are also some publications that refreshingly stand out from the mainstream. One of such is the series of books by Usborne, targeted to children but I find myself recommending them to anyone who wants to learn programming no matter what their age is.

There are also sites that let you experience programming in the 80s way:

  • 8-bit Workshop, an amazing tool that lets you write machine code for several 80s platforms
  • Retrocoding has in-depth articles on how previous platform iterations worked, and even some examples on how to write assembly code on modern operating systems
  • Retro-programming.com is geared towards Commodore 64 and Amiga enthusiasts, but they’re both good platforms to learn programming close to the hardware

And – you can always find on eBay an old used PC or Amiga that still works, or get the A500 mini. Even if you’ve got years of development experience, it might be a good idea to jump into one for a day and discover how easy it was to create something useful in the early 90s.


Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.