kcw | journal | 2000 << Previous Page | Next Page >>

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.

Copyright (c) 2000 Kevin C. Wong
Page Created: August 18, 2004
Page Last Updated: August 18, 2004