Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses

Re^2: Programming is combat

by brian_d_foy (Abbot)
on Jul 08, 2004 at 17:17 UTC ( #372865=note: print w/replies, xml ) Need Help??

in reply to Re: Programming is combat
in thread Programming is combat

Ah, yes, indeed. Thanks.

In my military circles, we call this "muscle memory" (although it probably exists elsewhere, too). Do a physical movement, like drawing a pistol from a holster, a couple thousand times and it seeps into your brain so that you don't have to think about it.

For instance, I have this really annoying keystroke memory in my fingers. If I want to change into a directory, I type "cd <return>", then out of nowhere I type "make <return>" even if that is not what I meant to do. I just do that sequence so often that it flows right out. Even worse than that is "make test <return>" showing up at any random coomand prompt.

brian d foy <>

Replies are listed 'Best First'.
Re^3: Programming is combat
by Elgon (Curate) on Jul 09, 2004 at 10:24 UTC
    Interesting node,

    On the subject of practice makes perfect, what I'd add is this; It doesn't!

    Let me qualify this; The technique of repetitively practicing a given action to effectively program your brain to perform this action without the need for thought is well stablished in sports science and military training. What you are actually doing is programming your cerebellum, which coordinates movements, to coordinate a given set of movements perfectly. The big but here is that to make this truly effective, you must make sure that the practice movements are exactly as the intended movement must be when used in anger.

    As a friend of mine once said, "Practice does not make perfect. Perfect practice makes perfect."

    The bottom line for this in programming is that you must practice programming as you mean to program "in anger"; Don't take falsely lazy shortcuts, for example.


    PS - Interestingly enough, I learned this principle largely in Long Range Rifle Shooting, in which I compete at international level.

    "Stercus! Dixit Pooh. Eeyore, missilis lux navigii heffalumporum iaculas. Piglet, mecum ad cellae migratae secundae concurras."

Re^3: Programming is combat
by adrianh (Chancellor) on Jul 09, 2004 at 15:31 UTC
    For instance, I have this really annoying keystroke memory in my fingers...

    Every Unix account I've had since 1988 has had 'adrianh' as my login. It's now burned into my fingers and I cannot type/write 'Adrian' without adding the final 'H' unless I'm trying really hard.

    This can be annoying when you're filling in tax returns, etc. ;-)

Re^3: Programming is combat
by NovMonk (Chaplain) on Jul 08, 2004 at 17:52 UTC
    Well, yes, but programming, and singing are not primarily physical, muscle memory, things. Both require a lot of conscious thought, and carry a temptation at times to do what's needed to "get by." Maybe that's where the "programming as combat" metaphor begins to break down.

    There are times when it's absolutely appropriate to "get by"-- sometimes writers, to use another example, will combat writer's block by writing something they know isn't good, with the intention of changing it later. But in general, it's important to remember that you perform what you rehearse-- and it's a good idea to take the time to get the notes really solid before you go out on the stage. Or to apply it back to programming, habits of thought affect how you approach new problems, what it occurs to you to try to make things happen-- and that's a case where having practiced good programming practices can really save your behind.

    Obviously, I've been doing too much reading lately in my self-improvement quest. I'll add your book to my list if you finish it though, if only to show good monastic solidarity (probably won't buy it, but I'll encourage my local library to. Sorry, no independent wealth here. That vow of poverty really stinks sometimes.)



Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://372865]
[NodeReaper]: you're all quackers

How do I use this? | Other CB clients
Other Users?
Others exploiting the Monastery: (5)
As of 2017-05-25 07:06 GMT
Find Nodes?
    Voting Booth?