This blog expressed my technology vision and based on my professional experience in the Software industry.
Contains Knowledge base, Tutorials, Code examples and Best practices of frequently Software design issues.

Pages

Friday, May 6, 2016

Guidelines for estimating project effort | David Tzemach

Overview

I
really don't know what is your experience is, but when it comes estimate a work
effort, I can say that based on my experience I saw some really sketchy
estimation processes that let me think that some manager that were involved in
the decision making where estimate the work based on a pure guess that ignores
some major considerations like available resources, work effort, the skill of
the team and few more considerations that we will review later.

When
you have a manager that estimates a work effort without calculating all the
factors, it will probably lead to a known outcome of a team that fail to
accomplish the work that is expected from them during the time frame that was
given by that manager.

In
this article, I want to discuss about a few considerations and guidelines that
you can use to determine the work estimations that you can stand behind and be
sure that you can really accomplish the work during this time.

Do Estimates are
really necessary...?

It’s
a Rhetorical question, but Prior to reviewing my guidelines, you first need to
understand why work estimations are a critical phase of any project.

Planning

Work
estimations allows the team/managers and the Organization to understand when
the work effort that is needed to be done, this information has a direct effect
on the company releases and commitment against the customers.

Think
about a company that has a great product, but they cannot commit to a specific
time where they can deliver it, now as a customer, do you are really going to
pay for it? I really don’t think so.

Prioritization

Think
about a scenario where a single company has 10 projects that they need to
accomplish during a specific time frame. With a work estimation that is made
per project, the decision makers can answer these critical questions:

Which project are we going to start first?

How each project is affecting the other projects?

Can we start multiple projects at the same time (parallel
execution)?

Do we have a project that we cannot accomplish throughout
this time?

How can we create the most efficient plan to accomplish the
most valuable projects first?

Return
of investment (ROI)

In
the best scenario, the organization can estimate the project ROI even prior to
the start of the project, this will allow the decision makers to understand if
the ROI is worth the effort.

Resource
allocation

The
project resource allocation has a direct impact on the work estimations, it depends
on the number of the available resources, their quality and experience. This
allow the decision makers to change the team to reduce the original estimations
(Add more resources, replace people based on their knowledge…).

Commitment
and Size

As
a project manager, you need to ask yourself this simple question, "The
work can be done or not?" Based on a project time estimation, we can
determine the Size of a project and decide if we want/can commit to it. If the
project is just too big for the company to handle they will probably don’t
commit to it.

Estimation red
flags

Estimation
is made without calculating all factors

When
you are calculating an estimation of a work effort, you need to examine all
factors that may affect the project time lines, these factors are related to
different aspects of the project, just for example:

Are there any dependencies on another teams/external
support?

What are the resources that we have to accomplish the task?

What is the experience and knowledge of those resources?

What is the buffer that we have in case of delay?

What is the development and testing strategy?

What is the urgency of this project?

Estimation
is made with single authority

In
some cases, I saw a work estimation that were determined by a team manager,
that's fine and probably the expected way in most cases, but in other scenarios
these managers determined some unrealistic time lines that jeopardize the
entire project, so what can go wrong when a single manager determines the work
effort?

A manager that does not consult with the team that is going
to do the actual work.

A manager that knows the expertise of the team but does not
have the experience in the new technology that is going to be in use during the
implementation process.

A manager that thinks he knows everything and ignores other
people experience.

A manager that does not understand all factors that involve
in the process.

A manager that fails to understand/predict the project
risks.

A manager that wants to impress other people without
thinking about the team (remember the Titanic…).

The
"Expert" estimation

In
this scenario, the work effort is determined by an expert/System architect that
has a flawless knowledge in the system, but not on the team and the people who
will do the actual work.

During
my career, I saw experts that estimate the work effort without even knowing who
is the executing team will be, and the time estimation was based on the Expert
view that have all the experience, but without knowing that the team is built
from a group of junior engineers that doesn't have the same knowledge that he
has.

The
Historical performance

A
big no no! You should always look at the past and learn from it, in our case
this approach is critical to the accuracy of the estimations, the past can
reveal a great information that you can use, examples:

Work estimation that was given on for previous projects.

The Performance and capabilities of the team members.

Projects that were failed due to miscalculated risks.

My Guidelines to
estimating work effort

In
this section, I will review a list of guidelines that I used to estimate a work
effort, these guidelines have been great for me for many major projects so I'm
100% positive that you will find them useful during your estimation process.

Determine
how accurate your estimate needs to be

Prior
to estimate a work effort of a project, you need to ask yourself how accurate
the estimate need to be. The answer to this question will determine how long
does it take to determine the work effort (Accurate -> More details ->
More time to estimate).

Task
and Work breakdown

It’s
a basic thing, you must understand the tasks that are needed to be done to
accomplish the targets of the project, during the process of the task breakdown
you will gain these benefits:

You will have the ability to determine the work effort per
small tasks which make your estimations more accurate.

You will see the barriers and Risks of the project; this information
will help you during the planning process.

You will get the full information regarding the direct and
indirect work that need to be done to accomplish each task.

The work effort is determined by Hours and days instead of
weeks and months.

Specialist
working hours

In
any case that you have a specialist (usually as an outsource) that involve in
the project, you should calculate the work hours while calculating these
factors:

How the specialist affects the overall hours of the
project?

How many hours the specialist will take an active part?

Is there any training that need to be done?

Estimate
the activities that are not directly related to the implementation process

During
my career, I saw project owners that estimate the work effort while ignoring a
set of activities that has a major effect on the project time line, among these
activities I can think about:

Sleekness and vacation days of the team.

Preparation of the Project Environment.

Creation of the work Reports.

Training hours for the team.

Rework that has to be done.

Project management time.

Review with other teams.

Review meetings.

Project buffers.

Training hours.

Trust
the history

When
estimating a project effort, you should always look at the past history, the
past will help you understand what is possible and what is not, in addition,
the past history can teach you how to overcome some barriers that already
handled before.

When
I need to determine a work effort, I will always use the experience that I
gathered at previous projects to support the estimations that I need to provide
now, my guidelines are:

What mistakes were done in the older projects that affected
the time lines?

I always compare my team to a project that were made by a
team that possess the same knowledge, education and experience.

What was the technology that are used in older projects, is
there a new technology that we can use to reduce the current time lines?

What was the buffer that the team consumed?

The best comparing that you can do, will be against a
project that was similar to yours (scale, time frame and available resources).

Estimate
with the people that actually do the work

The
work estimations should always involve the people that are going to do the
actual work, you cannot estimate a project time lines without consulting with
the team.

When
I need to determine a work effort, I always consult with my team, this
brainstorming provides the following benefits:

The team can see technical barriers that are hidden.

The team understands the scale of the project.

The commitment of the team is increased.

Estimations are more accurate.

Document
your estimates

I
saw too many project owners that provide time estimations without the ability
to answer the basic question of "How did you determine this
estimation...?" well in my opinion, you control the estimations only when
you have the ability to explain how you arrived to them.

Therefore,
I always document my time estimation with the calculation that I used to
determine them, this basic rule allows me to answer the question above at any
time prior, during and when the project has finished.

Always
include the "Out of scope" tasks

Sometimes
people estimate the work effort of the project, but fail to deliver the
sections that are not covered in the project. Therefore, always add the
"out of scope" tasks that are not included in the estimations that
you provide.

Add
a buffer factor

No
matter how good your estimates are, there is always a chance that you will not
foresee some problems that has a good chance to occur, to overcome this issue,
you will need to add a "Buffer" factor that will allow your team to
work without a major pressure that may arise and effect the original estimations.

Trust
your experienced people

You
should always use the experience of your people, their experience will help you
in the estimation process, these people have knowledge that sometimes can add
another point of view that may change the time estimations that you thought
until this moment.

Have
different people estimations

Another
way to estimate a work effort, is to ask different people to estimate the same
work and compare the time estimations.