Professor Bush

So I was thinking about my last post where I listed the name of numerous people who were forced out of their jobs for the crime of disagreeing with the the White House junta's policies. These people, as I noted earlier, were generally career military, diplomats, or other government officials. Their jobs routinely entailed that they support and defend policies which they might not agree with. That our administration has gone so far as to alienate them says a lot about how extreme many view White House policies.

Who reads what I write? Most of us are programmers, bank tellers, baristas, waitstaff, book sellers and maybe a hooker or two. If we screw up -- give someone the wrong change, forget their order, give them herpes -- the world does not recoil in horror. People do not die if my boss gives me bad specifications. I cannot even begin to imagine the awesome weight of responsibility on the shoulders of the brave women and men who serve our country.

And this is why, after Bush leaves office, I think he should be a college professor. One time I was frustrated trying to write some code in C when I realized I wanted to take a class in the language and learn in a structured environment. So I called up a local college after failing to find a class teaching the C language and someone who introduced himself as the head of the computer science department informed me that they do not teach C. Seems it's an obsolete language and object-oriented programming is the future.

Oh really?

This guy lives in an ivory tower and is presuming to know what my work in the trenches is like. This is why I am so careful about hiring people fresh out of college. Some of them are great but others have lofty ideals about how things are supposed to be and those charming little ideals get eaten for breakfast when you're faced with budget constraints, tight deadlines, incomplete or incorrect specifications.

In the case of this professor's comments, just about any programmer whose been around for a few years and worked in a few languages (particularly languages in multiple programming paradigms) can tell you two things:

  1. C is not obsolete
  2. Object oriented programming is not the future

(Side note: The latter assertion may be a bit more controversial to programmers who only know C++ or Java, two partially object-oriented languages. However, once you've worked with functional or logic-oriented languages, you realize that there are problems that are very difficult to solve with OO code but are trivial with a little dash of the lambda or first-order calculi.)

So how did this professor get this so horribly wrong? It's simple, really. His primary goal is to teach students. He also has to keep abreast of the latest research in his field and those latest changes typically don't involve things such as switching from a quick sort to a merge sort at the bottom of nested loops in C.

Programmers in the field have different goals. We have to deliver software to our customers. Sometimes we keep abreast of cutting edge research in our fields but we're probably more interested in new tools in our field which will actually make our lives easier -- not esoteric discussions about traits versus Java interfaces. After a while we learn to use these tools when it's clearly practical to do so. If a programmer's boss hears about a great new "XML database", the programmer is right to be sceptical.

And that's what's going on in the White House. Rumsfeld, Cheney, Wolfowitz and others seem to be locked in an ivory tower. They have this nifty theory that if we kill enough of the right (or wrong) people, the world will be a better place. Unfortunately, those in the field who have honest, practical experience keep telling them that they're wrong but the White House doesn't listen. The White House claims that we're winning in Iraq when the Pentagon says we're not. Ask yourself why several military lawyers requested reassignment away from Guatanamo because they knew that ignoring the prisoner's basic rights was wrong. Ask yourself why L. Paul Bremer, a man with no military experience, thought it was a good idea to turn the entire Iraqi army into unemployed men with guns -- a move that helped fuel the insurgency though the people working with him tried to get him to change his mind.

And this is the problem. People with strange ideas about how they would like the world to act who have no idea what the real world is like are making decisions and refusing to admit that maybe, just maybe, killing everyone you don't like is not a good idea. Maybe instead of guessing how the world works they should go out there and actually talk to those who don't have to guess. Or maybe they should learn that "plays well with others" is not just for Kindergarten.

Note: Not all college professors are as bad as the one I cited. Many have extensive industry experience and bring practical knowledge to the classroom. I always liked those classes the best.

  • Current Mood: worried worried
First time I've ever seen a comparison of programming languages to the White House :)

1) C is definitely note obsolete
2) I'm too entrenched in OOP that my perception of the future is obviosly skewed. All we ever use these days are OOP languages, even with .NET. But then I thought the purpose of OOP was to modularize code and yes I agree there are sometimes easier ways to solve problems with a non-OOP approach. I can't recall how many times I've done the quick and dirty in PERL which would have been way more difficult in VC++/VB, etc.
I doubt you subscribe to The Perl Review but if you're interested, send me your email and I'll forward a copy of my article "Logic Programming in Perl". In that article I discuss a Prolog implementation in Perl that I've written and I give a broad overview of how it makes organizing relational data and handling logical inferences much more cleanly than any OO or procedural language ever could.
From the mouths of babes ...
"So ... these people are going around killing people and these other people want to stop them killing people so they go around killing people ... "
My daughter, on the plot of the movie 'Serenity' ...
And as much as I myself understand the 'true' workings of politics ... or computer programming.

"Ask yourself why several military lawyers requested reassignment away from Guatanamo because they knew that ignoring the prisoner's basic rights was wrong."

Don't get me wrong, I like people ... but I really am asking myself if there truly are individuals with that well developed a conscience.
I still had to take a C class, about 18 months ago, for my degree. Some places are still teaching it, and it's still heavily used.

It's still a lot better than the colleges who make you learn totally obscure older languages just so you get the 'concept' of programming. Are colleges still teaching COBOL like they were a few years ago?
All my classes were taught in Java but the programming languages course covered ML, Lisp, Assembly, (insert fairly dead language here) etc. C/C++ was an elective I took, as was Perl and XML. I think it all depends on the university or college and what the goals of the computer science department are.
I once had a teacher in a class 'Operating Systems'(Theoretical, about how OSes are constructed and why), and well...

IT was held in the spring semester, but when classes started the teacher was away, climbing Mount Everest...
He didn't return until the end of January, and only THEN did he start considering which textbooks we were supposed to use.
Add a fortnight for the books to arrive at the bookstore...
Sprinkle with indignation in finding out that it was the same books that he had used the last two or three years, so he could have just told everyone that before he left to go climbing...
Oh, and did I forget to mention that he never bothered to prepare for his classes? (He mostly stood there, reading from the textbooks)

On the other end of the scale was the teacher in 'Microprocessor techniques'...
In the first lesson he walked in, handed out the datasheet for the i8051 microcontroller and did a quick overview. Then he told us to 'build something that has inputs and outputs, and uses the 8051 in the middle of it all', and that 'he would be in his office if we needed help'...
That was fun... :-)
You need to be more cynical :-)
His primary goal is to teach students. He also has to keep abreast of the latest research in his field and those latest changes typically don't involve things such as switching from a quick sort to a merge sort at the bottom of nested loops in C.

Having worked in academia for a few years you need to add a couple of other motivations:

  • He has to help persuade new students to come to the university. This means that if students think that learning Java is more likely to get them a job than learning C, and base their choice of institution on that belief, then he is going to teach Java.
  • He has to deal with more and more people above him saying "you have to prepare students for the workplace" where "the workplace" translates to whatever the current technology de jure at the top of the job postings is.