My Thoughts about Joel On Java
It
seems that Joel's article about Java in the Universities has made quite a bit
of noise. I think that I will add my two cents to the mix.
Two
things pissed me about the article. The first was the claim that CS should weed
the bad from the good, and the second was his treatment for OOP (agonizing over
has-a & is-a is so not OO).
I
completely disagree with the claim that CS* classes should function as
discriminators between good and mediocre programmers. That is his problem, as a potential employer, to
weed out the great from the mediocre. And if he can't do that in about a week,
regardless of technology or project that they use, then the fault is with him,
not with the graduate. Being proud because you were up until 4:00 AM chasing a
null pointer dereference and broken stack is not
the sign of a productive developer. I wrote all the linked lists and
hash tables that I ever intend to write. Hell, I even spent some time writing a
sparse matrix in C++ that was multi dimensional and efficient. I see zero need in them outside of the class
room.
I
will walk out of a job interview
where the test is being able to write a linked list in C or C++. I have done so
before where the questions where at about this level. You want me to deal with
pointers, give me a job that requires
that I will deal with them. That has better not be a bug tracking software in
ASP 3.0 (what Joel sells).
The
second part, about OO design being "spending countless hours rewriting
your code to rejiggle your object hierarchy, or you fret about faux 'problems'
like has-a vs. is-a" is just bull. I'm programming since I was ~14 years
old or so (if you don't count making a turtle dance in Logo), I started in
Pascal & VB 3.0, I later moved to C & C++, and then to C#. The last
time I thought about has-a vs. is-a was when I was learning C++ and was very new to OO. Since then, I didn't touch
this stuff, and I produce good OO code. Most of it is online, and you can check
it out.
Then
there is the whole premise of the article, which seems to be that you need to find
a Segmentation fault [sic] and fix
it in order to be Real Programmer.
Been there, done that, boring. I
consider good design much better
than knowing how to handle naked pointers. You know what, show me a good C++
coder that still go on to do
that, when all the best practices for C++ are full of RAII and safe pointer
wrappers.
Now,
that said, he does have some points that I agree with. Recursion is a good,
clean, way to solve a certain set of problems, and understanding pointers is
very helpful in understanding how computers think. And understanding functional
programming is very good for being able to write clean code later on.
* I'm
currently studying for a CS degree (just started), but I know about 85% of what
the degree will teach me because I wanted to learn and a university wasn't a
possibility at the time. I've a job, which I like, and I got it because I like
what I'm doing, not because I had a degree or a certification.
Comments
Comment preview