Skip to main content

What If We Used Common Sense?

Joe Marasco, CEO, Ravenflow
Joe Marasco
Recently appointed CEO of Ravenflow, an Emeryville, California-based company delivering precision requirements validation for software developers, Joe Marasco served as senior vice president and business unit manager for Rational Software prior to the company's acquisition by IBM. He held numerous positions of responsibility in marketing, development, and the field sales organization, overseeing initiatives for Apex and Visual Modeler for Microsoft Visual Studio. After retiring from Rational in 2003, he published The Software Development Edge, a collection of his essays on software project management originally published in The Rational Edge. He holds a Ph.D. in physics from the University of Geneva, Switzerland, and an M.B.A. from the University of California, Irvine.

Summary:  from The Rational Edge: Marasco's fictional sage, Roscoe Leroy, demystifies the jargon used within software development circles.

Date:  15 Jan 2002
Level:  Introductory
Activity:  377 views
Comments:  

Illustration We sometimes tend to get a little wrapped up in the jargon of our trade: process frameworks, iterative development, and the like. What would happen if we had to explain this stuff to "civilians"? This month we meet one such candidate: Roscoe Leroy.

Roscoe Arrives on the Scene

The first thing to know about Roscoe is this: Don't make fun of his name. "It shows my parents had a sense of humor. Besides," he always adds, "it could have been worse. They could have named me Leroy Leroy."

Roscoe, it turns out, is an old war buddy of my dad's. According to Roscoe, they both served under Patton, although my guess is that my dad served directly under Roscoe, and Roscoe served somewhat remotely under Patton. Mr. Leroy (one never calls him that) is one of those old salty dogs who has an opinion on just about everything. The annoying thing is that he is right so much of the time.

Of course, when he is wrong, the results are not pretty, because he is willing to back his convictions to the hilt. I have seen Roscoe push all his chips to the center of the table, confident that his poker hand was the best. The results were spectacular, but not always in the way Roscoe would have liked.

On the plus side, Roscoe's wisdom is simple and easy to understand. It comes in the form of very prescriptive advice. So long as you don't probe too much for deep theory, you'll be fine. Going with Roscoe is a leap of faith, one that we might all benefit from taking when the chips are down.


Roscoe's Qualifications

Roscoe has been there and done that. He boasts of having finished the eighth grade, but I have it on good authority that he graduated from an excellent high school some time in the thirties. My dad explained this discrepancy to me simply by saying that Roscoe felt it unnecessary to flaunt his education.

At various times, Roscoe has served in the military, fought oil well fires with Boots and Coots, 1 and been a mining engineer. Those experiences made him a pragmatic kind of guy, but they also taught him how to perform under pressure. He does manage to get all the dirt out from under his fingernails if you invite him to dinner, but don't expect too much use of the salad fork.

Roscoe doesn't do math, really; he does arithmetic. Answers tend to come out of his mouth in whole numbers. When asked about this, his reply is along the lines of, "Well, it always comes down to how many sticks of dynamite you need to make the hole, and how many men you need to clean it up. I don't cut my dynamite in half, and I don't hire fractional people." When he puts it like that, you know you are done.


Chocolate Versus Vanilla

Roscoe showed up at my house a while back with a copy of USA Today under his arm. "Looks like even McPaper is starting to understand," he said, knowing I would be unable to resist taking the bait. When I asked him what he was talking about, he showed me one of the little squibs in the corner of the page: 52 percent of the population prefers vanilla ice cream, 48 percent chocolate. From my perspective, that registered pretty high on the "so what?" meter.

Then Roscoe offered the following. "Notice what it says below the little bar graph: Accuracy 2 is plus or minus three percent. Now that is significant. For years they published these factoids without any indication of the error bars. We must be getting less stupid about polls, if they think they have to tell you the likely error."

I had to admit I had never thought about it that way. I also was intrigued by why Roscoe thought it was interesting.


Roscoe Explains

"Of course," he said, "three percent error is important, because the total spread in the preference is only four percent. So we can't be really sure. But I'll tell you one thing: I bet I know how many people they asked."

Certain that Roscoe had never taken a probability and statistics "seminar" that didn't involve poker chips, I was about to learn otherwise.

"Here's my guess," he continued. "They talked to about a thousand people. The error on a thousand answers is roughly the square root of a thousand, which is 31.4. Thirty one over one thousand is 3.1 percent, which of course is roughly three percent."

"Wait a minute, Roscoe," I jumped in. "The square root of a thousand is 31.6, not 31.4."

"There you go, letting your education get in the way again. Any fool can remember that the square root of ten is pi, which is 3.14. For a thousand, move the decimal point one place in the answer: 31.4, done deal."

Well, my math was more accurate, but seeing as how we were going to round off anyway, the difference did seem academic. And it did seem like a fairly reasonable calculation.


Roscoe Goes Deeper

"I'll tell you another thing," Roscoe continued. "You'll never see that kind of squib with an error bar of, say, one percent."

I thought about that for a couple of seconds, but Roscoe wasn't patient enough to wait for my thoughts on the subject.

"Doesn't take an Einstein to figure out why, either. If you use the same logic, you'll see that they have to talk to ten thousand people to get the error down to 100, or 1 percent. That's ten times as expensive as talking to a thousand people. So to push the error down from 3 percent to 1 percent, it costs you an incremental factor of nine."

"Ten," I thought to myself. Then I realized you could reuse the first thousand in the second sample. Never misses a trick, that Roscoe.


Roscoe's Calendar

By now I had developed a belief that Roscoe had learned about square roots. This was confirmed when I talked with him about projects and schedules. His assumptions about the number of weeks in various periods was, well, curious. The following table encapsulates my discovery.

Duration Roscoe's Duration
Two years100 weeks
One year49 weeks
Nine months36 weeks
Six months25 weeks
Four months16 weeks
Two months9 weeks
One month4 weeks

When I asked him about three-month projects, Roscoe replied, "Don't like to do those."

It was clear from these numbers that some Leroy square root arithmetic was in the offing. You don't set out a pattern like that without some underlying motivation. Another thing that was interesting was Roscoe's unwillingness to talk about time intervals of less than a week. "We ain't day laborers, son," he'd say. "I pay my engineers by the week. So that's the smallest interval I ever use when estimating."

Seemed about as reasonable as his argument about fractional people.


Roscoe Computes

"Actually," said Roscoe, "I can compute square roots lickity-split. And without a square root button on the old calculator."

"Fifty-three!" I shouted out, challenging him on the spot.

"No sweat," he said, talking and punching numbers simultaneously. "Fifty-three is close to forty-nine, so we'll start with a guess of seven. Seven into fifty-three goes 7.57 times. Now we know that since seven is too low, 7.57 must be too high, so let's take the average. In my head, that's 7.28. Then, 7.28 into 53 goes, well, gosh, would you believe it, 7.28 times. So I guess the answer must be 7.28."

For the guy to have extracted the square root to two decimal places with two divisions was impressive. But Roscoe had a different point of view.

"Too tiring," he said. "Prefer to work with round numbers. Sticks of dynamite and whole people."


Roscoe Gets into Software

Just when I thought the world was safe, Roscoe fessed up. "They closed the mine, son," he said. "Looks like I need to find a new job. Think I could manage one of those software projects?"

Thank heavens the dot com frenzy has abated, I thought. How the hell would I ever explain that to him? On the other hand, he would certainly bring a fresh point of view to our business. We might actually learn something in the process.

"Sure, Roscoe," I replied. "Go off and learn about iterative development. That's the best place to start. Read up on that, talk to some people, and then come back to see me." I figured that would keep him busy for a while.

"I'll get back to you," he said, being careful not to let the screen door slam as he left.


Roscoe Reports In

About a month later, Roscoe showed up as usual, with no notice and a chip on his shoulder. I figured he had had enough time to understand the essentials, and I was interested in what he had to say.

"Well, there sure seems to be enough written about this stuff," Roscoe opined as he pulled up a three-legged stool. "In fact, it's amazing to me that you could know so much about something so screwed up."

I allowed that our success rate in software projects was not quite up there in the spectacular category. Roscoe was unimpressed.

"Seems like folks think this stuff is really hard. Shoot! Digging for coal is hard. This is just software, after all."

I said, well maybe we should use the word "difficult," not "hard," but Roscoe was not to be convinced.

"Hate to remind you, but the Egyptians built the pyramids. 'Course, they did have that fella Euclid 3 , who was nobody's fool. But, even today, the Amish can put up a barn in one day, for crying out loud."

"But," he continued, "there are some signs of hope."


Guess We Did Something Right

"It strikes me that the iterative development boys are on the right track. Although it's just a fancy name for what every cowboy carpenter 4 does -- cut and try. Those boys know that they can't measure or cut that accurately, so they rough it out first, and then fix it until they're done. Of course you guys would call it 'successive refinement on subsequent iterations.'"

I detected a small note of sarcasm in Roscoe's summary. But he was not to be deterred.

"Of course, the cowboy carpenter has to be more careful than you guys. He knows that he can always take a little more off, but adding material back is hard. Learned that from his barber. So he always has to make his first cut the right way. Some big city comptrollers use that algorithm, too."

Now Roscoe always pronounces the "p" in comptroller so that you know that he knows the right word. But "algorithm" came out of his mouth sort of like "I'll-go-rhythm." Oh shoot, I thought. We are in big trouble. Roscoe has learned a new word.

"Roscoe, where did you pick up that word, 'algorithm'?" I asked.

"Well, son, I've been talking to some software architects." he trailed off.

"Huh," I replied, "who told you to do that?"

"First of all, you did. You said talk with people. Hey, I may look stupid, but I know what I don't know. There's a big difference between reading a set of blueprints and producing one. So I went and palavered a bit with those good old boys."

"Fair enough," I said. "What did you learn?"


Roscoe Sums It Up

"Well, it makes sense to me. Basically, when you start a project you don't know spit, so the initial phases are important. After all, you don't want to build a fifty-dollar fence to keep in a ten-dollar horse, so understanding what it is you're trying to do just makes sense to me. Likewise, I like the idea of keeping the payroll down until you have a pretty good idea of what all those people are going to do. Otherwise, you're just paying them to chew tobacco until someone figures out what they should be doing."

I was starting to be impressed with Roscoe's appreciation of the situation.

"Then I got into the scheduling and estimating end of things. Some pretty smart fellas there. In particular, that guy Barry Boehm and that guy Walker Royce seem to have a handle on some of it. Although their Coconut model is a little high falutin' for me."

I cringed, but didn't have the heart to correct him. COCOMO and coconut do sound a little alike, after all. And there were lots of other interpretations you had to make in parsing Roscoe-speak, so this would not be too much of an additional stretch.

"Then I got around to reading some Kruchten and Booch, and even stumbled onto your name. Right here," he said, pointing to a page in a dog-eared copy of Grady's book, Object Solutions. 5

Sure enough, he had me dead to rights. There I was, in black and white, in a footnote on page 136.


Roscoe Picks a Bone

"Well, it says here that you and that Kruchten fella have observed that the duration of an iteration in weeks seems to be equal to the square root of the size of the code to be developed, as measured in thousands of lines of code."

It was hard to argue with him. It was a direct quote. I figured I was in for it now.

"Hmm. I even talked with my architect friend, and he said there's a term for 'a thousand lines of code.' Claims it's called a KSLOC, for 'kilo source lines of code.' Whoosh!"

Roscoe was clearly warming to the task.

"Buncha B.S., I'd say. Like trying to estimate how big a project the pyramids are going to be, and using the 'brick' as your unit of measure. Only that would be ridiculous, so you invent the 'kilobrick.' Dumbest thing I ever heard of."

The man was gaining momentum, and I was not going to lie down in front of that locomotive just yet.

"But the real problem, as I discovered in talking with my architect friend, is that nobody knows how to count SLOCs or KSLOCs. Do you count every line, including comments? Do you count your headers and your source files, where there is obviously lots of repeated stuff? And how do you deal with those huge libraries that you're gonna use, but not write from scratch? Basically, you have a number that you can get from 'Dial-a-Prayer.'"

I made a note to talk to the architect about telling Roscoe about headers and such. I knew he didn't make that up on his own. But the man had a point: We had concocted a formula that was based on a number that was, to put it charitably, subject to some interpretation. The prediction would be no better than the definition we used for SLOCs.


Guess We Did Something Right, Part Two

Just when I thought Roscoe was going to write me off completely, though, he came up with a compliment, sort of.

"You did get something right, Joe. The square root is the key. The whole idea is that you don't want to have too many iterations, because each beginning and end of an iteration has overhead, which as we all know is just plain unproductive. On the other hand, you don't want to have too few iterations, because then you lose all the benefits of iterative development. It's like Goldilocks and the porridge -- it needs to be just right.

"Now, I think you were right to peg the iteration length to the square root of the size of the project. And picking the week as the unit of measure was surely the right thing to do, as it is the fundamental unit of labor measurement. All's you did wrong was get tangled up with that KSLOC idea. I've got a much simpler way to do it."

I listened. Carefully.

"The main problem is that you start from the wrong place. You need to use that Coconut or some other technique to negotiate the total time you are going to be allowed to have to complete the project. Management always wants it sooner, and you'll always wind up discussing a date, not the number of lines of code. You might get to barter the date against the size of the team, or against the feature set, for instance, but in the end what you will have that is fixed is the length of time.

"Once that's settled, it's easy. The duration of an iteration should just be the square root of the total duration of the project. Let me show you this little table I made up."

I was not surprised to see Roscoe's calendar make a guest appearance. Nor was his fondness for square roots absent from the proceedings.

Duration Roscoe's Duration Iteration Length Number of Iterations
Two years100 weeks10 weeks10
One year49 weeks7 weeks7
Nine months36 weeks6 weeks6
Six months25 weeks5 weeks5
Four months16 weeks4 weeks4
Two months 9 weeks3 weeks3
One month4 weeks2 weeks2

Damn! Wouldn't you know it, when I went back and checked against my database of projects, Roscoe's estimates weren't that far off. As he would say, "plus or minus one stick of dynamite."

And no SLOCs. I was impressed.


Roscoe Admitted to SPM 6 Fraternity

Based on this little exercise in figuring out how long an iteration should be, I deemed Roscoe competent enough to take on his first iterative development project. But I had a warning for him.

"Roscoe, listen up," I said. "You are going to find out that 'calling the shot' in software projects is incredibly slippery. If you come up with any ideas there, I'd be really glad to hear from you."

"Sure 'nuff," he said. "See you next month."

Editor's Note: Look for more wisdom from Roscoe Leroy in our February issue!


Notes

1 Boots and Coots used to be a colorful oil well firefighting outfit. Some time ago, while I was not paying attention, they "went legit." See http://www.halliburton.com
2 Sometimes the term precision is used instead, but precision and accuracy are not the same. Precision indicates the degree to which the measurement is reproducible. If you have a high precision measurement method and measure many times, most of the measurements will fall within narrow margins. On the other hand, accuracy is a measure of how close the measurement is to reality. Precision talks about measurements on the sample; accuracy reflects how close your measurement of the sample is to defining the properties of, in this case, the underlying population. Roscoe may appear to be sloppy in his use of these terms, but he is not; we shouldn't be either. Shooting for high precision is silly in the face of low accuracy, because high precision costs money, and we should never pay lots of money for an inaccurate result. Just remember, always, that high precision does not necessarily imply high accuracy.
3 A good example of Roscoe not letting his education get in the way: Euclid came after the pyramids, by a lot. He lived around 300 B.C., and the pyramids were built circa 3000 B.C. Makes the pyramids seem even more impressive, doesn't it?
4 What Leroy is referring to here is the kind of carpentry ranchers and farmers do -- building rough structures like barns and fences. The other end of the spectrum would be fine craftsmanship, as exhibited by a professional woodworker or cabinetmaker.
5 Grady Booch, Object Solutions: Managing the Object-Oriented Project. Addison-Wesley, 1995.
6 Software Project Manager


About the author

Joe Marasco

Recently appointed CEO of Ravenflow, an Emeryville, California-based company delivering precision requirements validation for software developers, Joe Marasco served as senior vice president and business unit manager for Rational Software prior to the company's acquisition by IBM. He held numerous positions of responsibility in marketing, development, and the field sales organization, overseeing initiatives for Apex and Visual Modeler for Microsoft Visual Studio. After retiring from Rational in 2003, he published The Software Development Edge, a collection of his essays on software project management originally published in The Rational Edge. He holds a Ph.D. in physics from the University of Geneva, Switzerland, and an M.B.A. from the University of California, Irvine.

Comments



Trademarks  |  My developerWorks terms and conditions

Help: Update or add to My dW interests

What's this?

This little timesaver lets you update your My developerWorks profile with just one click! The general subject of this content (AIX and UNIX, Information Management, Lotus, Rational, Tivoli, WebSphere, Java, Linux, Open source, SOA and Web services, Web development, or XML) will be added to the interests section of your profile, if it's not there already. You only need to be logged in to My developerWorks.

And what's the point of adding your interests to your profile? That's how you find other users with the same interests as yours, and see what they're reading and contributing to the community. Your interests also help us recommend relevant developerWorks content to you.

View your My developerWorks profile

Return from help

Help: Remove from My dW interests

What's this?

Removing this interest does not alter your profile, but rather removes this piece of content from a list of all content for which you've indicated interest. In a future enhancement to My developerWorks, you'll be able to see a record of that content.

View your My developerWorks profile

Return from help

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=1
Zone=Rational
ArticleID=2805
ArticleTitle=What If We Used Common Sense?
publish-date=01152002
author1-email=mgperrow@us.ibm.com
author1-email-cc=

My developerWorks community

Tags

Help
Use the search field to find all types of content in My developerWorks with that tag.

Use the slider bar to see more or fewer tags.

Popular tags shows the top tags for this particular content zone (for example, Java technology, Linux, WebSphere).

My tags shows your tags for this particular content zone (for example, Java technology, Linux, WebSphere).

Use the search field to find all types of content in My developerWorks with that tag. Popular tags shows the top tags for this particular content zone (for example, Java technology, Linux, WebSphere). My tags shows your tags for this particular content zone (for example, Java technology, Linux, WebSphere).

Rate a product. Write a review.

Special offers