By Steve McConnell, Chief Software Engineer, Construx Software Builders
  How do you convince people to pay attention to their software 
development processes?  
 
The word ‘process’ is viewed as a four-letter word by some people in the 
software development community. These people see ‘Software Processes’ as rigid, 
restrictive and inefficient. They hold that the best way to run a project is to 
hire the best people you can, give them all the resources they ask for, and turn 
them loose to do what they do best. According to this viewpoint, projects that 
run without any attention to process can run extremely efficiently. People who 
hold this viewpoint imagine a work breakdown over the course of a project like 
the one shown in Figure 1: 
 
  
Figure 1. 
 
People who hold this view acknowledge that some amount of ‘thrashing,’ or 
unproductive work, will take place. Developers will make mistakes, they agree, 
but they will be able to correct them quickly and efficiently – certainly at 
less overall cost than the cost of ‘Process.’  
 
The phrase ‘software processes’ can mean a lot of different things. Here are 
some examples of what I mean by ‘software processes’: 
	- Committing all requirements to writing 
 
	- Using a systematic procedure to control additions and changes to the 
	product’s requirements
 
	- Conducting systematic technical reviews of all requirements, designs and 
	source code 
 
	- Developing a systematic quality assurance plan in the very early stages 
	of the project that includes a test plan, review plan and defect tracking 
	plan
 
	- Creating an implementation plan that defines the order in which the 
	product’s functional components will be developed and integrated
 
	- Using automated source code control
 
 
According to the view expressed by Figure 1, adding processes like these, as 
is shown in Figure 2, is pure overhead and simply takes time away from 
productive work.  
 
  
 
Figure 2. 
 
This point of view has intuitive appeal. At the beginning of a project (shown by 
the darker shaded areas), a focus on process certainly does take time away from 
productive work. If that trend were to continue throughout a project (shown by 
the lighter shaded areas), it wouldn’t make sense to spend much time on process. 
 
Experienced View of Process 
Based on software industry experience, however, for medium and large projects 
the trend shown in Figure 2 does not continue throughout the project. Projects 
that don’t pay attention to establishing effective processes early are forced to 
slap them together late, when slapping them together takes more time and does 
less good. Here are some examples:  
	- In the middle of the project, team members agree informally to implement 
	a wide variety of changes that are proposed to them directly by their 
	manager or customer. They don’t begin controlling changes systematically 
	until late in the project. By that time, the scope of the product has 
	expanded by 25 to 50 percent or more, and the budget and schedule have 
	expanded accordingly. 
 
	- Projects that don’t set up processes to eliminate defects in early 
	stages fall into seemingly interminable test-debug-reimplement-retest 
	cycles. So many defects are discovered that, by the end of the project, the 
	‘change control board’ or ‘feature team’ may meet as often as every day to 
	prioritize defect corrections. Because of the vast number of defects, the 
	software has to be released with many known (albeit low priority) defects. 
	In the worst case, the software might never reach a level of quality good 
	enough to be released. 
 
	- Alternatively, major defects discovered late in the project can cause 
	the software to be redesigned and rewritten during testing. Since no one 
	planned to rewrite the software during testing, the project deviates so far 
	from its plans that it essentially runs without any planning or control.
	
 
	- Defect tracking isn’t set up until late in the project. Some reported 
	defects go unfixed simply because they are forgotten, and the product is 
	released with known defects that could have been fixed easily. 
 
	- Components developed by different developers are not integrated with 
	each other until the end of the project. By the time the components are 
	integrated, the interfaces between components have gotten out of synch, and 
	much work must be done to bring them back into alignment. 
 
	- Source code revision control isn’t established until late in the 
	project, after developers have begun to lose work by accidentally 
	overwriting the master copies of their own or each other’s source code 
	files. 
 
	- Because the project is having schedule trouble, developers are asked to 
	re-estimate their remaining work as often as once a week or more, taking 
	time away from their development work. 
 
 
When a project has paid too little early attention to the processes it will 
use, by the end of a project developers feel they are spending all of their time 
in meetings and correcting defects and little or no time extending the software. 
They know the project is thrashing. When developers see they are not meeting 
their deadlines, their survival impulses kick in and they retreat to ‘solo 
development mode’ – focusing exclusively on their personal deadlines. They 
withdraw from interactions with managers, customers, testers, technical writers 
and the rest of the development team. Project coordination unravels.  
 
Far from the steady level of productive work suggested by Figure 1, my 
observation is that the medium or large project conducted without much attention 
to development processes typically experiences the pattern shown in Figure 3.
 
 
  
 
Figure 3. 
 
In this pattern, projects experience a steady increase in thrashing over the 
course of a project. By the middle of the project, the team realizes that it is 
spending a lot of time thrashing and that some process would be beneficial. But 
by then much of the damage has been done. The project team tries to increase the 
effectiveness of their process, but their efforts hold the level of thrashing 
steady, at best. In some cases, the late attempt to improve the project’s 
processes actually makes the thrashing worse.  
 
The lucky projects release their products while they are still eking out a small 
amount of productive work. The unlucky products can’t complete their products 
before reaching a point at which 100 percent of their time is spent on process 
and thrashing. After spending several weeks or months in this condition, these 
projects are typically cancelled when management or the customer realizes that 
they are no longer moving forward. If you think that attention to process is 
needless overhead, consider that a canceled project has an overhead of 100 
percent. 
 
Process to the Rescue 
Fortunately, an attention to software development process provides an 
alternative to this dismal scenario. When effective processes are used, the 
project profile looks like the one shown in Figure 4.  
 
  
 
Figure 4. 
 
During the first few weeks of the project, the process-oriented team will seem 
less productive than the process-phobic team because the level of thrashing will 
be the same on both projects and the process-oriented team will be spending a 
significant amount of its time on processes. But an investment made in process 
at the beginning of the project produces large returns later in the project.  
 
By the middle of the project, the team that focused on process early will have 
reduced the level of thrashing compared to the beginning of the project, and 
will have streamlined its processes. At that point, the process-phobic team will 
be just beginning to realize that thrashing is a significant problem and just 
beginning to institute some processes of its own.  
 
By the end of the project, the process-oriented team will be operating at a 
high-speed hum, with little thrashing, and performing its processes with little 
conscious effort. It will tolerate a small amount of thrashing because 
eliminating the last bit of thrashing would cost more in overhead than would be 
saved. When all is said and done, the overall effort on the project will be 
considerably lower than the effort of the process-phobic team.  
 
Organizations that have explicitly focused on improving their development 
processes have, over several years, cut their times-to-market by about one-half 
and have reduced their costs and defects by factors of 3 to 10.  
	- Over a 5-year period, Lockheed cut its development costs by 75 percent, 
	reduced its time to market by 40 percent, and reduced its defects by 90 
	percent (Alfred M. Pietrasanta, “A Strategy for Software Process 
	Improvement,” Ninth Annual Pacific Northwest Software Quality Conference, 
	October 7 – 8, 1991, Oregon Convention Center, Portland, OR). 
 
	- Over a 6.5-year period, Raytheon tripled its productivity and realized a 
	return on investment (ROI) in process improvement of almost 8 to 1 (Raytheon 
	Electronic Systems, Advertisement, IEEE Software, September 1995, back 
	cover, Hossein Saiedian and Scott Hamilton, “Case Studies of Hughes and 
	Raytheon’s CMM Efforts,” IEEE Computer, January 1995, pp. 20 – 21). 
 
	- Bull HN realized an ROI of 4 to 1 after four years of software process 
	improvement, and Schlumberger realized an ROI of almost 9 to 1 after 3.5 
	years of software process improvement (James Herbsleb, et al, Benefits of 
	CMM Based Software Process Improvement: Initial Results, Pittsburgh: 
	Software Engineering Institute, Document CMU/SEI-94-TR-13, August 1994).
 
	- NASA’s Software Engineering Laboratory cut its average cost per mission 
	by 50 percent and its defect rate by 75 percent over an 8-year period, while 
	dramatically increasing the complexity of software used on each mission 
	(Victor Basili et al, “SEL’s Software Process Improvement Program,” IEEE 
	Software, November 1995, pp. 887).
 
 
Similar results have been reported at Hughes, Loral, Motorola, Xerox and 
other companies that have focused on systematically improving their software 
processes (Hossein Saiedian and Scott Hamilton, “Case Studies of Hughes and 
Raytheon’s CMM Efforts,” IEEE Computer, January 1995, pp. 20 – 21; Myers, Ware, 
“Good Software Practices Pay Off – Or Do They?” IEEE Software, March 1992, pp.
 
96 – 97; Herbsleb, James, et al, “Software Process Improvement: State of the 
Payoff,” American Programmer, September 1994, pp. 2 – 12.). 
 
Here’s the best news. The average cost of these improvements was only about 2 
percent of total development costs – typically about $1,500 per developer per 
year (Herbsleb, James, et al, Benefits of CMM Based Software Process 
Improvement: Initial Results, Pittsburgh: Software Engineering Institute, 
Document CMU/SEI-94-TR-13, August 1994). 
 
Process vs. Creativity and Morale 
One of the common objections to putting systematic processes in place is that 
they will limit programmers’ creativity. Programmers do indeed have a high need 
to be creative. Managers and project sponsors also have a need for projects to 
be predictable, to provide progress visibility, and to meet schedule, budget, 
and other targets. The criticism that systematic processes limit developers’ 
creativity is based on the mistaken idea that there is some contradiction 
between developers’ creativity and the satisfaction of management objectives. It 
is certainly possible to create an oppressive environment in which programmer 
creativity and management goals are placed at odds, and many companies have done 
that, but it is just as possible to set up an environment in which those goals 
are in harmony and can be achieved simultaneously.  
 
Companies that have focused on process have found that effective processes 
support creativity and morale. In a survey of about 50 companies, only 20 
percent of the people in the least process-oriented companies rated their staff 
morale as ‘good’ or ‘excellent’ (James Herbsleb, et al, “Software Quality and 
the Capability Maturity Model,” Communications of the ACM, June 1997, pp. 30 – 
40.) The responses listed were consistent across managers, developers 
responsible for process improvement, and general senior technical staff members. 
In organizations that paid more attention to their software processes, the 
proportion of people who rated their staff morale as ‘good’ or ‘excellent’ 
jumped to 50 percent. And, in the most process-sophisticated organizations, 60 
percent of the people rated their morale as ‘good’ or ‘excellent.’  
 
Programmers feel best when they’re productive. Programmers dislike weak 
leadership that provides too little structure to prevent them from working at 
cross purposes and, in the end, causes them to spend more time fixing defects 
than creating new software. Good project leadership puts a focus on process that 
allows programmers to feel incredibly productive. Developers, their project, and 
their organization all reap the benefits.  
 
This article was adapted from the author’s book, “Software Project Survival 
Guide” (Microsoft Press, 1998). Reprinted with permission of the author.
  
 
 
				Steve McConnell is CEO and Chief Software Engineer at Construx 
Software where he writes books and articles, teaches classes and oversees 
Construx’s software engineering practices. He has worked in the desktop software 
industry since 1984 and has expertise in rapid development methodologies, 
project estimation, software construction practices, performance tuning, system 
integration, and third-party contract management. Steve has authored many books 
–“Code Complete” and “Rapid Development,” both winners of Software Development 
magazine's Jolt award for outstanding software development books. He also served 
as Editor in Chief of IEEE Software from 1998 – 2002 and is a member of IEEE 
Computer Society and ACM. Contact him at 
stevemcc@construx.com  
 
        
  
 
 
  |