It basically says that - Java is not a good language to differentiate between excellent and mediocre programmers
Any college that becomes "all java" or focuses most of its curriculum on Java is at a disadvantage. Greater importance
must be given to C.
I couldn't agree more. Java hides so many things, which is good from the productivity and reusability point of view. But
mainly java or only java, is not good for beginners. To learn CS, master C and then master Java.
here is an excerpt from the article -
Nothing about an all-Java CS degree really weeds out the students who lack the mental agility to deal with these concepts. As an employer, I've seen that the 100% Java schools have started churning out quite a few CS graduates who are simply not smart enough to work as programmers on anything more sophisticated than Yet Another Java Accounting Application, although they did manage to squeak through the newly-dumbed-down coursework. These students would never survive 6.001 at MIT, or CS 323 at Yale, and frankly, that is one reason why, as an employer, a CS degree from MIT or Yale carries more weight than a CS degree from Duke, which recently went All-Java, or U. Penn, which replaced Scheme and ML with Java in trying to teach the class that nearly killed me and my friends, CSE121. Not that I don't want to hire smart kids from Duke and Penn -- I do -- it's just a lot harder for me to figure out who they are. I used to be able to tell the smart kids because they could rip through a recursive algorithm in seconds, or implement linked-list manipulation functions using pointers as fast as they could write on the whiteboard. But with a JavaSchool Grad, I can't tell if they're struggling with these problems because they are undereducated or if they're struggling with these problems because they don't actually have that special part of the brain that they're going to need to do great programming work. Paul Graham calls them Blub Programmers.
There's no such thing as an all-Java CS degree, or at least there ought not be. The CS landscape is extensive, and far more concepts are far more difficult and far more important to understand than pointers in C. The article is an absolutely riddiculous oversimplification of reality.
Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.
That article is getting dated - although in all fairness it always was. A school shouldn't just teach C and Java either. There should be at least one functional language (we used Lisp - Scala would be fine) among other things. We learned assembly language too which was interesting and fostered an appreciation of that level.
David Blaine wrote:Any college that becomes "all java" or focuses most of its curriculum on Java is at a disadvantage. Greater importance
must be given to C.
The complaint may have some small amount of merit in a trade school. It has no relevance at all in a Computer Science degree. A BS in CS is not a trade school certificate. Its about the Science of using Computers. The programming language that you use to do exercises is irrelevant, just as the human language used to teach is not relevant. Suppose the article was talking about English and French, and saying that if you are taught CS in French, you are at a disadvantage. You would be laughed out of any serious discussion.
The topics in a CS degree are algorithms, data structures, databases, compilers, etc. They have nothing to do with the particular implementation language. Just as they have nothing to do with the difference beween say Oracle and MariaDB.
IMHO, the majority of firms hiring programmers want dumbed down programming, as its hard enough to make a large project work.
Joel Spolsky wrote:The recruiters-who-use-grep, by the way, are ridiculed here, and for good reason. I have never met anyone who can do Scheme, Haskell, and C pointers who can't pick up Java in two days, and create better Java code than people with five years of experience in Java, but try explaining that to the average HR drone.
To me, this seems a typical 'C/C++ is better than Java because it is more difficult to use' sort of article.
What C pointers has to do with OO design? And don't even get me started on Java code meant for production environment. I bet Joel has never had a client who wanted the code to be written in Java (because the client has to ship the product in multiple OS), the code is going to be run for months (without 'core dumps' of course) and then, the client says that 400 millisecond is 'huge' time, and code must be faster than that (believe me - configuring an efficient garbage collector is not a joke).
There, the experience of 5 years comes into picture, and there, a person who has picked up Java in 2 days flats out.
I've worked in C++ and Java. Both are beautiful languages. Java is my personal favorite. But then, every programming language has its own purpose. C/C++ would be my first choice to write device driver, and Java would be obvious choice to develop enterprise application.
Besides, a good developer picks up any programming language quicker than a bad/mediocre developer (but I seriously doubt if it is '2 days').
By the way, is it just a coincidence that the article does not have any facility to log the comments?
When I read the article, I got the feeling Joel was doing the same thing the 'HR Drones' he criticizes do: you have too many applicants to really qualify, so instead simplify the processes by generating generic litmus tests to eliminate people without having to think based on arbitrary experience. The rest of the article has the same character as the trolls who used to go around the forums posting in C++ versus Java flame wars.
Anayonkar Shivalkar wrote:Besides, a good developer picks up any programming language quicker than a bad/mediocre developer (but I seriously doubt if it is '2 days')
I could believe that an experience programmer who has used half a dozen other languages can pick up Java the language in two days, maybe fewer. But Java is not the language, its an environment with hundreds of libraries. Sadly, the libraries are independent and have differing calling styles and philosophies. I can't see anyone picking up the serious libraries in even two days per library.
Ernest Friedman-Hill wrote:This old article has become rather ironic, given that Joel's masterwork -- StackExchange -- is written in Java^H^H^H^HC#.
Wow really ?
Yeah - but to be fair, Joel seems to have had little to do with the implementation; it's Jeff Atwood who spearheaded that. And their use of a particular implementation language wouldn't really have much to do with the main point of the article anyway, which is about languages to educate CS students. Which is not to say that Joel isn't full of a fair amount of crap here - but hey, it's not the first time a website is run by a pompous windbag, and it won' t be the last.
Joel may be a good business man or a programmer. But these things will not help anybody. I am a Java Programmer and I love it. And if somebody feels that Java Programming does not need a brain then I can't say anything. Anyhow Joel is trying to get popularity by reacting against popular things.
" I used to be able to tell the smart kids because they could rip through a recursive algorithm in seconds"
My experience as a student and as a teacher is that recursion when first presented was mindblowingly difficult -- both to understand and to use. And then, after spending a week going through The Little Lisper (http://en.wikipedia.org/wiki/Daniel_P._Friedman), recursion becomes easy and natural.
So if someone can rip through a recursive algorithm in seconds, it might simply mean that they read the right book.