Everything Old is New Again (in Programming)
by Neil Roberts in Technology, 13 August 2010
You’re going to have to start over.
I’m part of a generation of programmers that was brought up with the promise of Write once, run everywhere. Colleges created computer science programs we assumed would teach us everything we needed to know; that we would never have to learn anything beyond what we got during our time there. We looked at the simple text-based applications of the past as being below us. We had every tool we needed to become the best programmers ever. It’s unfortunate that we view the programmers of the past with such disregard.

Early programmers were brilliant; they had massive technology constraints and had to know the tiniest details of the environments they were coding in. Every day, we use the technologies they created. The programs they wrote are still performing mission-critical operations decades after they were first written. Dreaming in Code, a book about the problems of programming, begins by introducing a real-life example of one of these aging but reliable programs.
In the classes I teach involving web technology, I find myself having to defend some of the features I explain are already part of the technologies they use every day. Students don’t believe me when I explain that GET and POST in HTML forms are meaningful verbs, that caching is done through HTTP headers, or that JavaScript isn’t the only language that allows first-class functions. Most of the time, the way I defend myself is by explaining how old many of these ideas are. JavaScript, for example, borrows ideas from Scheme and Self and the weird things we do with JavaScript can be traced all the way back to Lambda calculus (which is really old).
My generation has been very lucky. Computers are fast. The low-level work has been abstracted for us. We have tools that let us know when our program is written incorrectly. People have become used to waiting while our programs pop up little spinners and progress bars. It’s no wonder that if you begin looking for articles about bad programmers, you’ll find that many of them were written around the time my generation was completing its college education.
A few technology companies have started making programmers look bad. Many mobile phone applications expected to react instantaneously when the screen is touched. Users visiting our websites expect to be able to perform many tasks without having to wait for the page to reload every time they click something. But instead of accepting these expectations, we complain about how much more work we need to do in order to make our programs function the way they should have in the first place.
If we’re serious about fixing our attitude, we will start to find that the new tools we have are incredibly similar to the tools that existed years ago that we never bothered to learn about. We never learned manual memory management because computers were powerful enough to do it for us. Then we started using mobile phones and computers weren’t as powerful anymore. We only learned one way of doing programming because we hoped it would become the one true language. Then we realized it was poorly suited to all but the most structured tasks. We never bothered learning about how web servers were designed to work because we thought everything would just be a file being shown on a monitor on a computer desk. Then users expected to be able to interact with a web page, view the data in a native mobile application, or access their data from a different web site.
The changes we are experiencing right now show that the advances in technology aren’t linear. This shift is moving backward and reincorporating the ideas of a generation before us. There will be many more. Some changes will use what we already know in new and interesting ways. Other changes will be totally sideways. If you intend to continue programming for years to come, at some point you’re going to have to start over.
Tweet

Neil,
Well written article. I am impressed that a young man understands the past does help the present and the future.
keep up the great job!
julie, 13 August, 06:51 PM