Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"

Re: Programming is combat

by NovMonk (Chaplain)
on Jul 08, 2004 at 12:34 UTC ( #372769=note: print w/replies, xml ) Need Help??

in reply to Programming is combat

I'd like to suggest an alternative to BrowserUK's comment "practice makes perfect," and one that his example actually brings out quite well. Practice makes permanent. That is, what you do, even while you're just "practicing" becomes habit. So it's worth the extra time to get it right, every time. I heard this in the context of a singing workshop, but find it has applicability in most areas of my life.

Good node, and good discussion. ++ and Thanks.



Replies are listed 'Best First'.
Re^2: Programming is combat
by brian_d_foy (Abbot) on Jul 08, 2004 at 17:17 UTC
    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 <>
      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."

      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. ;-)

      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
Domain Nodelet?
Node Status?
node history
Node Type: note [id://372769]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others avoiding work at the Monastery: (2)
As of 2023-10-03 23:44 GMT
Find Nodes?
    Voting Booth?

    No recent polls found