I <3 Steve McConnell*
Coding Horror
programming and human factors
by Jeff Atwood

March 24, 2006

The Value of Repetition.. Again

I was struck by a comment in Steve Yegge's not-so-new blog:

How could you have arrived at [the conclusion that top tech companies do a good job at interviewing] after reading this blog entry? Did you read a different post than the one I wrote? I said interviewing is a terrible mess, and 10% of all interviewers ask the same ridiculous questions to every candidate year in and year out, and I'm not a fan of interviewing the way it's practiced in our industry, on account of it being a "crapshoot", and that even good engineers can wind up not getting offers [because of the inherent randomness and poor selection power of the process most places use.]

I've often been accused of repeating myself. But I firmly maintain that there is absolutely no shame in repeating yourself. In fact, you should be repeating yourself. And here's why. At any given time, only a fraction of the people listening to you will really hear what you're saying. If you repeat your message a few times in different ways, you increase the odds of getting your message across.

Now, that doesn't mean that you should pound on the table and state the same sentence five times:

I understand the value of repetition.
I understand the value of repetition.
I understand the value of repetition.
I understand the value of repetition.
I understand the value of repetition.

Mechanical repetition isn't helpful. It doesn't enhance understanding.

Bart Simpson at the blackboard

But covering the same topic using a variety of different viewpoints definitely does.

To emphasize my point, I'll just repeat a post I made to my Vertigo blog.

Seth Godin has an interesting insight about repetition:

Of course you're listening. You're the one that's sharing such valuable insight with the universe. You're busy talking about your product or your new book or your organization. You walk into a meeting and there are four impatient people sitting around the table, urging you on, faster faster faster don't waste our time.

So you assume that they're getting it the first time.

They're not.

Odds are, your very clear, very useful ideas are getting garbled in translation. I'll do a post on a topic, and people will trackback to it, announcing that I've said something quite different. I double check my riff to be sure I said what I meant to say, and yes, I did. But they didn't hear me.

It's so tempting to compress your ideas into the smallest possible space and assume that the text or the images or the design will carry the day. But we know that repetition is essential.

The paradox is that the long stuff gets skipped. The long stuff gets ignored. Short books sell better, short commercials get more viewers. So repetition becomes essential. It'll bore your biggest fans, but you can do that (a little).

Sticking to (and building on) your story works if you do it over time.

I've always felt that repetition helped me learn. And I repeat myself to help others learn.

We're often accused, as software developers, of writing solutions to the same problem over and over. I don't see this as repetition, but practicing the fundamentals:

The problem the Parelli's see in those trying to transition from skilled amateur to expert virtually always comes down to something from the fundamentals that they either never quite mastered, or that they forgot over time. So, perhaps that's one more thing the superior performers do better than the rest of us--they keep practicing the fundamentals. This fits with the notion that experts practice things that aren't necessarily fun, which can include both the things they still don't do well, AND the non-exciting basics.

Bert Bates (my co-author) is a blackbelt level go player, one of the best amateur players in the state. But when a visiting expert--four belt levels above Bert--showed up at the local go tournament, Bert was surprised to see the guy reading a book on fundamental go problems that Bert had read much earlier in his learning. The expert said, "I must have read this at least a hundred times. My goal each time is to see how much more quickly I can solve all the problems in the book than I did the last time."

I absolutely love practicing the fundamentals. I can never get enough of Hello World, and I happily re-read Code Complete and The Pragmatic Programmer about once a year.

Posted by Jeff Atwood    View blog reactions

 

« But It's Just One More Making Considerate Software »

 

Comments

As Anthony Robbins has said (and many others), "Repetition is the mother of skill."

I agree completely. I always review the basics. I'm no longer surprised at how many new things I discover that I missed the previous times.

Mark Freedman on March 24, 2006 04:55 PM

Mark,

You have to be careful there though. It's not a 2-way street. While skill may come from repitition, repitition does not guarantee skill. I've seen people repeat the same thing over and over again for years and never get any better at it. I don't know why. Most people would either get bored with it or try new ways of doing it, but some people just plod along at the same level for eternity.

Darrin on March 24, 2006 05:59 PM

Which leads to another thing that has often been said (I've got to stop quoting others and start making up some of my own ;) ) -- "Doing the same thing again and again, and expecting different results is the definition of insanity."

Yep, I do realize I was being very simplistic in my statement. It may not necessarily be repetition in and of itself that increases the skill level, but the fact that it's always a different version of yourself going over the same material and discovering new things you may have missed before, or seeing things from a different angle than before. That's why it's often worth the repetition.

Mark Freedman on March 24, 2006 08:22 PM

- freshman comp (& journalism 101): tell em what you're going to tell em, tell em, tell em what you told em.

- effective teachers/instructors/profs never just read the book back at the students during class (though some students would rather they did), but find multiple alternative narratives for the material. it only seems easy until you have to do it.

Buggy Fun Bunny on March 24, 2006 08:55 PM

I think definatly covering from different viewpoints is helpful. However, many people mistake this to signify they should just repeat the same thing over.

[ICR] on March 25, 2006 12:44 PM

Repetition is the heart of successful advertising, else Coke would never need to buy an ad again.

mike on March 25, 2006 04:05 PM

And actually, on a somewhat more productive note, I agree with Jeff -- I reread favorite books periodically and learn, or relearn, something each time. Repetition helps internalize things -- musicians and music, craft of any sort, reading and writing.

mike on March 25, 2006 04:07 PM

In the words of King Crimson:

I repeat myself when under stress.
I repeat myself when under stress.
I repeat myself when under stress.
I repeat myself when under stress.
I repeat myself when under stress.

BJ Safdie on March 26, 2006 07:53 PM

The article about Parelli mentions repetition in the light of learning gained- I think this is particularly important - I've been training as a ninja for years (no, I honestly have) with the club at my local university and each year with the new intake of students we end up going right back to basics and each year there is something new to learn from simple techniques that seemed - last year - to have been mastered. In terms of programming I often find that having put together a big project in a different language makes me think differently about how I should be working in my more regular and familiar environments- currently I'm back with C# after a while working in Ruby and there are a fair few things I'm seeing very differently. Also, I keep forgetting to terminate lines with semi-colons...

Ben Moxon on March 27, 2006 10:00 AM

Repetition of code usually reflects a repetition of problems. The fact that there are subtle differences in the problem and usually matching subtle differences in the solution is often lost on people.

People take for granted all the things they take for granted. Computers do not adjust to even minor changes in a problem, someone has to do it for them.

And then you get into the slow and tedious process of refining the originally described problem...

Xepol on March 27, 2006 10:04 AM

> I've been training as a ninja for years (no, I honestly have)

Best. Comment. Ever.

Jeff Atwood on March 27, 2006 12:36 PM

I equate repetition with practice. I think Michael Jordan once said the game is won on the practice court. Repeat the same moves over and over until it becomes ingrained in you, then in the actual game situation your reactions become second nature. Same goes for software development.

robtwister on March 27, 2006 02:02 PM

Here's an old favorite saying that wraps it up nicely - "The only difference between an Amateur and a Professional is that the Professional has mastered the fundamentals."

Jay Pondy on March 27, 2006 02:10 PM







(hear it spoken)


(no HTML)




Content (c) 2008 Jeff Atwood. Logo image used with permission of the author. (c) 1993 Steven C. McConnell. All Rights Reserved.