It’s a Hell of a Town

In recent years, though I still record an album or two a year, I’ve spent most of my working hours as a software engineer. Most of my code is written in the “object-oriented” language C++, and is designed to run on the Windows operating system.

I took up this arcane profession just at the beginning of the new millennium, in response to the precipitous decline of the recording industry in the late 1990’s. Given that software engineering is well suited to the solitary brooder, I thought it was something I’d be good at — I’d always had a flair for logic and math, and had spent my working life to date in a highly technical field — but getting up to a professional level in advanced C++ programming was no small challenge for a doddering geezer of 45. At my first job in my new career, surrounded by dauntingly sharp-witted experts half my age, and still adjusting to my change in status from globetrotting recording-studio Big Shot to middle-aged nobody, I felt as if I were pulling onto the Autobahn in a fully-loaded 1967 VW microbus.

One of the reasons that Windows programming is so overwhelming at first is the enormous size of the world you are entering. The C and C++ languages in which Windows is written are a large and complex system all by themselves, but the Windows operating system is more than that; it’s more like a big, bustling city. First of all, it is truly vast: the Windows XP source files are said to contain over forty million lines of code. But the resemblance goes much deeper. In the same way that a city has districts, consisting of neighborhoods, which in turn are made up of buildings, which themselves are built of different sorts of materials, Windows likewise is divided into major functional areas, written by different teams of programmers — and these different areas of the operating system are themselves enormously complex subsystems, full of alleys and byways, with little code modules standing next to large imposing edifices. There are vehicles, too: the way information is passed around inside Windows involves a variety of messenger structures, and just learning to “hail a cab” in the right way is itself a tricky business. The different neighborhoods have their own local flavors and accents, too, and to get by in one you have to do things a little differently from the way you would conduct yourself in another part of town.

But what reminds me the most of a big city is the way a codebase as huge as Windows reveals its historical, accretionary past. I remember taking a walking tour of London as a boy with my Scottish grandfather, an amateur historian who had lived in London for much of his life. He took me into old buildings – many of them churches – in which the upper parts of the structure were several hundred years old, the lower stories dated back to medieval times, and the foundations had been laid by the Romans. Obviously the timescale is greatly compressed here, but the idea is the same; most of Windows is newer code built on much older foundations (some dating back to the middle 1980’s, the software equivalent of the Bronze Age), and much of it was built by engineers whose names and individual contributions are long ago forgotten.

Finally, just like life in a great metropolis, one has favorite haunts and familiar destinations, but there is nobody who knows it all; we all simply find our way around as the need arises.

But like most of the millions of people who have come from all over the world to make their way here in Gotham, and find its sheer scale overwhelming at first, I’ve settled in quite comfortably in my new world as well. After six years, I’m even starting to think of myself as one of the locals.

2 Comments

  1. Malcolm, that’s one hell of a resume you linked to. I had no idea.

    Posted April 7, 2007 at 6:34 pm | Permalink
  2. Malcolm says

    Why, thanks, Dennis. I don’t do a whole lot of it these days, but yes, I was right in the thick of things for quite a while.

    Posted April 7, 2007 at 7:49 pm | Permalink

Post a Comment

Your email is never shared. Required fields are marked *

*
*