Wednesday, November 18, 2009

Project Management - Developer Estimates

In a previous entry, the testing areas of a project were presented; Unit, Systems, Integration, UAT, and finally release to production, which are used in the Execution phase of the project.

Developer estimates for numerous tasks to deliver components, are ideally based on historical data, meaning the developer has completed similar coding previously. Many developers with a clear understanding of requirements, are able to provide an estimate which includes each of the phases of testing.

One of the questions a project manager should ask is the breakdown of hours related to the testing phases. For example, if a task is estimated at 12 hours, does that mean each phase is 3 hours long?:
  • 3 hours: Developmement and Unit testing - Developer creating code on own machine
  • 3 hours: Systems testing - Developer testing own code in a testing environment
  • 3 hours: Integration testing - Developer testing own code with other developer's code in test environment
  • 3 hours: User Acceptance Testing - Developer correcting possible errors

Asking questions can spark a discussion, or push back, which is a good thing. Once it is understood a development phase, such as Unit test, may require 5 hours rather than 3, the overall estimate is closer.

Personality types and work ethics need to be considered as well. A hard-charging developer may provide an estimate, and because of the true passion and love of developing, could complete an assignment in less time. Additionally, a team member may decide to assist the developer, in their excitement, and enable the earlier delivery of the component or task.

With experienced developers, when estimating, the project manager should assess or understand the skill level of the additional developers which may be assigned the task. The experienced developer may be able to complete the coding in six hours, while the less experienced developer may required eight to ten.

Project managers, business subject matter experts, technical infrastructure support and developers all should be cognizant of how their pieces will affect the overall delivery of the project.