Beginners and experts (Batchelder blog post)
Bill
BILL_NOSPAM at whoknows.net
Fri Sep 29 15:14:47 EDT 2017
Chris Angelico wrote:
> On Sat, Sep 30, 2017 at 2:42 AM, Steve D'Aprano
> <steve+python at pearwood.info> wrote:
>> Oh, and I'd like to make a (moderate) defense of a kind of "bug fixing by random
>> perturbation". Obviously making unrelated, arbitrary changes to code is bad.
>> But making non-arbitrary but not fully understood changes to relevant code
>> sections can be useful in (at least) two scenarios.
>>
>> (1) I know there's a bug in a specific chunk of code, but I'm having trouble
>> working out where. When everything else fails, if I perturb the code a bit
>> (reorder lines, calculate things in a different order, rename variables, etc)
>> it may change the nature of the bug enough for me to understand what's
>> happening.
>>
>> That's not *random* or *arbitrary* changes, but they are changes not directed at
>> any specific outcome other than "make the code a bit different, and see if the
>> error changes". I'd like to say it is the debugging technique of last resort,
>> except its perhaps not quite as *last* resort as I'd like, especially in code
>> I'm not familiar with.
>>
>> Its an experiment, but not really "carefully designed".
I'll write for the possible benefit of any beginners who may be
reading. I guess by definition, if one still has a "bug" it's because
one doesn't quite understand what the code is doing. And I would say you
should lose your license if you "fix something", and don't understand
why it works (within reason of course--some mystery's of library
functions should probably remain so forever). So ADT (Any Damn Thing--I
just made that up that acronym) you can do to understand your code
better is fair game! : ) In fact, in my experience, the sooner you
start getting a little bit angry, the sooner you'll get to the heart of
matter. Usually, what looks like a long route, isn't, in the end.
Don't be afraid to write *really descriptive* output statements, and do
so even though you "don't need to". Besides for making you more
productive, it will help soothe you : ) Beginners almost never need
to... I think that getting out of the beginner phase requires
developing a certain amount of humility. Just wait 5 or 10 years, any
look back, and see if what I've written isn't more true than false.
The only part I am unsure of is whether you are supposed to get a little
big angry or not (YMMV). I find 2 cups of coffee about right. That is,
2 before and 2 after lunch. Of course, that does not include "meetings".
More information about the Python-list
mailing list