What happens to old programmers? A few events last month prompted me to take the time to think about this rather metaphysical question. One of them was reading Ellen Ullman's Close to the machine: technophilia and its discontent (0-87286-332-8). This is the only novel about the life of a developer that I can think of. Partly autobiographical, it goes a long way to explain to people outside our industry this mysterious activity called software development.
Before you turn to the next page thinking that you're young and this doesn't concern you, let me define what I mean by ‘old’ in my original question. By old programmers I mean developers who have lost their initial enthusiasm. In a way, lost the edge. At the start of your career or hobby (or both for the lucky ones), you look forward to a project involving a language you haven't practised yet, a new technique, the latest tools... That's the time when your CV reads like a list of all possible languages and operating systems:
‘Languages: C, Pascal, Ada, LISP, Forth, Smalltalk, Basic, assemblers 6809, 68000 and 80x86, AWK, C++, notions of PL/1.
Operating systems: Multics, Unix, OS/2, MS-DOS, CP/M, Flex 9, notions of VMS.’
(This is not an invented list, I've taken it straight from one of my first CVs – the OSs list shows its date. It even listed, in addition, some GUIs and telecommunications experience!)
That's where clichés enter the picture. It is the time when we fit the more positive meanings of terms such as geeks or hackers. It's amazing how many negative connotations are also associated with these terms. Yes we're ‘close to the machine’, but we are fully involved in a pure creative intellectual act: writing software. And no other creative activity gets so much criticism. As when people move to a different country and start to think and dream in a newly mastered language, so we dream in C++, Lisp, or Delphi. This explains the occasional difficulty in human relationships!
Then at some point, which could be just a few months or a few years or even decades later, you become wary of all the novelty. You only want to get involved in projects based on tried and tested methods. You start querying whether new technologies have proved themselves and whether they represent an advance. That's the time when you get alienated by the commercial pressures that interfere with the pure enjoyment of coding.
I'm talking about the switch from when writing software gives you a buzz, a sort of high, to when it just becomes a job.
Some developers become journalists. I'm not the only one. In journalism you can still have the buzz given by the creative act of writing. Of course, you are close to ‘news’ all the time, and in the technical press you preview new technologies regularly. But you don't have the time to immerse yourself in any particular technology; you've got to move on to the next issue. In a way, it is very frustrating. You've got to lose some enthusiasm or otherwise you would never finish any article or magazine issue. Most of the languages mentioned above are now just happy memories.
Some become software managers with the emphasis on the latter term. It can be a slow transition. At the beginning, maybe you're still quite involved in the projects, writing some code. And then one day you realise that most of your time is spent in meetings.
Some, of course, become (old) software programmers. This is not pejorative. We need developers to maintain applications. Our survey, last month, indicated that the majority of our readers rate software reliability as the important quality and most shy away from beta software. Are most EXE readers old developers? And as Jules writes in Mayhem: ‘[technology] has to be good, but not great, [...] designers must resist the temptation to keep messing with it – at least until all its users think of it as mundane.’
And I'm sure a few developers quit the industry altogether for the dream of a self-sufficient life out in the countryside, maybe somewhere in the Scottish Mountains...
Why do many of us move on from this once ideal world of pure software development, where we hacked code and used the latest language manual for bedtime reading, to a more removed situation? For the majority of us, it is definitely not because we didn't enjoy it fully. One of the most common reasons is probably that we enjoyed it too much and got frustrated by the external pressures creeping in. It is gradual. We spend more time maintaining boring applications, more time in meetings. Companies force us to release imperfect code because of financial pressures. Commercial imperatives make otherwise great software fail to reach its potential.
Suddenly we realise we do very little of what we really like, ie just write code.
And then of course, there's the new generation, enthusiastic, fully familiar with the latest developments, ready to take our current or previous job. Software development is still in its infancy as an industry, so it keeps moving the goalposts fast, and keeping up is exhausting.
Am I nostalgic for this perfect time? Definitely. Could I do it all over again today? I'm not so sure. Am I happy to have moved on? Difficult to answer. It has left its mark on me. Being close to people, as opposed to machines, can be fantastic too, but finding friends with an understanding of geeks (for lack of a better term) is not easy.
(C)1998, Centaur Communications Ltd. Reproduced with the kind permission of EXE Magazine.