This week's book giveaway is in the Servlets forum.
We're giving away four copies of Murach's Java Servlets and JSP and have Joel Murach on-line!
See this thread for details.
The moose likes Java in General and the fly likes Java programmers lack mental agility ? Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Murach's Java Servlets and JSP this week in the Servlets forum!
JavaRanch » Java Forums » Java » Java in General
Bookmark "Java programmers lack mental agility ?" Watch "Java programmers lack mental agility ?" New topic
Author

Java programmers lack mental agility ?

James Clarke
Ranch Hand

Joined: Oct 04, 2004
Posts: 148
Hi,

I came across this article when doing a google search on 'great programmers' ;0)
It essentially states that using Java doesnt develop great programmers..

Would love to know what you guys think of this ?

http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html

thanks,

J.C
Tony Morris
Ranch Hand

Joined: Sep 24, 2003
Posts: 1608
It has been common knowledge for many years and thankfully is becoming more and more common. The sooner the better - and so as an industry, we can *finally* get on with writing decent software.

Joel does talk a bit of crap though - and to his credit, he's acknowledged it (citation?)


Tony Morris
Java Q&A (FAQ, Trivia)
Ilja Preuss
author
Sheriff

Joined: Jul 11, 2001
Posts: 14112
No single programming language develops a good programmer - knowing many very different languages does, in my not so humble opinion.

The problem with Java as a learning language, in my opinion, is that it isn't a good language to learn the OO paradigm, because there are still too many procedural parts in it.

Perhaps universities will start using Ruby at some time - that would be a step in the right direction...


The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
Deepak Bala
Bartender

Joined: Feb 24, 2006
Posts: 6661
    
    5

I wonder what he has to say about .NET and I wonder why he calls java "easy". Sure, Java does not have pointers which makes a really big difference. There are many application the world over that dont require the use of pointers like he acknowledges. The focus should be to move away from complexity so that applications are easier to maintain. I know many developers that do not understand pointers. I myself have not worked with C for a very long time now and I am probably bound to make mistakes with pointers. To say Java programmers lack mental agility is ridiculous.


SCJP 6 articles - SCJP 5/6 mock exams - More SCJP Mocks
Jaikiran Pai
Marshal

Joined: Jul 20, 2005
Posts: 9924
    
158

I agree Java is much simpler compared to C/C++. But that's what is in demand today - simplicity. I do remember in my college days when the more you were good at writting/debugging complex pointer related code, the more intelligent you would be considered. But practically, when you are writing a production application no one wants it to be unnecessarily complex. That's where Java plays a huge factor, you can have the product ready without having to spend your time doing some tricks with pointers.


[My Blog] [JavaRanch Journal]
Jaikiran Pai
Marshal

Joined: Jul 20, 2005
Posts: 9924
    
158

I also remember, during our last year at college when we got introduced to Java, the most asked question was "What's the difference between C and Java". And most of us would (happily) answer "Java does not have pointers"
Keith Lynn
Ranch Hand

Joined: Feb 07, 2005
Posts: 2367
What I find funny is that at my University we switched from C++ to Java as the intro programming language in 1998, and the failure rate in that initial course was huge. And since then the students constantly complain about how hard Java is.

What is sad is that they do not realize that what they are having trouble with is the concept of thinking. They just blame Java because that is the only language they see.
[ February 25, 2007: Message edited by: Keith Lynn ]
Henry Wong
author
Sheriff

Joined: Sep 28, 2004
Posts: 18508
    
  40

Like the writer of the article, I also did a few years of working with punch cards (fortran). And I must admit, that working with an IDE is *much* easier than working with a card deck. However, I didn't come to the same conclusion as the article...

<Really Bad Analogy>
I once had a debate with a fellow archer, who hunted with a bow. He complained that hunters with rifles were not really "skilled" as it was much easier to hunt with a rifle than with a bow.

My response was, that while it was easier to hunt deer, or even bear, with a rifle, you can't really shoot ducks with a bow. Just because a hunter used a rifle didn't mean that he wasn't skilled, as he could be hunting something that needs the rifle.
</Really Bad Analogy>

Now, just because Java takes care of many details that isn't taken care of by C or assembly language doesn't mean that they are less skilled -- a skilled programmer who doesn't need to deal with pointers, can devote his mental agility to other issues, or to solving problems faster.

What I do agree with is that programmers who have never used assembly or C, seems to lack the ability in managing pointers. Which is why I think schools should not focus on any particular language. IMHO, Assembly, SQL, and probably prolog should be required languages.

Henry


Books: Java Threads, 3rd Edition, Jini in a Nutshell, and Java Gems (contributor)
Stan James
(instanceof Sidekick)
Ranch Hand

Joined: Jan 29, 2003
Posts: 8791
Per Joel ...

Instead what I'd like to claim is that Java is not, generally, a hard enough programming language that it can be used to discriminate between great programmers and mediocre programmers.


That's probably quite correct given his definition of "great" programmers. And quite beside the point in my daily life.

We need some his great programmers to develop the next langauges and operating systems and such. Companies like mine rarely need them to, as Tom & Mary say, convert "concept to cash". In the 1950s we had real CS giants who wrote a langauge, compilers, runtime libraries and utilities, made patches via the switches on the front panel, etc because COBOL wasn't quite ready yet. But nowadays we can focus on delivering business value just fine with a langauge like Java.

BTW: His attitude remindes me of this:
A human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a well, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Specialization is for insects. - Robert Heinlein


A good question is never answered. It is not a bolt to be tightened into place but a seed to be planted and to bear more seed toward the hope of greening the landscape of the idea. John Ciardi
Justin Chu
Ranch Hand

Joined: Apr 19, 2002
Posts: 209
    
    1
The simplicity of Java does not limit the complexity of any piece of java program. So, I don't see why Java programmers should be discredited because java language is easy. There's the fact that java SDKs and servers may be accessed free of charge and anyone who has read Learn Java in 21 days can call himself/herself a Java programmer; this necessarily lowers the overall quality of java developers. Not to mention the watered-down CS programs that keeps on whoring out CS degrees like thrash bonds from a bankrupt company. Without any experience, the first market to try to enter is the Java job market as it is the easiest skill to put on the resume.
Even if half of the interviewees are inexperienced "java-only" developers, the language cannot be considered even as a remote cause.
[ February 26, 2007: Message edited by: Chu Tan ]
Tony Morris
Ranch Hand

Joined: Sep 24, 2003
Posts: 1608
All these posts seem to have missed the point by a long shot. Joel is referring to what is also called the Blub Paradox (Paul Graham). Java is a language designed specifically for novices. It requires very little skill and mental discipline to produce thousands of lines of Java source code that does relatively little - despite masquerading (to other novies) to the contrary.

Joel (as is PG) is alluding to the fact that once you learn more powerful programming paradigms, namely loose functional programming (Lisp, Python, et. al.), that this becomes clear - but not before then (as in the case of previous posts). Further, once you learn pure functional programming (Haskell, Clean, Epigram), you have taken yet another large(r) leap again and you can see clearly how weak other languages are (a leap that Paul Graham is yet to take given his writings).

Of course, this realisation brings about accusations of elitism, arrogance and what have you, but this is the "real world" that I am describing (your term remember? ) - not some fanciful, wishfully thought up, convenient delusional state.
James Clarke
Ranch Hand

Joined: Oct 04, 2004
Posts: 148
Well Tony its strange that in the 'real world' so many large organisations have choosen Java even though "thousands of lines of Java can only do very little".

Admittedly, Java is the only language that I have any significant experience with, hence my concerns about the validity of this article by Joel. The reality of the IT industry is that we have to work with the technologies that project managers choose, regardless of our personal preferences.

If Haskell, Clean or Epigram were such great programming languages why is it that they have not been adopted as widely as Java ?
My take on this is that Java can be used to efficiently provide solutions in a timely and cost-effective manner, whereas these other languages cannot.

James
Paul Clapham
Bartender

Joined: Oct 14, 2005
Posts: 18541
    
    8

Tony, I am sure that Spolsky would not care about accusations of elitism. On the contrary, I suspect he would welcome them, pointing out that yes, he does want to get only the best programmers to work for him.

(I never understood how people can think elitism is a bad thing and then watch professional basketball, but it's done every day.)

But remember that 90 percent of everything is crud. There has to be somebody to produce software crud, and for that we need Blub.
Stan James
(instanceof Sidekick)
Ranch Hand

Joined: Jan 29, 2003
Posts: 8791
I think the real point of this is that there is no point.

People who have learned to do the hard things - write compilers, invent new algorithms - are necessary to write more hard things. They are not necessary to drive a lot of businesses, conclusively proven by companies full of Blub and Crud making fine money. Could they do a better job than I do? More economically for the company? Maybe, but would they last to the 150th web service integration? My company has used computing technology to distinguish itself in the marketplace since the late 50s and seems to be doing ok with guys like me.

Art for art's sake - beautiful or "strong" languages - mean little to me. I listen to Mozart. I listen to Gil Evans charts. I listen to one-chord Rolling Stones tunes. I have a favorite language for small, productive, human-friendly programs that cannot be compilied and is not even block oriented - you can write overlapping functions (!) for goodness sake.

BTW: I'd count Google as one company driven by lots of those really smart people who can do hard things. They had to invent much of their infrastructure but they didn't advance language science in the direction of beauty and strength to do it, they wrote an agressive little thing called Sawzall. I admire them. Don't want to be them. Not ashamed of my Java work. Going back to work now.
David McCombs
Ranch Hand

Joined: Oct 17, 2006
Posts: 212
I think his points are good ones, but does not mean that Java is not worth learning, or not useful in the real world. Java clearly is worth learning and can produce great software. That is not the point.

From my prospective(a CS student at a school that teaches Java as its core language) his point is valid. A computer science degree is supposed to be a theoretical one as well as a practical one. A CS student needs to learn computer architecture, automata, algorithm design and analysis, basic programming language design, networking(and not just at a high level), and the theoretical underpinnings, along with a concentration in a specific area. This is why you see people posting here about implementing some data structure, even though it exists in the API, learning a language or two and its API's are not enough. I have seen people go through the program barely knowing the basics of Java and enough of the rest to pass, but not necessarily understand it, luckily that is not the norm, we have great students and instructors, but it can happen. So because of Java as a core language, it is possible to get a CS degree but not necessarily be a computer scientist.

Java is a high level language that hides all the important details that a CS grad should know. From a programming prospective, this abstraction is a good thing, but a CS degree is far more then just banging out code.

In short what Java hides from the learner is the difference between a quality computer science grad, and a programmer. Don't take this as a slight to a non-computer science programmer, it is not meant to be.
[ February 27, 2007: Message edited by: David McCombs ]

"Should array indices start at 0 or 1? My compromise of 0.5 was rejected without, I thought, proper consideration."- Stan Kelly-Bootle
Tony Morris
Ranch Hand

Joined: Sep 24, 2003
Posts: 1608
Originally posted by James Clarke:
Well Tony its strange that in the 'real world' so many large organisations have choosen Java even though "thousands of lines of Java can only do very little".
James


I don't find it strange at all, rather, entirely able to be explained without contradiction whatsoever. But I'll leave that for now

You must remember, I once worked with Java, even on the Java implementation itself. I understand the religion better than many of its fanatics - this too, is capable of being explained.
James Clarke
Ranch Hand

Joined: Oct 04, 2004
Posts: 148
I don't find it strange at all, rather, entirely able to be explained without contradiction whatsoever. But I'll leave that for now


Well since you had brought this 'issue' up please do explain the seeming contradiction.

You must remember, I once worked with Java, even on the Java implementation itself. I understand the religion better than many of its fanatics - this too, is capable of being explained.


Please do not spare the explanation, do tell.. whats the point of posting on a forum otherwise ?

J.C
Arul Jose
Ranch Hand

Joined: Jan 14, 2005
Posts: 131
i think he says 'start with a lang like c or lisp then come to java'.

i have talked about it here.

[ March 01, 2007: Message edited by: Arul Jose ]
[ March 01, 2007: Message edited by: Arul Jose ]
Ilja Preuss
author
Sheriff

Joined: Jul 11, 2001
Posts: 14112
I think if we look at the world as a whole, it becomes quite obvious that popularity has not much to do with quality.

One reason why Java is so popular today is that it was specifically designed to look very similar to C++, syntaxwise. After all, "how easy is it to get a significant number of programmers" is at least as important for a manager as "how good is the language". Java simply was designed to serve that need - it simply was clever marketing.

I agree that Java is not a good language for CS courses. I don't think that is because Java is too easy, though. I think CS courses shouldn't teach languages, they should teach concepts. And there are simply better languages to teach the OO paradigm than Java - "more pure OO languages" if you will. (I also agree that there is much more to learn for a CS student than just OO.)
 
It is sorta covered in the JavaRanch Style Guide.
 
subject: Java programmers lack mental agility ?
 
Similar Threads
Python as a first language
abstraction
Software Engineering Approach
[English] "What happended" vs. "Whatever happened"
How to store foreign characters from request parameters to beans