Friday, December 30, 2005

Java Schools

Joel has a very good article on the quality of students produced by schools that primarily teach Java. I couldn't agree more. I interview quite a few people and when I see a resume covered with Java buzzwords I get afraid. I get even more afraid if I don't see some kind of solid experience with C/C++.

I have found that people coming from "JavaSchools" or just a very Java oriented background tend to think through the language rather than theoretical abstractions. For example, they will talk about using a HashMap or TreeMap to solve a problem rather than a hash table or red black tree. If you try to dig in and get them to tell you how to implement a TreeMap, their head usually explodes.

Now, there are a lot of interesting, difficult topics to discuss about Java and that is where I usually like to take the discussion. For example, how does Java manage memory? Most people quickly proclaim: garbage collection! How does garbage collection work? Blank stare. Sometimes I feel lucky if I get through a discussion of what the stack and heap are. I don't understand why people aren't curious about how the environment in which they are developing works..

Another phenomenon I've seen with these folks is framework overload. Whatever the problem is, there is a framework to solve it. Setting up a website? J2EE, Struts, Faces, they shout! That's great. Having a robust toolbox at your disposal is a good thing, but too often I find that people haven't thought about if it is the right tool for the job, or even considered the weaknesses of the tool. Oh, you want to use J2EE? That's cool, what are it's downsides? More blank stares..

The lesson here is pretty simple. Learn the fundamentals and stick to them. Implementations will come and go. Frameworks will come and go. The theoretical foundations you (hopefully) learned in school will hold true for a long time (if not forever) and will serve you regardless of trendy language of the day.


At 9:16 AM, Blogger Randal said...

This has been my experience too. I'm sure this is something that the schools have to work out as well. I have heard anecdotally that students in these “java schools” have a difficult time when they hit a junior or senior level OS class. Any decent OS class has the students modifying real source code, which is typically in C. I wonder if digging into OS fundamentals in an interview might be useful. I’ll have to check that out myself. Thanks for the article. You know I love this subject.

It is humorous for me to remember feeling the same way about “C only” students who had not taken my assembly class. ;)

At 9:30 AM, Blogger Doug W said...

I always wondered if old school assembly people felt that way about C people. It seems like this whole thing is a continuum. Maybe someday the Java people will think all of the people using the new hot language are all stupid too. Shudder.

At 1:15 AM, Blogger Jim Carson said...

The JoS article made its rounds at my office, too and because many of us are older, we wondered if the C/assembly paradigm applied.

On the other hand, I was weaned on FORTRAN programming and felt that was an entirely different thing than C or even assembly. With C, I had to think much harder about recursion and memory allocation. With assembly, it was about not tromping over registers when catching hardware interrupts.

When I was in grad school, the CS department decided to throw in some hardware and systems questions to humor those of us in the computer engineering group who felt left out. We were surprised how many people thought the disk heads rotated around the cylinder.

At 4:53 PM, Blogger Nellie said...

Amen bro... although I have to admit I'm in the Microsoft camp these days (they don't even give us Xbox 360s). As it is, I've interviewed people who barely know the basics of OO, much less the language(s) and platforms they choose to work in.

"What is abstraction?"

"What is an interface?"

And so on...

I think the .com boom created a lot of "programmers" (out of history majors?) and not enough "computer scientists".

2 cents.


Post a Comment

<< Home