I came across this blog post on a blog called "Alarming Development" yesterday after spotting it on Digg or Reddit or something - probably Reddit considering what Digg has become, but thats a story for another day.
Anyway - I felt compelled to make a post about this person's thoughts. The general idea of the post is about how programming is currently in the "stone ages". Fair enough - there are probably a lot of ways that programming can be improved, but this guy's ideas are pretty silly.
Now I dont want to belittle this guy at all - some people are great musicians, great artists, or maybe great mathematicians. I dont claim to be a great programmer, but this guy looks like he isn't cut out to be a programmer. Lets have a look at some of his observations:
- "Programming is mentally overwhelming"
- Constant translation between mental models and code
- " We have no agreement on what the problems of programming are"
I think that here, his points 1 and 2 are intrinsically linked - for most programmers, there is little need to construct mental models of what the code means: the code means what the code means - and if its really complicated that is why we have comments to describe what is going on. When you are reading this writing now, do you need to construct some mental model of what I am saying, or are you just reading and understanding it? I dont know who this person is or what his background is, but I really dont think he is really suited for programming if he needs to put in so much mental effort to work out what code is doing. He goes on to say elsewhere that merely using ASCII is totally insufficient to adequately reflect the full semantics required for programming. I'd argue that this point is pretty silly - after all the entire English language can be covered by ASCII - our entire history and scientific and cultural knowledge can be distilled into ASCII if we really wanted, but this guy thinks that it is somehow not enough for programming? As for the 3rd point - well perhaps I agree. I cant say I've done any research into it either way, so I'll let that one slide for now.
Further on into the post he comes up with some ideas and goals about how programming can be improved. Most of them seem to be based around his own personal problem with not being comfortable thinking in an abstract way and how programming should be about usability (seriously - is maths about usability? is biology about usabulity? nuclear physics? Stuff is hard - get over it.), but this one is the real killer for me:
We tend to build code by combining and altering existing pieces of code. Copy & paste is ubiquitous, despite universal condemnation. In terms of clues, this is a smoking gun. I propose to decriminalize copy & paste, and to even elevate it into the central mechanism of programming.
Right. Ok. Copy and Paste the central mechanism of programming eh? Forget variables, assignment, loops etc - its all about Copy and Paste, baby!
But seriously - this guy has clearly missed the whole
reuse mantra drummed into programmers right from the very beginning, particularly one of the main bloody points about object orientated languages. Copy and paste is not ubiquitous - its certainly present but it is far from ubiquitous. Code should be designed to be reused in modules/classes/objects/libraries etc. Do this properly and you dont even need to rely on sloppy and error-prone copy and paste.
The post started loosing credibility right away when it started talking about "reverse engineering code into mental models" (I guess he has never heard of comments) right at the start, by the time it got to the copy paste statement above I started to wonder if it was a troll! It seems like he has got a lot of attention - he seems to think it is a groundswell of support for his way of thinking but I fear that is more likely people just laughing if nothing else. Dont give up the day job mate, unless of course its programming!