The 'Anti-Java' Professor and the Jobless Programmers

4 views
Skip to first unread message

Chris Brandsma

unread,
Jul 29, 2008, 3:52:56 PM7/29/08
to bsdg
<http://itmanagement.earthweb.com/entdev/article.php/3761921/The+Anti-Java+Professor+and+the+Jobless+Programmers.htm>

Replace Java with your favorite mainstream language (mine would be C#, Jim's Delphi) and I think this would still hold true.

But it gets back to begging the question: what should CompSci programs be teaching?

If you teach Java simply because that is what the job boards have listed, then are you a trade school?
If you teach C, C++, Hascal, etc, then are you ignoring the commercial realities of the profession?

I remember talking with a university professor (MIS, not CS) where he was asking me, "If you could teach just one language to a student and have them employable, what would it be?"
My answer was that you couldn't.  He chose PHP.

--
--------------------------------
Christopher Brandsma
http://www.ChrisBrandsma.com
http://www.ElegantCode.com

Robert Fisher

unread,
Jul 29, 2008, 3:58:38 PM7/29/08
to bs...@googlegroups.com

My response would any language that utilizes all of the logical structures of a modern programming language.  Schools never get too in-depth in the language anyway, so it would be more important to teach the logic than actually the code.  Once you learn the logic, can get a dummies guide to break into any language you need to learn the syntax for.

 

Robert Fisher

rfi...@techendo.com


No virus found in this incoming message.
Checked by AVG - http://www.avg.com
Version: 8.0.138 / Virus Database: 270.5.6/1579 - Release Date: 7/29/2008 6:43 AM

David Evans

unread,
Jul 29, 2008, 4:02:39 PM7/29/08
to bs...@googlegroups.com

I would concur.  Teaching how to program is better than teaching specific languages.  A good programmer should have the ability to program in any language. 

 

It should be a question of syntax, not ability to program.

Mike Moore

unread,
Jul 29, 2008, 4:06:41 PM7/29/08
to bs...@googlegroups.com
I don't disagree with anything in the article. When I started college I was learning C, C++, and Pascal. When I left college it was all Java. The issue at hand isn't learning how to use a computer language, it is understanding how the computer works. How the computer takes what you typed and runs it.

While you can make the argument that you can do just fine learning a high-level language (and I would argue that Java and C# are poor excuses for high-level languages), you can easily make the argument that you aren't really a computer scientist until you understand how the rubber actually meets the road. A CS department isn't teaching software engineering, its teaching computer science.

On Tue, Jul 29, 2008 at 2:02 PM, David Evans <eva...@cityofnampa.us> wrote:

I would concur.  Teaching how to program is better than teaching specific languages.  A good programmer should have the ability to program in any language. 

 

It should be a question of syntax, not ability to program.

There is so much more to a computer language than its syntax. I really don't understand the belief that you learn a new language by mastering its syntax. Its as if you just need to learn all the Spanish characters in order to speak Spanish.

Tom Davis

unread,
Jul 29, 2008, 4:08:49 PM7/29/08
to BSDG
I disagree with the article in at least one respect: Computer Science
departments are not 'dumbing-down' their curricula. That statement
may, however, be true about the business departments which teach
programming skills.

And while I agree with the sentiments expressed by Rober and David, I
have to say that I have never heard someone express that thought who
was in a position to hire me. Most of the people who have interviewed
me have expressed strong interest in the specifics of particular
languages and very little interest in the concepts I learned while
studying computer science.
> rfis...@techendo.com

David Evans

unread,
Jul 29, 2008, 4:15:57 PM7/29/08
to bs...@googlegroups.com

You missed my point.  A programmer should be able to program in any computer language.  If your employer is a either a C#, Java, VB, or C++ (I could continue to name languages), a programmer uses the same skill set to perform the skill of programming.  How he implements a given feature is a question of the syntax of the chosen language not his ability to program.  The same basic concepts are involved no matter the language chosen. If I ask you to write a program to balance checkbooks, you must do the same things no matter what the chosen computer language is. 

 

Mike Moore

unread,
Jul 29, 2008, 4:24:40 PM7/29/08
to bs...@googlegroups.com
I think you missed my point. The way you balance an account is going to be very different in Lisp compared to your you balance an account in Erlang compared to how you balance an account in Haskell compared to you you balance an account in Java. These differences are fundamental.

Just the same, the way you balance a single account in any given language is going to be vastly different than how you simultaneously balance 100,000,000 accounts across a 500 node grid. The point isn't that we can't find someone to solve a typical business' needs, its that we can't find someone to solve NASA's needs. Or Nasdaq. Or, in the case of the original article, the military's needs. And no amount of language switching is going to solve that. You have to have a deeper understanding in order to solve them.

Jim McKeeth

unread,
Jul 29, 2008, 4:25:25 PM7/29/08
to bs...@googlegroups.com
CompSci should teach at least ASM and C++ or Delphi - a language that does not automagically manage memory.  It can also teach Java, C#, PHP, Ruby, etc.  It is important to understand the fundamentals of programming logic (algorythems and data structures, etc.) and the low level way a computer actually works (registers, memory management, etc.) to be a good programmer.  Any langauge that manages memory and abstracts the hardware does not teach the low level, but it can teach the fundamentals. 

That is why CompSci is not a trade school degree.  Employeers are looking for X years experience with Y langauge as their first criteria (usually with a Degree in CompSci to boot).  The types of projects, etc. are secondary.  So a trade school degree would focus solely on Java since that is the in demand language - low level understanding is less important.

--
-Jim McKeeth
j...@mckeeth.org
www.mckeeth.org

Michael Hedman

unread,
Jul 29, 2008, 4:36:35 PM7/29/08
to bs...@googlegroups.com

That’s what my school did for me.  We started first term with Pascal to understand some basic programming structures. The next term, took Assembly, followed by C and C++.  I think most CS degrees should still teach some low level programming, so that you can also more appreciate what modern languages do for you.

 

From: bs...@googlegroups.com [mailto:bs...@googlegroups.com] On Behalf Of Jim McKeeth
Sent: Tuesday, July 29, 2008 2:25 PM
To: bs...@googlegroups.com
Subject: [BSDG] Re: The 'Anti-Java' Professor and the Jobless Programmers

 

CompSci should teach at least ASM and C++ or Delphi - a language that does not automagically manage memory.  It can also teach Java, C#, PHP, Ruby, etc.  It is important to understand the fundamentals of programming logic (algorythems and data structures, etc.) and the low level way a computer actually works (registers, memory management, etc.) to be a good programmer.  Any langauge that manages memory and abstracts the hardware does not teach the low level, but it can teach the fundamentals. 

David Evans

unread,
Jul 29, 2008, 4:38:27 PM7/29/08
to bs...@googlegroups.com

To balance an single account or thousands of accounts  you simply take loop through a batch of transactions adding or subtracting amounts from a running balance.  This same logic is used irrespective to language or scale.  How you implement that logic is a question of a chosen language and its available syntax.  Do you use pushes, pops, or variables? Do you use a for/next loop or do/while structure?  Again, all are questions of a given languages syntax.

 

Steven Borg

unread,
Jul 29, 2008, 4:42:42 PM7/29/08
to bs...@googlegroups.com

You chose all imperative languages…  I think there should be diversity in the types of language, as well.  Knowing both Java, C#, C++, Delphi and PHP is all well and good, but there should be some other types of languages in there.  Think Prolog, Erlang, F#.

 

You should get a grounding in several ideas such as:  imperative, event-driven, OO, concurrent, distributed, procedural, functional, generic, lazy evaluation, reflection, type safe, static typing, dynamic typing, strong typing, weak typing, etc. 

 

:-)

STeve

 

From: bs...@googlegroups.com [mailto:bs...@googlegroups.com] On Behalf Of Jim McKeeth
Sent: Tuesday, July 29, 2008 1:25 PM
To: bs...@googlegroups.com
Subject: [BSDG] Re: The 'Anti-Java' Professor and the Jobless Programmers

 

CompSci should teach at least ASM and C++ or Delphi - a language that does not automagically manage memory.  It can also teach Java, C#, PHP, Ruby, etc.  It is important to understand the fundamentals of programming logic (algorythems and data structures, etc.) and the low level way a computer actually works (registers, memory management, etc.) to be a good programmer.  Any langauge that manages memory and abstracts the hardware does not teach the low level, but it can teach the fundamentals. 

Chris Brandsma

unread,
Jul 29, 2008, 4:43:48 PM7/29/08
to bs...@googlegroups.com
Lets see, dusting off my long repressed comp sci language list.

First Fortran, C++, C, SmallTalk, LISP, ASM (SPARK and 6502), machine language (I was a hardware major), COBOL (but don't tell anyone else that), and finally Java.

But, for me, I would stress more of a emphasis on principles (OO and functional), design patterns, and algorithms. 

Languages are easy.

Mike Moore

unread,
Jul 29, 2008, 4:47:18 PM7/29/08
to bs...@googlegroups.com
On Tue, Jul 29, 2008 at 2:43 PM, Chris Brandsma <chris.b...@gmail.com> wrote:
Lets see, dusting off my long repressed comp sci language list.

First Fortran, C++, C, SmallTalk, LISP, ASM (SPARK and 6502), machine language (I was a hardware major), COBOL (but don't tell anyone else that), and finally Java.

But, for me, I would stress more of a emphasis on principles (OO and functional), design patterns, and algorithms. 

Languages are easy.

Languages are easy, or at least they are easy compared to everything else. The final section of the original paper is "Programming Languages Are Not the Whole Story".

http://www.stsc.hill.af.mil/CrossTalk/2008/01/0801DewarSchonberg.html
 

David Evans

unread,
Jul 29, 2008, 4:53:48 PM7/29/08
to bs...@googlegroups.com

Ah, the good old days, programming in 6502 assembly language.  After 18 hours on the plane with nothing to read but “6502 Assembly Language programming” by Lance Leventhal, I learned mine the hard way.  I actually published two articles before I purchased my first compiler.

Chris Brandsma

unread,
Jul 29, 2008, 4:54:53 PM7/29/08
to bs...@googlegroups.com
That was also the system I learned machine language on.

Too bad we didn't learn something useful like the Z80.  :)


On Tue, Jul 29, 2008 at 2:53 PM, David Evans <eva...@cityofnampa.us> wrote:

Ah, the good old days, programming in 6502 assembly language.  After 18 hours on the plane with nothing to read but "6502 Assembly Language programming" by Lance Leventhal, I learned mine the hard way.  I actually published two articles before I purchased my first compiler.






Tom Davis

unread,
Jul 29, 2008, 5:15:00 PM7/29/08
to BSDG
I have to agree that Z80 is the best assembly language I've seen on a
microprocessor, and it would have been cool if it were the standard
instead of x86.

My favorite assembly language is fairly obscure, the DEC 10 assembly
language, which has even more addressing modes than Z80, plus a
handful of other nice features and a far richer instruction set. In
spite of that, DEC 10's have gone the way of the Dodo, while Z80s live
on in toasters and microwave ovens.

Michael J. Ryan

unread,
Jul 31, 2008, 1:58:03 AM7/31/08
to bs...@googlegroups.com
However, that generality won't allow for you to program WELL in a given
language... I'm going to use a few C#/.Net 2.0+ examples...

//programmer with general background
if (s == null)
s = "default";

//C# coder
s = s ?? "default";

//JS coder
s = s || "default"; //not many people know you can do this in JS

It's a small example, but there are MANY MANY more, especially when you get
into patterns and frameworks available to make less code work better, or
common solutions reusable. I am pretty good with picking up new languages, I
would consider myself near expert in JavaScript, and pretty good with C#... I
get by with VB (thanks to the .Net framework), and know a bit from a half
dozen other languages....

But I guarantee you I am no where near as productive in Ruby or Perl... And
most things would take me at least twice as long in those languages. The same
is true for most people... You may be able to grow and adapt well, but
sometimes a company wants someone who can hit the ground running...

Don't get me wrong, a person with general knowledge can learn new languages
more quickly than someone who's never ventured farther than VB, and can't
write their way out of a paper bag in any other language... But there is
something to be said for being VERY knowledgeable in a more narrow field. For
that matter, there will always be a need for code monkeys who can pump out
crud (that may not be pretty, but works) based on a good, clear design, but
this doesn't pay as well.

--
Michael J. Ryan - tracker1(at)theroughnecks(dot)com - www.theroughnecks.net
icq: 4935386 - AIM/AOL: azTracker1 - Y!: azTracker1 - MSN/Win: (email)

... FRA #027: There's nothing more dangerous than an honest businessman.

Michael J. Ryan

unread,
Jul 31, 2008, 2:03:02 AM7/31/08
to bs...@googlegroups.com
Read up on BASE vs ACID, and you will see that things aren't always quite that
simple, and business rules for when things don't quite match up become even
more interesting...

Cross-replications systems can be very complex, much more so than a running
balance against a batch of transactions... where does a given transaction
against a given set of accounts go? a single server won't be able to handle
the load of several million accounts.

--

Michael J. Ryan - tracker1(at)theroughnecks(dot)com - www.theroughnecks.net
icq: 4935386 - AIM/AOL: azTracker1 - Y!: azTracker1 - MSN/Win: (email)

... FRA #223: Beware the man who doesn't make time for <i>oo-mox</i>.

David Evans

unread,
Jul 31, 2008, 9:11:08 AM7/31/08
to bs...@googlegroups.com
Those are implementation (aka coding) details, not reasons to use
language "a" versus language "b". In my mind the skill commonly
referred to as "programming" is the ability to break problems down into
their discrete components (think object oriented programming). In my
mind the skill known as programming is used when you are handed a set of
requirements (or a wish list) and you have to come up with an action
plan to implement those needs. How do you get from "I want a program
that does X" to a program that actually does the required actions.

You would be surprised how many people say "I have no idea".

As to your earlier example of using one method of providing defaults
versus another: You seem to be forgetting that you work in a compiler
driven environment. I suspect each of your examples produce the same
underlying "machine code" (p code or whatever). None offer an
improvement upon the other. I would suggest however that the best
method is the more understandable by someone without your own
experience. A programmer should write programs for somebody without his
knowledge. Using the latest, language specific, features is not always
the best method. I program with the viewpoint that I might be replaced
in the next 24 hours and not from the viewpoint of trying to ensure job
security. I consider quality code the best job retention skill, not the
obscurity of knowledge. While I do not get paid by the keystroke, I
strive to write code that is easily understandable by a lay person. In
theory you should be able to take the average idiot and set him down
before your code and he, using it only, have a reasonable clue as to
what it does, how it does it, and so on.

-----Original Message-----
From: bs...@googlegroups.com [mailto:bs...@googlegroups.com] On Behalf Of
Michael J. Ryan
Sent: Thursday, July 31, 2008 12:03 AM
To: bs...@googlegroups.com
Subject: [BSDG] Re: The 'Anti-Java' Professor and the Jobless
Programmers

Steven Borg

unread,
Aug 2, 2008, 1:20:43 PM8/2/08
to bs...@googlegroups.com
Try to go to http://sitemeter.com/ with IE7, and you get an operation
aborted error. IE6, Firefox, etc all work.

Sitemeter tracking also breaks all sites who host it, it appears.

:-)
Steve

Doug Reece

unread,
Aug 6, 2008, 1:37:56 AM8/6/08
to bs...@googlegroups.com
Java is an acceptable language for a computer science program to use as its default language of choice. Java is adequate to be used in most course work either as example code or for actual coding exercises. It's a contemporary language that doesn't carry the legacy baggage that some of its predecessors carry, it provides decent object oriented constructs, and is also a popular language in the "real world".

The argument that the selection of Java as a teaching tool for computer science programs has dumbed down these programs is not valid. Professors can require students to hand-code programming exercises when appropriate. Java isn't to blame here.

However, computer science programs should be preparing students to be capable, upon graduation, of participating on teams that are building things like operating systems, database servers, graphics engines, embedded systems, compilers, virtual machines, etc. The stuff that perhaps most programmers only ever use, but not build. In order to participate at this level of coding, a student must be trained in the basics of computer hardware, how software interacts directly with hardware, fundamental data structures and algorithms, etc. Practically speaking this means having actual experience with assembly language, C, and C++. A computer science student shouldn't just know how to use the C calls malloc and free, but should also have an idea of how to actually write these routines. These students should also be exposed to other languages, particularly those that don't fit the C/C++/C#/Java/Pascal style of languages (which are all very similar).

My guess is that, based on various things that I have read, many computer science programs have morphed into something that is more like business application development using high-end development tools. This may be more interesting to students and is probably where most of the jobs are. In these cases, the colleges and universities should change the program name and the emphasis (bachelor of arts vs. bachelor of science) and call it what it is, and stop calling it what it is not.

Richard Hundhausen

unread,
Aug 6, 2008, 11:10:49 AM8/6/08
to bs...@googlegroups.com

Potentially a big project. Reply to me offline if you are interested, or know of a resource that/who can help.

 

Thanks.

 

-Rich

Richard Hundhausen
Microsoft Regional Director
Visual Studio Team System MVP
blog.hundhausen.com
Boise, Idaho

 

Nolan Letellier

unread,
Aug 6, 2008, 11:25:00 AM8/6/08
to bs...@googlegroups.com
What is the timeframe?
 
My organization is in turmoil and I may find myself in need of either temporary or permanent income in the next month or two.  My delphi is out of date and my c# never was in-date, so I'd want to sign on as a helper, not a lead.
 
Let me know,
Nolan Letellier

Jim McKeeth

unread,
Aug 6, 2008, 12:11:02 PM8/6/08
to bs...@googlegroups.com
Why in the world would someone want to migrate a legacy application?  Always seems like a waste of time to me.

Might I refer them to Joel's #1 thing you should never do
http://www.joelonsoftware.com/articles/fog0000000069.html

  1. Rewrite your software!

Chris Brandsma

unread,
Aug 6, 2008, 12:22:17 PM8/6/08
to bs...@googlegroups.com
From reddit today:

COBOL: California state computers can't handle pay cut, controller says
http://www.sacbee.com/111/story/1132588.html

Basically, California can't find COBOL programmers to keep their
(aging) system up to date.
Obviously there are multiple problems here, not being able to find
programmers is just one of them (like trying to make all state workers
subsist on minimum wage).

I don't know too many Delphi programmers on the market these days.

--

Jim McKeeth

unread,
Aug 6, 2008, 12:29:50 PM8/6/08
to bs...@googlegroups.com
On Wed, Aug 6, 2008 at 9:22 AM, Chris Brandsma <chris.b...@gmail.com> wrote:
I don't know too many Delphi programmers on the market these days.

I've discovered from experience that this is a circular argument.  Because employers believe there are no Delphi developers, they are hiring for "hipper" languages.  Because Delphi developers believe there are no Delphi jobs they are replacing it with "hipper" languages on their resumes. 

I know a lot of former Delphi developers (some of which who even worked for Borland) who took it off their resume for exactly that reason.  I also know that most GOOD programmers can pickup Delphi rather quickly, especially since many of them have Delphi experience, or at least Pascal. 

Not sure if that is the case with the COBOL language or not. 

--
-Jim McKeeth

Chris Brandsma

unread,
Aug 6, 2008, 12:48:17 PM8/6/08
to bs...@googlegroups.com
I didn't make the game, I just play it. I don't see this as just the
fault of the companies, but also developers chasing the next new thing
(oh, look...shiny!), and tools companies not wanting to support old
software.

Now the dev lead is going to go to the company telling them the old
program is so hopelessly out of date, and badly written, that a
complete rewrite is needed so the application can do what the business
needs it to do. (does it really, maybe, maybe not). Business says:
"OK, Mr Dev Lead, you're the expert, start the rewrite" Has anyone
else seen this happen?

Or, another one that I've seen in the wild: the original application
was written in Delphi 3, nobody-but nobody, is still developing in
delphi 3, no one is selling the component libraries they need, you
can't get ANYTHING! And now they want to add a feature. Sorry, but
there is no clear upgrade path in that case. You are talking about a
large rewrite any which way you do it. Might as well rewrite it.
(seen this one a couple of times as well).

--

Doug Reece

unread,
Aug 6, 2008, 12:48:55 PM8/6/08
to bs...@googlegroups.com
This is even more relevant when you consider that a lot of Win32 Delphi code can be recompiled for .Net without any changes making it natively accessible to C# code.

Jim McKeeth

unread,
Aug 6, 2008, 1:04:39 PM8/6/08
to bs...@googlegroups.com
On Wed, Aug 6, 2008 at 9:48 AM, Chris Brandsma <chris.b...@gmail.com> wrote:
Or, another one that I've seen in the wild: the original application
was written in Delphi 3, nobody-but nobody, is still developing in
delphi 3, no one is selling the component libraries they need, you
can't get ANYTHING!  And now they want to add a feature.  Sorry, but
there is no clear upgrade path in that case.  You are talking about a
large rewrite any which way you do it.  Might as well rewrite it.
(seen this one a couple of times as well).

I've seen that in the wild too, but in a day or two you can upgrade most any Delphi application from most any version to the latest version, if you know what you are doing.  If you do not have the source for the components then you can replace those components or create an adapter class to make another component work in its place.  You are still looking at a week or two to leverage all your existing software.

I've been involved in rewrites before.  They don't go well.  There is always functionality that is not obvious in the existing program that is missed in the rewrite.  Even when you have a good spec it is a lot of work to get it right.

If you really need the .NET functionality, then do like Doug says and port it to Delphi for .NET.  Not everything is a straight across port, especially if you used a lot of pointers or windows messages, but it is an easier transition.

I do agree with Chris that it isn't just the companies chasing hipper languages, but us developer types like hipper languages / features / platforms / frameworks too.  Just trying to be a voice of reason.

-Jim
Reply all
Reply to author
Forward
0 new messages