Possibility and Probability

A Python programmer with a personality thinking about space exploration

4 January 2006

More thoughts on being a better programmer

by Nick

Ned Batchelder’s site is always a good read, he’s very insightful about the art of programming. When I saw his posting that Joel Spolsky is a crotchety old man, I couldn’t wait to see what his thoughts where. When I wrote about Joel’s article I was feeling a little bit down, Joel pointed out something that I knew deep down, namely that programmers today (i.e. me) aren’t quite the same as programmers from yesteryear. Java and other “layers of abstraction” have taken us away to a weird place. Its almost like you don’t have to think as hard to be a programmer today. Ned pointed out that this isn’t 100% true, its more like you don’t have to think the way you used to. He points out that assembly language and a good knowledge of the inner workings of the computer were necessary to perform the job role of a programmer. These days, a lot of schools aren’t really teaching assembly, and using it in a day-to-day job is becoming rarer and rarer. Is this “loss of knowledge” really a sign of how bad things have become? Not necessarily. A lot of systems and languages these days go to great lengths to hide the implementation details of the underlying hardware from the developer. Java springs to mind as an example of this. A Java developer doesn’t need to understand what the value in the IP register is. BUT… if the Java developer does understand how a computer works at a low level, then they probably would have a better insight into performance issues, threading, and other dark corners of computer science. After thinking about both articles I’m starting to think that while they both have a good point, Ned is really onto something. Perhaps what the computer scientists/developers/programmers of today are missing is the understanding of the computing machinery. I know when I recently took a computer architecture class, I found it very enlightening and I haven’t really looked at any programming language the same since.