The 'Anti-Java' Professor and the Jobless Programmers
In this rather inflammatory article, Professor Robert Dewar seems to belittle almost everything but his own inflated ego and the language he makes his living on.
I can only imagine how sad it must be for someone to be so out of date. Like an aging rocker who can't escape his hair-metal days, he clings to the idea that what was important in the 80's is still no less important today. Concepts which predate most modern applications are still the only right way to teach student how to become useful programmers; as if we should still teach hunting and gathering just in case it becomes necessary for survival.
I started in 1981 as a software engineer working for a defense contractor right out of graduate school. No, not CS, but Chemistry. I've only had 0.5 college hours of computer science (and only that to gain precious computer access) yet I've forged a long career at the leading (and sometimes bleeding) edge of technology since. Unlike the dear Prof I've actually had to change with the times and grasp something new every day of my career, moving swiftly from Basic to assembly to Pascal to C to C+ (sort of) to C++ to Objective-C to Java to PHP and moving forward to Ruby, Groovy, Scala, Erlang or whatever is next. This industry has changed from mainframes and superminis to PC's (and Macs), from terminals to client-server to web applications to programming on a damned phone (oh AT&T Where IS My IPHONE). The thing is, programming is all about change, working with change, dealing with change, being changed.
The only thing that never changes is change itself. And Professor Dewar apparently.
Java is not a bad language, neither is Python or Lisp or Scheme or Erlang or Ruby or PHP or dot dot dot. Maybe BrainF*ck is a bad language, but then it's supposed to be. Programming is all about writing programs that people use (or sometimes machines). It's the only way to learn how to program. You can't teach people how to program, you can only help them along but Computer Science (what a stupid name) isn't about teaching people to program; it's all about teaching them to teach computer science to other people who think they are learning programming.
I've never met a programmer with a computer science degree unless they already were programmers before they ever started. Graduates become programmers like everyone else: when they starting writing real programs for real people. In real programming languages. Like Java or Lisp or PHP or (name your poison). So asking a Computer Science Professor about programming languages and programming is like asking a hot dog vendor to explain hitting a 96MPH baseball 514 feet.
Ada was designed by a committee and started appearing just as I left GD in late 1984 (to program in C, on a Mac no less). Its direct predecessor, Jovial, was what I worked with (mostly on compiler runtimes and tools), and was a fairly nice language for its day. Ada appeared to be a conglomeration of every feature imaginable and seemed perfect for defense department projects (over time and over budget here we come). Imagine if the web had started out in Ada. The first browser would have been out in 2014.
Dissing Java is popular and I can forgive that. Denigrating the web as insignificant is unforgivable today. Somehow thinking of Google or yellowpages.com as some meaningless web applications that any clever child could write and thus is ripe for exploitation by some other clever child is sort of silly.
Sure, I might not want to write the Space Shuttle code in PHP, but look at the good all those expensive $7000 lines of code did: they still lost two of the shuttles to system failures. Another thing no Computer Science Professor would ever think of, that programming is only part of the system. There is a whole lot more to the world that a program lives in then whatever stupid programming language the stupid programmers (who are not Computer Scientists of course) came up with. Like UI design, testing, hardware, scalability, maintainability and a host of other unScientific ilities. Even how to deal with stupid management and development methodologies also favored by our Computer Science elite and still somehow get the project done.
I think that Professor Dewer might consider exiting his flask and talking with people in the real world occasionally, unlike his customers who live in DOD land. Maybe he might even consider contributing some code to an open source environment to show his deep insight and mighty programming ability. Even BrainF*ck could use a dose of Science.
Yes every language sucks but a good programmer with an open mind, an open Google, and a wealth of cross language and cross project practice, can write anything in any language.
Even Java. Or BrainF*ck. Or (lordy no) Ada.

Eric TF Bat 07/29/2008 19:32
Oh good. A rant about a rant. I should rant about it but, you know, at this rate the internet will fill up and I won't be able to get to my LOLcats.
Rick 07/29/2008 22:21
Cheers! Programming is a beautiful skill. It marries artful limited creation with critical static logic. The emergence of new languages is accelerating. We will probably look back and see why Ruby or Python or whichever language came to the forefront and it won't be because of its virtues. It will be accessibility, resourcefulness and availability of reference materials and tutorials. The first language I learned was BASIC. If you were on an apple II it was staring you in the face, such goes the internet. Elitism sells cars and useless rocks on metal bands. Accessibility spreads information and ideas. Limitations breed creativity.
07/29/2008 22:31
You made a good counter argument in my opinion, however there is some truth in what the Professor says. And that is to know about hardware a bit. Us programmers ought to know the hardware aspect a little bit and usually developers, programming in Java are unaware of the hardware.
To cut a long story short, Prof. would develop really good programs in ADA for the DOD and you would develop really good Web Applications in Java, Ruby, PHP....... Things turn sour when the ADA programmer says that the Web application programmer is no good.
y 07/29/2008 22:35
If you want some code from Pr. Dewar, download the gnat compiler; I believe he wrote a bunch(most?) of it along with his article co-author Pr. Shonberg.
codist 07/29/2008 22:51
The Gnat compiler only worked on Win95/NT and has been dead since about 2001.
Bad Karma 07/29/2008 22:58
...moving swiftly from Basic to assembly to Pascal to C to C+ (sort of) to C++ to Objective-C to Java to PHP
PHP you say. Yeah, no doubt about it, you've not only ridden the "bleeding edge of technology", you've descended to guiac positive status.
Oh...and Dude? The space shuttle(s) came down because of some o-ring and foam debris problems. The technologists and the managers, with their love of cutting corners and aversion to Doing Things Right (you know, like "real world programmers"), were the ones who brought down those ships....not The Scientists.
codist 07/29/2008 23:07
Yes I know why the shuttles came down, I making the analogy that there is more to development than being perfect programmers in that you have to consider the entire system and how everything works together. Making a huge investment in perfect coding and then overriding the engineers understanding of the system by management fiat is inconsistent and something you need to understand in the real world. It's not taught in schools.
OK so PHP is not state of the art for everyone; for me it's something new to get the job done at home. I changed, that's the only point.
Steve 07/29/2008 23:44
"Yes every language sucks but a good programmer with an open mind, an open Google, and a wealth of cross language and cross project practice, can write anything in any language."
The way I see it is this: Let's take two equally good newbie programmers and subject them to learning different languages. The first is Scheme, the second is PHP.
While PHP can technically do anything Scheme can do because it is Turing complete, do you really think the programmer learning PHP will even attempt to reproduce the higher-level features in Scheme, if he isn't exposed to them in the first place?
That's the crux of the issue. Computer Science isn't about learning how to do UI design, unit-testing, Agile methods and other industry skills. Those are software engineering skills, which isn't to say they aren't useful, they are very much useful, but they are hardly substitutions for solving problems mathematically (think discrete math) using lateral thinking skills to simplify complex problems.
"So asking a Computer Science Professor about programming languages and programming is like asking a hot dog vendor to explain hitting a 96MPH baseball 514 feet."
In this particular case, you couldn't be more wrong. Professor Dewar has authored and coauthored a handful of languages back in the days when writing programming languages was a lot harder than writing them today. Not only that, but he's also been active contributing to the development of ADA. In other words, he seems pretty qualified to talk about programming languages. They may not be the "best" programming languages out there, but he's certainly put in his time.
How about you?
I find it funny how people love to put down professors as not being impractical people who are disconnected from the world/industry. I hate to break it to you, but it's been academics who have practically invented every significant concept you're using today. I'm serious. You give me a significant concept or technology, and I bet you can trace back to an academic. (GUI's, the MVC pattern, object-oriented programming, distributed systems, the relation database, regular expressions, virtual machines, just about every useful feature you love in your favorite programming language, etc. etc. etc.)
Michael 07/30/2008 00:23
Dude, that hurt. Seriously.
jermu 07/30/2008 01:37
your article was tl;dr, but do I understand right that it is ok to you that the programmers coming from the schools nowadays have only peripheral skills to software engineering?
Larry Lard 07/30/2008 04:44
That zing would have zinged so much better if you hadn't spelled his name wrong while zinging it.
Someguy 07/30/2008 04:45
I think his point was that the skills being taught are too easily outsourced, so teaching them is setting students up for failure and disappointment.
The software market has to distinguish itself from other countries if it hopes to be relevant: why pay some punk kid 20k to show up late and not meet deadlines when you can outsource?
I think universities have to higher their standards (and the cost of tuition) not because Java or the Web is irrelevant but because of the competition that exists!
codist 07/30/2008 05:21
I didn't put down all computer science professors, only those who refuse to learn that the industry changes. Sure, Prof Dewar in his day may have been a champion programmer, but from his comments it's clear he hasn't learned much new. I have talked with many CS majors over the years, worked with them, even hired them. Virtually all of them lamented how little useful information they've learned that actually helped them in their careers as programmers and how out of touch many of their teachers were. Does that mean those teachers weren't smart and whatever they researched wasn't important? No, I'm simply echoing what most of them told me they learned getting a BS degree in CS.
I'm saying that simply teaching CS fundamentals plus a pet language and a smattering of weeks in different languages is not going to create great programmers; you don't become a programmer until you write real programs in the real world. I'm also not saying that having a CS degree is a handicap either, but for Prof Dewar to say that CS programs in this country are substandard when they teach Java and web programming is being out of touch and that these programmers are only going to deliver pizzas unless they graduated from MIT is rather silly. The only thing any college professor should teach their students is how to learn, and make sure they are fully prepared to learn every day for the rest of their lives. Graduating with a CS degree is no assurance you can be great programmers no matter how fundamental your learning was.
Most of the folks I've worked with since the early days of my career either learned on the job continuously as the industry changed or stood on what they first learned and became obsolete, moving into non-programming technical jobs.
What really constitutes fundamental knowledge in CS? What do you really need to learn to be a great programmer in whatever job you find yourself in? I've know teenagers and college-age programmers with no formal college education who were brilliant. The industry is full of stories of amazing people with no CS degree who changed the face of programming. It's also full of brilliant PhD's in CS who invented a lot of our basic technologies. My point is it's the makeup of the person that determines wether they become a great programmer, not how they got that way. For every Sergey Brin there is a Steve Wozniak. Programming is one of the only technical disciplines where you can become an expert programmer even with no formal training.
If I were teaching CS in a university, I'd make sure that the students wrote a lot of larger programs in teams in at least there major languages, one procedural (C maybe), one OO (Java or C++) one dynamic (Ruby or Python or PHP) and one functional (Scheme or Erlang etc.). Sure you can throw in fundamentals but the major emphasis would be working in teams on real world problems and in as much of a real world atmosphere as possible (project management, specifications, agile/iterative methodologies). I'd want them to do web programming (HTML, CSS, Javascript), desktop application development, embedded systems and client-server. Always writing code in every class that bears some resemblance to the "real world".
Even with all that, working as a programmer in the real world will still be a new experience where new things are thrown at them everyday. That's the real challenge and it's totally up to the makeup of the programmer how they deal with that.
codist 07/30/2008 05:28
Now here's an academic I agree with
Anonymous 07/30/2008 11:49
You seem to have missed the professor's point. It is important to have both theoretical knowledge and experience, and in actual problem solving, not attaching lego blocks. Best wishes.
Codedog 07/30/2008 13:19
Dude, first off, ad hominem much? You seem to have, to put it delicately, "issues" with higher education. Even your last comment, "Now here's an academic I agree with", sounds vaguely racist, as though you're a Southern sheriff who is referring to "one a dem akademmiks who rightly knows their place!" Ugh. Please, do get over it.
Secondly, you "might" (might?!) not want to write Space Shuttle code in PHP? Please, never write Space Shuttle code. Thank you.
Finally, you write this: "So asking a Computer Science Professor about programming languages and programming is like asking a hot dog vendor to explain hitting a 96MPH baseball 514 feet."
This is boldly stupid. Roy Fielding has taught classes at UCI. He still advises as a professor there. Is he like your analogous hot dog vendor? Or is it that the people he learned from and is still working with are just a bunch of morons benefiting from him? Oh, please, do explain. So many compsci profs move in and out of academia and the private sector, through consulting, social networking, and projects for hire, that it's difficult to say at times who is solely in the realm of the academic sector. Even long-standing professors do funded and important research. You don't know what you're talking about, and you sound adolescent.
Please, more code, less hate.
Clayton Nash 07/30/2008 15:34
CS is not the place to learn programming. Leave that to the engineers and business computing types. My CS degree we hit about 14 languages across all the major disciplines but it was pretty much a small part of the real degree - the real work was in understanding computing in the abstract, complexity, computability, operating systems, data structures, FSMs, lambda calculus, database theory etc. I've looked back on the same degree now taught and there's some Java thrown in there as well, but you never learnt to program you learnt to understand. Programming came simply after that.
Secondly, you've utterly missed the point of what the professor was saying - not that you shouldn't teach Java, but that teaching only Java delivered students who had only marginally useful skills and no ability to think. That's not a degree - that's a pretty useful technical qualification but not a degree.
In my last job I hired programmers, and directed their activities - They were all much better Java programmers than me, and had understandings of ORMs that I couldn't match. They still ended up building databases without indexes (they'd never heard of them). Their lovely XML config files were implemented in such a way that we had to restart production services to change rates (but boy were they fast to read the first time compared to my version which used expiring cached values read from a database). They failed to consider the notion that packets might arrive out of order on a network. They adapted business processes to the libraries they found, not the other way around. In short, they did everything this professor is complaining about.
RickJWagner 07/30/2008 20:35
I agree, the good prof. seems to no longer be learning.
For some applications, super-tight levels of precision might be necessary, but for many, many more applications some degree of slop is happily traded for greatly improved time to market.
The refusal to recognize the benefits of tools provided by others is the mark of a troubled mind. I hope ol' prof. makes a nice recovery and publishes some good open source stuff-- that would be a magnificent redemption!
MrPotatoHead 07/31/2008 16:38
Someguy:
"I think universities have to higher their standards (and the cost of tuition)..."
If they "highered" their standards then you wouldn't be able to go there.