Software Best Practices

Voices on Software Development Best Practices
Welcome to Software Best Practices Sign in | Join | Help
in Search

10x Software Development

Numerous studies have found 10:1 differences in productivity and quality among individuals and even among teams. This blog contains Steve McConnell's thoughts about how to move toward the "10" side of that 10:1 ratio. Add to Technorati Favorites

Is Faster Always Faster?

A reader of one of my books asked this question:

What is the impact of an improvement in response time on increased throughput? I develop many systems, and some have instantaneous response times, some have 10 minute response times, others have 4 or 5 hour response times. What are the threshholds at which response times affect throughput? Clearly going from 30 minutes to 30 seconds would be a big improvement. But would 30 minutes to 20 minutes also be a big improvement? [this has been paraphrased for clarity]

I think the key assumption in this statement is this: "Clearly going from 30 minutes to 30 seconds would be a big improvement." I suspect that sometimes the dynamic is actually the opposite of what the reader implied. With small changes in response time you can probably assume an increase in throughput. If response time improves from 10 seconds to 5 seconds, you can probably assume the users will get more work done. 
 
But with large changes in response time (in either direction), I believe you will see users adopt offsetting behaviors that can outweigh any differences in response time. For example, years ago when computers were changing from batch processing to interactive processing there were some studies that tried to assess the improvements in productivity attributable to interactive systems. Surprisingly, I don't recall reading any study that found clear evidence of an improvement in productivity in the move from batch processing to interactive processing. Instead, the studies found that programmers had adapted to the long wait times in batch processing environments and filled their wait time with other useful activities.
 
It's like cooking in a microwave. If I heat up frozen vegetables on the stove, I can just throw them in the pan, turn the stove on low, and go do something else for 10 minutes. If I put them into the microwave for 40 seconds, I might very well stand in front of the microwave and wait for 40 seconds. The food cooks faster with the microwave, but I might actually get more done if I use the stove.
 
Fred Brooks made a similar point in a keynote address at ICSE '95. He commented that he wasn't sure there had been any real gains in productivity arising from the move from character-based displays to GUIs. He said, "I used to write a draft of a letter and then give it to my secretary to type the final draft. Now I type the draft myself, and then I spend 20 minutes making the fonts look nice!" In other words, more computing power doesn't necessarily mean more productivity.
 
In the famous IBM Chief Programmer Team project, one programmer wrote 83,000 lines of code in one year. This project took place in 1968. And the code was written in a batch processing environment. And on punch cards. This person had 8 other people arrayed around him in supporting roles, but that still works out to 9,200 lines of code per staff year for a business systems project. At Construx, we see lots of companies writing similar kinds of software that don't achieve 9,200 lines of code per staff year even 40 years later, even in highly interactive environments, even with radically better tool support, even on computers that are millions of times more powerful. Of course we see other companies writing code much faster, though we haven't yet seen any individual programmer who has written 83,000 lines of code in one year, no matter how the team is configured.
 
Productivity is only partly a function of how fast you go. Highly productive developers need to be aware of the difference between activity and productivity. The fact that you're busy doesn't mean you're getting work done. 10x developers focus on getting the actual work of the project done. They pay close attention to their experience to discern whether the work they're doing actually means more progress -- or just more motion.
 
References

Comments

 

Panagiotis Kanavos' Weblog said:

We all know Steve McConnell, from his extremely useful books like "Code Complete" and "Software Estimation".

May 23, 2007 6:35 AM
 

Paul Sinnett said:

"Surprisingly, I don't recall reading any study that found clear evidence of an improvement in productivity in the move from batch processing to interactive processing."

What about the infamous Grant and Sackman paper which set out to measure just that? In all the furore over the performance of individuals in that study the original purpose of their paper is often overlooked. They found a 1/3 to 2/3 reduction in time between online and offline work if I recall correctly.

May 25, 2007 5:07 PM
 

Maksym Shostak said:

"They pay close attention to their experience to discern whether the work they're doing actually means more progress -- or just more motion."

Excelent thesis!

May 31, 2007 10:38 AM
 

Maksym Shostak said:

I think, there is another interesting question:

IS SIMPLER ALWAYS SIMPLER?

I mean, to create simpler, clearer and qualitative you need to know more than in the case, when creating spaghetti code? To reach the quality in code you need to learn harder...

June 8, 2007 3:13 PM
 

MarkS said:

I do some web site and email html work for a "client". I'm not really a serious consultant, but I do the work for some marketing people that we share office space so that they don't have to go outside and hire another consultant, and I get paid a reasonable sum for the work I do.

So I'm not making a lot, and I do it on the side. I find if I intentionally delay starting the projects, that I can actually reduce my time on the project, because inevitably, within the first 24 hours, I'll get changes to the project without me even asking (add this, take away this...)  When the marketing person stops for a little bit to breath, or sleeps on it, they always seem to rethink things.

I know that's a little off topic, but it's what popped into my mind when I read this. If we stay in coding frenzy mode and just do everything as fast as possible, then it might cut short the "idle time" that helps us reflect on the problem.

How many times do you find that the harder you try to concentrate on solving a problem, the harder it is to solve it, only to be laying in bed at night or showering the next morning, or doing something else mindless when the solution pops itself into your head. It's like when you clear your thoughts and slow down and finally your subconscious that has been working on the problem in the background can be heard.

So perhaps slower response times can speed certain things up because it allows for these subconscious processes to get a little human processor time. ;-)

July 1, 2007 7:58 AM

About Steve McConnell

Steve McConnell is CEO and Chief Software Engineer at Construx Software where he writes books and articles, teaches classes, and oversees Construx’s software development practices. Steve is the author of Software Estimation: Demystifying the Black Art (2006), Code Complete (1993, 2004), Rapid Development (1996), Software Project Survival Guide (1998), and Professional Software Development (2004). His first two books won Software Development magazine's Jolt Excellence award for best programming books of their years.

Steve has worked in the desktop software industry since 1984 and has expertise in rapid development methodologies, project estimation, software construction practices, and third-party contract management. In 1998, readers of Software Development magazine named Steve one of the three most influential people in the software industry along with Bill Gates and Linus Torvalds. Steve was Editor in Chief of IEEE Software magazine from 1998-2002.

Steve is on the Panel of Experts that advises the Software Engineering Body of Knowledge (SWEBOK) project and was Chair of the IEEE Computer Society’s Professional Practices Committee. Steve earned a Bachelor’s degree from Whitman College and a Master’s degree in software engineering from Seattle University. Read more about Steve at www.stevemcconnell.com.

Seminars           www.Construx.com           Consulting