10 Laws of Software Productivity
I have been teaching these productivity laws for years and these effects can be modeled in our SEER-SEM model. But the real point is you cant just mandate software completion dates and effort without paying the consequences. Consequences included technical debt, failing applications, unfortunate limited functionality (this is where agile can help in many situations by building the most critical functionality first) and more. Much of this is based on entropy (decreased productivity) as team sizes increase.
Some people make a case that there is no entropy or even more efficiencies as software gets bigger. When analysis is completed this is generally the result of natural reuse or copy / paste, more efficient reintegration and retest, and reduced rework. The 10 laws are:
LAW 1 – Smaller teams are more efficient: The smaller the team the higher the productivity of each individual person (Brooks’ “mythical man-month” effect).
LAW 2 – SOME schedule compression can be bought: Adding people to a project, to a point, decreases the time and increases the cost.
LAW 3 – Every project has a minimum time: There is an incremental person that consumes more energy than he/she produces. Team size beyond this point decreases productivity and increases time. (aka Brooks’ Law--”Adding staff to a late software project makes it later.”) Of course project time can be bought by deferring functionality, reducing testing (bad idea) or delivering early (also a bad idea)
LAW 4 – Productivity is scalable: Projects of larger software size can use larger teams without violating LAW 3.
LAW 5 – Complexity limits staffing: As complexity increases, the number of people that can effectively work on the project and the rate at which they can be added decreases.
LAW 6 – Staffing can be optimized: There exists an optimal staffing function (shape) that is effectively modeled by the Rayleigh function. Flat (level load) staffing is rarely optimal.
LAW 7 – Projects that get behind, stay behind: It is extremely difficult to bring a project that is behind schedule back on plan.
LAW 8 – Work expands to fill the available volume: It is possible to allow too much time to complete a project
LAW 9 – Better technology yields higher productivity: More capable teams, better tools, and advanced, stable processes yield higher productivity.
LAW 10 – No “silver bullets”: There is no methodology, tool, or process improvement strategy out there that yields revolutionary improvements in project efficiency.