I was corresponding yesterday with Jock Murphy, a Portland-based photographer, software engineer, and mobile game developer. Jock had read Racing the Beam, and we were talking about the relative differences between the 6502 and the Z80 microprocessors.
This subject led us to different programming practices, a topic Nick and I discuss in RtB in relation to the Atari, but for which many different and weird techniques have existed on different systems at different times. Jock made this observation about his experience of programming over the last 25 years:
I firmly feel the post C++ languages (Java, C#, Python, et al) hurt the academics of the average programmer. Back when compiles and links took an interminable time to run; most of the people I know would read the API guides of our OS looking for new things to exploit, or read books on software. I probably read Threaded Interpreted Languages, and The Mouse Programming Language four or five times in 1987 alone (not to mention Programming Pearls and the other greats).
In other words, the weird, accidental material conditions of the practice of software development have an impact on the sort of practice it facilitates. For example, the separations created by long compiles created invitations to pursue other practices… but since software engineers are still tied to their desks, more or less, and since they once didn’t have all the Internet to peruse or gossip upon, a relationship with reading was a natural thing to develop. I’m sure not everyone chose to pursue the craft practice of programming like Jock did, but I bet a great many were already thinking about algorithm design and performance optimization and the like, and the everyday routine of software development facilitated that sort of knowledge development.
The point isn’t nostalgia, that things were better in simpler times, but that the conditions we create (deliberately or accidentally) for and around the practices we pursue have a tremendous influence on the ways we carry out those practices. In the case of computer programming in particular, the apparent benefits of speed, efficiency, accessibility, and other seemingly “obvious” positive virtues of technical innovation also hide lost virtues, which of course we then fail to see.