Saturday, November 08, 2003

According to this article, if you don't know/learn a computer programming language, you're as good as being stuck in the Matrix (that movie is too popular for its own good).

I disagree with the notion that in the future, "the ability to read and write code will be as essential for professionals of every stripe as the ability to read and write a human language is today". I don't quite understand where the author gets this idea from. It strikes me that it would indeed be true if one were to say that the ability to use a computer will become essential in any profession, but not writing code itself. Computers are emerging in nearly everything nowadays, and so familiarity with using a computer seems to be essential.

A professional in any field will of course want to be focussing on the aspects of work that are local to that profession. What a terrible waste if your accountants were to spend weeks on end trying to write a program to do something clever with the employee records. Surely it would make more sense to get someone who's a specialist (a progammer) to do that for you (either through a commercial product, or by getting a custom-made project). At some point you have to identify a boundary, where a task is related to your main goal, but not inherently associated with it.

Statements such as "the gulf between those who understand computers and those who don't will get wider and wider" seem again to be more appropriate if one were to change "understand" to "understand how to operate".

Assume that a person is taught from a young age a programming language, and with time (s)he becomes fluent with it. We first have to consider what "fluent" means in this context. If you define it to mean that (s)he is able to understand the syntax properly and can write code that compiles, then I suppose it is possible to do, with time. But if you consider whether this person can use it properly, you have a problem. Programming is very much something that needs to be learnt from experience. For this hypothetical person to be fluent, (s)he would have to be aware of various design patterns, code cliches, "good" programming principles..it's here that things start to get complicated.

Of course, you might argue that there's no need to make good programmers out of everyone - just make them able to get the job done. But without these good principles, getting the job done gets really hard. And not to mention, once it's done it's probably going to be set in stone, with no hope of anyone else every modifying it.

And let's not forget, programming isn't for everyone. No, really, it isn't. I don't think it's out of a sense of elitism that I say this, but purely from experience. Not many people will have fun spending hours trying to spot a bug that appears in some undetermined section of code. Sure, you might argue that if you follow good programming principles, this should happen rarely, and when it does, it's either not severe or easy to tame. But if programmers - even if they are mediocre ones - can run into such problems, can we really expect the everyday person to be equipped against them?

The argument against Windows seems to suggest that its use of a GUI to hide details from the user are a pitfall rather than a benefit. Sure, if you're talking about programming. Yes, maybe it's impratical to think that I can make any program by working with a GUI alone - at some point I'd imagine it would become necessary to type out code with the keyboard. But there's nothing wrong with hiding details from the user. If you broke down the illusion that the computer "understands" what you say when you click a button in a GUI..well, out goes user-friendliness. Why do I have to be forced to use a command line to do something when it makes more sense for it to be handled graphically? Do I really have to know the intricate details of the program I'm using and the way it works for it to perform a simple task? I think not. However, the author maintains that this is just us choosing "to remain inside the dream world of The Matrix".

It seems that the argument is equivalent to this: since you don't know the internal workings of your electronic devices, you are at their mercy. That because someone else made it and as in control of it, you are automatically out of the loop - the person in control can do whatever they want. Frankly, that comes off as slightly paranoid ("The Windows control us").

No comments: