Long-Term Trends: Project Schedule and Productivity on the Decline
QSM recently completed an analysis of how project schedule has changed over time and the subsequent impact on effort and productivity. The results indicate that project size, effort, and productivity have all decreased over time. We’ll explore the results and share our observations in this post.
Project Schedule Over Time
In the early 1980s, the average software project took roughly two years to develop. After a steady decrease starting in the mid-1980s, software development since 1995 has consistently required a timeframe of ten to eleven months. Median schedules show the same downward trend, as shown in figure 1. This may reflect the increasing influence of timeboxing methods used with agile and other iterative development methods and the overall trend toward smaller software projects.
Figure 1: Average analysis through build and test schedule over time
Effort Expenditure Over Time
Once it was clear how project schedules had changed over time, QSM then turned its attention to effort to see if the results showed a similar pattern. Effort expenditure is a function of staffing strategy (team size), productivity, and schedule.
Figure 2: Average analysis through build and test effort hours over time
Figure 2 shows average analysis through build and test effort (in thousands of person hours) for five-year time buckets. Projects in the early 1980s took nearly three times as much effort as projects in the most recent time bucket. Over the same time period, project sizes have decreased by three-fourths and schedules by half.
Why isn’t there a one-to-one relationship between size and effort reduction? Application complexity (both algorithmic and architectural) may require more diverse skill sets and thus, larger teams. More advanced and rigorous methods and practices may allow teams to work together more effectively. Finally, it may be that companies trying to meet aggressive time-to-market goals may be using larger teams than necessary in the hopes of reducing the schedule.
Development Productivity Over Time
QSM’s Productivity Index is a measure of the total development environment. It embraces many factors in software development, including management influence, development methods, tool, techniques, skill and experience of the development team, computer availability, and application complexity. Values from .1 to 40 are adequate to describe the full range of projects. Low values are generally associated with poor environments and tools and complex systems. High values are associated with good environments, tools and management, and well-understood, straightforward projects.
A major productivity driver is application size. This is true regardless of the measure used; ratio-based productivity measures like SLOC or function points per effort unit exhibit the same relationship to project size as QSM’s Productivity Index (which reflects not only size and effort, but time to market).
Figure 3: Average productivity index over time
Figure 3 shows that productivity peaked from 1995-2000 and has decreased since then. We noted in the 2006 QSM Almanac that productivity in the 1995 to 2000 time bucket seemed artificially high due to Y2K projects that contained less original design work or new algorithms. We also noticed that projects in the 2000 to 2005 timeframe had a lower average productivity than projects in the 1990s.
In the most recent time buckets, we’re seeing a continuation of the trend toward smaller productivity indexes, although the decline is very slight (about half a PI). We also saw an increase in very low PIs starting around the year 2000. This might reflect the dramatic decline in project sizes (productivity increases with project size) or possibly growing numbers of enhancement projects relative to new development.
By analyzing the trends associated with productivity and project schedule, project development teams can gain invaluable insight to help plan and evaluate their own software projects. Each project is unique, but utilizing trend information can help increase success and provide valuable data to support project schedule decisions that will increase productivity.