Sunday, July 20, 2008

Constraints in a Project Organization and optimal staff size for software projects.


What is the optimal staff size for a software project.
This subject has been treated by many authors.

Many studies answer the question from the point of view productivity/project size. See for example Quantiative Software Management.

Productivity per team size is also taken into account in more complex systems like SEER-SEM consider factors that account for the decrease in productivity as the team size increases we do not deal with those issues here. Here is the web site for the SEER product from Galorath.
Much of the emphasis in SEER seems to be on parametric modelling but Monte Carlo simulation is also done.
Lets consider the simple following experiment with a small ruby simulation program I have written:
A services company A does only one thing. It carries out projects which idealy have a duration of D months but delays occur according to a normal distribution function with a deviation of Sd but are never less than 1 month.

These projects have 2 tasks:
  • Task 1 one requires a project manager, lets call it the vision statement.

  • Task 2 this task requires a software developer, lets call it development.

The company sells these projects and they enter the production pipeline at a rate of R per month with a deivation of Sr.

Here are not really interested if projects require more effort or not but what we want to try to minimize is that resource constraints are not delaying projects.

Here we set R=3 every 2 months Sr=2 and task duration D is 1 and Sd=1. Some quick results from some test runs of the resource efficency for the first 12 months are presented in the chart above with team sizes from 1 to 4 ie. (4 PMs and 4 SDs).

This maybe one of the reason that most organizations staff below current production needs.
So there may be efficiency by using 2 teams but the projects will all be late and chaos reigns.
Obviously having late projects cost money and reduces customer satisfaction.


Next step is to work on some more complicated simulations with non-critical tasks.

0 comments: