Really now, this has got to be the last exchange. I
don't think I can be any
more conciliatory without just giving up. Here's a reply from Joseph
McConnell:
> I can't really agree with your comments, based on
my
experience. We have 800 developers in our division....
The situation you describe is very unusual in experience, 16
years MacOS, and others, shrinkwrap dev experience, worked on,
with, for, or seen up, close to 70+ development groups, mostly in
the Valley. And in my experience good programmers only use
printfs when high level tools like source level debuggers are not
available. And I've even seen dev groups who could not even use
printf's. They had to use logic analysers to debug their code
(the Sega Genesis CD console).
Everything you say about specs and an ordered development
environment I agree with 100% but in the real world of writing
shrinkwrap consumer software, especially internet related
software there are rarely any meaningful specs, tech or
otherwise, and never realistic schedules. In my development world
I have to get up to speed in a new codebase (usally multi 100K
locs) in a few days and start making real conributions within a
week. If I'm working in an environment that does not have a good
source level code debugger the ramp up time is dragged out from
days to many weeks. Instead of being able to trace execution
paths for the part of the code I'm interested in I have to work
them out by code inspection, which is a very slow process. Noone
is happy, not me, not the client..
If you are writing faceless code, code with no UI, code that does
not use large class libraries, unix pipe tools, or code for large
federal or tendered projects then printf'ing may not slow you
down too much, but in all other coding situations my original
statement, a good programmer with a good source level debugger is
an order of magnitude more productive than one reduced to using
printfs.
And here's my reply. I'm still trying to state what I
was originally replying
to, becuase I think that James and Joseph have been arguing about
something
different:
|
Ok, I concede based on your (and James') greater
experience.
Debuggers are useful and necessary in the majority of programming
situations. There are two specific things that I still dispute:
1. (From James) CodeWarrior Java support (with its lack of a good
debugger) is insufficient to do serious work. All that I can say
is that my group codes 90% in Java and we've written client and
middle tier modules without using debuggers. Note that I'm the
only developer using CodeWarrior in my group (everyone else is
using Visual Cafe on NT) and it fills my personal needs just
fine. So my contention is that there are Java programming
projects that do not need a debugger (a debugger may help a lot,
but it isn't needed).
2. (From you) Kiddie coders use printf, real programmers use
debuggers. I realize that this was a response to Miles' rather
ill-worded statement that "serious coders rarely need or use
debuggers". I don't think I've ever said that, although perhaps
it was implied in my posts, for which I can only say that that
opinion is not mine. I'm unlikely to ever say "these kind of
people do this" unless I'm having a bad day. I try to keep things
to "in my experience I've seen this". With that in mind, I can
say that my group has done GUI modules, back end modules,
interface modules, over two major releases and several minor
releases, totaling 10s of thousands (I doubt it's 100s of
thousands unless you count all revisions) of Java code (although
that's with a whole lot of in-code commenting), all of which we
wrote (which helps to explain why we don't have that many bugs,
and therefore less need of a debugger). In our situation we have
not used debuggers, we consider ourselves professionals, and it
is my contention that using printf (or for Java, println) does
not automatically mean you're a kid coder just out of high
school.
Oops, I lied. Those are the two things that I've been disputing
all along. I had no opinion on debuggers other than "I don't use
them, and my programs turn out well". Now, thanks to you and
James, I think that debuggers can be useful in many situations
and that I shouldn't discount them from my programming projects.
I don't think I said that debuggers are good or bad, just that
they aren't needed in all Java programming situations. I still
believe you can write big, function-laden Java programs without a
debugger (heck, without an IDE, although that would take a better
man than me). Whether people in general should or should not use
a debugger, I don't really have an opinion on.
Once again, we'll see if I was conciliatory enough, or
if my tone was once
again a bit too confrontational.
|