|
Feb 2009 - Pragmatic Software Newsletters |
|
Tools for Managing the Software Development
Lifecycle |
Sponsored
Link |
www.SoftwarePlanner.com
Software Planner is an
award winning web-based
application lifecycle management (ALM) solution. Tracks requirements, defects, test cases, support tickets, and allows
document sharing. Provides project management, with
importing/exporting from Microsoft Project®,
customizable dashboards and Microsoft Outlook®
Synchronization. Integrates with most major
automated testing tools. |
|
|
|
The Seven Habits of Highly Effective Project
Managers |
Published in 1989,
The
Seven Habits of Highly Effective People,
written by Stephen R. Covey has helped millions
establish great habits for achieving true
interdependent effectiveness in their life and their
jobs. This article discusses the 7
habits, framing the habits for highly
effective project managers. Below are the 7
habits:
- Be Proactive
- Begin with the End in Mind
- Put First Things First
- Think Win/Win
- Seek First to Understand, Then to be
Understood
- Synergize
- Sharpen the Saw
Habit 1 - Be
Proactive
A project manager's goal in
any software project is to ensure that the software
is shipped on time, within budget, with high quality
while satisfying the software requirements. Below are some
ideas for being proactive on software projects:
- Understand Your History -
When planning projects, you should know what
your
variances have been on past projects (how
many hours were estimated vs. how many hours
were actually spent). Below is an example,
notice that more recent projects got better from
a variance perspective:
|
Release History - Variance Report |
|
|
Release |
Est Hrs |
Act Hrs |
Diff |
Pct Overage |
|
Release 8.5 |
157.5 |
184.33 |
-26.83 |
15% |
|
Release 9.0 Sprint 1 |
385 |
517.52 |
-132.52 |
26% |
|
Release 9.0 Sprint 2 |
615.5 |
548.37 |
67.13 |
-12% |
|
Release 9.0 Sprint 3 |
803 |
664.21 |
138.79 |
-21% |
|
Release 9.0 Sprint 4 |
636.5 |
698.93 |
-62.43 |
9% |
|
Total: |
2597.5 |
2613.36 |
-15.86 |
1% |
References:
Variances -
http://www.pragmaticsw.com/GuidedTours/Default.asp?FileName=ProjectPlans
- Best Foot Forward -
A key way to reduce cost and time overruns is to
prevent them during design. When
collecting
requirements, have your team review them for
completeness and testability. Back the
requirements with a
detailed design
and prototypes, as this allows you to better
understand (and agree on) the solution and
provides more detail for better estimates.
Some Agile evangelists might argue that doing
user stories (which normally do not contain
detailed requirements, prototypes or designs) is
the best approach. Although our team has
been using Agile for years, we found that user
stories are not detailed enough, as they tend to
cause too much rework and have a tendency to
reduce the accuracy of estimates. Agile is
designed to be flexible and tweaked for your
specific needs so by deploying a more structured
requirements gathering, we enjoy the flexibility
of Agile and the reduction of rework, providing
us with the best of both worlds.
References:
Requirements -
http://www.pragmaticsw.com/GuidedTours/Default.asp?FileName=FunctionalSpecifications
Detailed Design -
http://www.pragmaticsw.com/Templates.asp
- Communicate Effectively -
During development, it is imperative that everyone
knows the status of the development effort and
to allow people to ask questions and get answers
regarding specific
requirements.
To do this, communicate daily status and
requirement questions via email or a
discussion forum.
Have developers discuss (briefly) what code modules
they worked
on for the day -- this allows others to know
what areas they are working in and can
proactively alert them if they are also working
in an area that might causes issues based on the
work they are doing.
Have developers and testers ask questions about
requirements and have subject matter experts
respond to those questions with answers.
This can dramatically reduce QA time.
References:
Requirements -
http://www.pragmaticsw.com/GuidedTours/Default.asp?FileName=FunctionalSpecifications
Discussion Forums -
http://www.pragmaticsw.com/GuidedTours/Default.asp?FileName=DiscussionBoard
- Meet Daily - No matter if
you are using Waterfall or Agile development, it
is important to meet daily with your development
and testing team to know the status of where
things stand. This provide full
transparency - if you review progress, status
and impediments daily, you should never be
surprised if tasks begin to slip and you can
proactively resolve those to reduce slippage.
When meeting daily, hold the meeting first thing
in the morning and try to keep the meeting to 30
minutes or less. Here would be a typical
agenda for the meeting:
- Review progress - Do this by
analyzing a project
burn down chart. This shows how well
you are progressing towards completion of the
project.
- Identify slippage - After
reviewing progress, identify if anyone is
slipping in their tasks and brain storm on
helping them catch up.
- Remove Roadblocks
- Ask if anyone is experiencing
impediments and roadblocks. Help clear those
roadblocks.
References:
Burn Down Chart -
http://www.pragmaticsw.com/WhitePaper_SP_Metrics.pdf
Habit 2 - Begin with
the End in Mind
Your end goal for a software project
should be to deliver high quality software that
meets the needs of the client using reusable and
maintainable code. Before coding
begins, you should make a list of success criteria
that you judge the project on. For example,
your success criteria may be that the software
produces specific results, has no known defects (or
a small number of low severity defects), is
reusable, is maintainable, is well
documented, is easy to use, etc. By defining
the success criteria up front, you can objectively
evaluate whether the project met the criteria or
not. Solicit help from all team members
(project managers, product managers, testers,
automation engineers, other developers, documentation
specialists, etc.) when defining the success
criteria. By getting a team perspective of the
success criteria, you will have better and more
measurable criteria and you will get much better
buy-in from the team. Below are some tips for
ensuring your meet your success criteria at
the end:
- Identify success criteria - Make
sure your success criteria is published and agreed
upon by the team members.
- Review success criteria - At
least weekly (in one of your daily team meetings),
review the success criteria. This can include
reviewing your defect statistics, test case run
history, etc. to allow you to determine if you are
progressing towards the success criteria as the
project continues.
- Retrospective - Once your
project is complete, do a "post mortem" or "retrospective"
to determine if you met your success criteria.
References:
Retrospectives -
http://www.softwareplanner.com/Newsletters/newsletter_2008_08_SP.htm
Habit 3 - Put First
Things First
Prioritizing work effort is critical.
You must apply effort to the most important things
first, followed by less important things. Many
times a project can introduce cost and time overruns
by small decisions that are made each day. The
project manager must keep a close eye on these
things to ensure that the project has the best
chance of completing on time and on budget.
Here are some examples of innocent "small" changes
that could impact your project deliverables:
- Feature Changes - Many
times the team is tempted to make "small
changes" to a requirement during the coding or
testing phase under the guise of making the
feature more attractive or usable. If the
proper thought is put into the requirements, use
cases, prototyping and design, the probability
of this happening during coding or testing is
less. A "small change" can impact many
things. For example, imagine that a
developer presents the case for enhancing a
particular screen to have a bit different design
than was originally set. Although making
the coding changes might be minimal (a few
hours), it is important to see that it might
also trigger a change to the requirements
document, the test cases, automated test cases,
the help system and other documentation.
So this "small" 4 hour coding change could turn
into a 3 day impact on the overall project plan.
- Enhancements Disguised as Defects
- Sometimes testers will disguise an enhancement
as a defect. If the developer is not
familiar with how it was originally implemented
(or why it was implemented this way), they may
assume it is a defect and make a change that
impacts existing clients. Although the
tester saw this as a great change for their
clients, it may impact clients that do not see
it as a good change. To mitigate this, the
project management and/or product owner should
triage defects to ensure that they are true
defects, not enhancement requests.
Habit 4 - Think Win/Win
When
dealing with projects, you want to foster a win/win
relationship between your team and the client.
The alternative to that is:
- Win/Loss -
In
this scenario, your team wins but the client
loses. This can cause loss of future
business with the client.
- Lost/Win - In this
scenario, your team loses but
the client wins. This can cause team burnout,
financial distress and other issues.
- Win/Win - This is the
scenario you want
to foster. In this scenario, both your
team and the client wins. How is it done?
Normally this centers around the project
management pyramid (Features, Time, Cost).
To foster a win/win relationship, one of those
variables must be flexible. Once your team
and client agree to that, it is much easier to
make objective decisions about how to plan the
project. Here are examples:
1. More Features / Less Time -
The flexible variable is cost, so your client
agrees to absorb more costs (you can hire more
people).
2. Cost Savings / Less Time -
The flexible variable is features, so less
features will be delivered but costs and time
will be less.
3. More Features / More Costs -
The flexible variable is time, allowing you to
extend the timeline.
Habit 5 - Seek First to
Understand, Then to be Understood
Many of
us have a bad habit of blocking out a conversation
and not listening because we so desperately want our
opinion to be heard. Every team member
(project manager, developer, tester, etc.) has different experiences, different
perspectives and motivations.
Before
you can solve any problem, it is important to first
listen intently and diligently to fully understand
the problem. Once you feel you have all
the facts, solicit ideas for multiple solutions.
Having several options can provide better
discussions and allows team members to tweak initial
solutions into solutions that are more far reaching
and solve the problem in a more direct way.
If you disagree with an approach, don't attack the
person that offered the approach. Instead,
explain based on your past experiences why you think
there might be a better approach.
Habit 6 - Synergize
Team
collaboration is the key to a synergized team.
A synergized team is made up of divergent team
members that have different strengths, different
backgrounds and different perspectives.
Encourage these differences but provide your team
with
tools that allow you maximize their
effectiveness. Highly collaborative teams
communicate with each other by
sharing their
calendars, posting their statuses into
discussion
forums so that everyone is aware of what the other
is doing and accomplishing. These teams keep
track of all tasks they work on each day, the number
of hours worked, the number of hours remaining and
variances to plan. They also
share documents
that illustrate best practices and produce white
papers that teach others what they have learned.
References:
Tools -
http://www.pragmaticsw.com/GuidedTours/Default.asp?FileName=OverviewSoftwarePlanner
Calendar Sharing -
http://www.pragmaticsw.com/GuidedTours/Default.asp?FileName=Calendar
Discussion Forums -
http://www.pragmaticsw.com/GuidedTours/Default.asp?FileName=DiscussionBoard
Task Tracking -
http://www.pragmaticsw.com/GuidedTours/Default.asp?FileName=ProjectPlans
Document Sharing -
http://www.pragmaticsw.com/GuidedTours/Default.asp?FileName=SharedDocuments
Habit 7 - Sharpen the
Saw
Productive project managers see the need to continue honing
their skills and love learning new techniques, best
practices and approaches. They proactively
learn about different ways to manage projects,
including PMI, ITL, CMMI, and Agile. Below are
some links that might be of interest to you:
|
|
Helpful
Resources
Below are some helpful
resources and templates to aid you in developing software
solutions:
|
About the Author
Steve Miller is the President of Pragmatic Software
(http://www.PragmaticSW.com).
With over 24 years of experience, Steve has
extensive knowledge in project management, software
architecture and test design. Steve publishes a
monthly newsletter for companies that design and
develop software. You can read other newsletters at
http://www.PragmaticSW.com/Newsletters.asp.
|
|
Note:
This newsletter is never sent unsolicited, it was
opted into from our website. If you wish to
unsubscribe,
click here. |
|
|