# What is the significance of 10 characters in this Uncle Bob post?

In this blog posting by Uncle Bob

http://blog.8thlight.com/uncle-bob/2012/04/20/Why-Is-Estimating-So-Hard.html

Author states a possible solution to the problem at hand. He writes "Try this. Break some long string of text up into columns that are 10 characters long. Each time you break a line, record the position of the break, and why you decided to use that position."

The problem is about breaking the Address into 13 character columns, so where does 10 come into play? Or is he using that as another example unrelated to the Gettysburg one?

I'd like to present this to my team in a presentation I have to do soon. I plan to describe the posting, describe the problem and ask my team members for their estimates. After I would go on to explain the rest of the postings premise about why estimations are often blown.

Feel free to offer suggestion on how I can make this a good presentation. I can visualize most of it but towards the end it feels light. After the quick survey, I focus on the problem of estimating the wrong thing and then offer the solution.

-
I think that's imply a different example. – CodesInChaos May 11 '12 at 10:40
Probably the fact that most English words are less than 10 characters long and that length forces many breaks. – Oded May 11 '12 at 11:00
If you read it more carefully you will see that the font he is using is mono-spaced 10 characters per inch. The bookmark is 1 and a half inched wide so leaving some margin space at each edge he has limited you to 13 characters per line (including spaces). – James Anderson May 15 '12 at 7:44
You could code up a nifty web page and have a javascript "animate" the splitting task. – James Anderson May 15 '12 at 7:45

Just over five minutes -- bless you python:-

``````ss = """Four score and seven years ago our fathers brought forth upon this continent a new nation, conceived in liberty and dedicated to the proposition that all men are created equal…"""
wrds = ss.split()
lo = "";
lt = "";
print "-------------"
for wrd in wrds :
lo = lt
lt = lt + " " + wrd
if len(lt) > 13 :
print lo;
lt = wrd;
next;
print lt;
print "-------------"
``````

The algorithm is the nearest I could come up with what you actually do as a human, count past 13 then backtrack to the last space.

-
Or one line of shell utility: `sed -e 's/\(.\{1,13\}\) /\1\n/g'` – Blrfl May 9 '13 at 20:47

It's a tiny bit clumsy, but he's trying to separate the example at the end (take any long text and break it down into 10-character lines) from the more specific one earlier (take the Gettysburg address and break it into 13-character lines). But he could have picked any number there, 10 is just a nice round number from which to extrapolate the three parts of the procedure.

If I were using this as a presentation (assuming my audience have access to computers), I would:

• pick a well-known text (probably an amusing one, just to inject some fun).
• pick a number which hits as many test conditions as possible -- at least the three that Uncle Bob describes.
• get each pair in the room to do the job manually and then estimate the programming task.
• let them code it (within some kind of time limit).
• see how many hit their estimates (or still believe they will, after the time limit expires).

I'll bet most don't.

In the spirit of interactivity but the absence of hardware, I'd do the coding myself, still letting the audience both estimate the task and tell me what to code and when. For example, let them identify a test, write it, make it pass until you're sure it's complete.

-
My audience is devs, qa, management and designers. No access to computers except my own as the presenter. Maybe we'll walk thru a psydo code exercise just to see how we would create the procedure. I'm thinking I'd put the text in a string variable and the method would out put it to the screen for simplicity sake. Thanks for the suggestions. – Mike R May 12 '12 at 13:31