Professional Documents
Culture Documents
Project management
Good management cannot guarantee project's success but bad management usually results in project's
failure.
The general success criteria for a project are:
Deliver the software to the customer at the agreed time.
Keep overall costs within budget.
Deliver software that meets the customer's expectations.
Maintain a happy and well functioning development team.
Software engineering is different from other types of engineering in a number of ways that make
software management particularly challenging:
The product is intangible
Most projects are one-off – there is no point creating the same software twice, so experience
from previous projects may not be transferable to the next one.
Software processes are variable and organization-specific – it's hard to predict reliably when a
particular software process is likely to lead to development problems.
Risk management
Risk management is anticipating risks that may affect the project schedule or the quality of software
being developed and taking actions to avoid those risks.
There are 3 categories of risks:
Project risks – affecting the project schedule or resources, e.g. loss of an experienced designer
Product risks- affecting the quality or performance of the software, e.g. failure of a purchased
component to perform as expected
Business risks – affecting the organization, e.g. a competitor introducing a product
Risk management is particularly important for software projects because of the inherent uncertainties
most projects face.
Risk identification – identifying possible project, product and business risks – first stage of the process.
There is at least 6 types of risks that should be thought about:
Technology risks
People risks
Organizational risks
Tool risks
Requirements risks
Estimation risks
Risk analysis – assessing the likelihood and consequences of the risks. Requires thinking about each
identified risk and assessing its probability and seriousness. To do that, you need to rely on your
judgement and experience from previous projects. The risk should be assigned to a band according to:
Probability – very low, low, moderate, high, very high
Seriousness – insignificant, tolerable, serious (causing major delay), catastrophic (threatening
the survival of the project)
Then the results should be tabulated. The table needs to be updated as more information about the
risks become available. The most serious risks should be monitored.
Risk planning – making plans to avoid the risks or minimize the consequences. Each risk needs to be
considered and a strategy to manage it should be developed. There are several risk management
strategies:
Avoidance – reducing the probability of the risk occurring
Minimization – reducing the impact of the risk
Contingency plan – a plan to deal with a risk if it does arise
Risk monitoring – assessing the risks regularly and revising plans for risk mitigation when more is
learnt about them. It includes checking that the assumptions about risks haven't changed. Each of the
risks should be regularly assessed to see if its probability or effects has changed
The risk management process is an iterative process that continues throughout the project.
Managing people
People are an organization's most important asset. Poor people management is an important factor
contributing to project failures.
Good software engineers are not necessarily good managers.
Motivating people
Motivation means organizing the work and working environment to encourage people to work as
effectively as possible.
According to Maslov, people are motivated by having their needs satisfied. The needs are arranged in
levels:
Teamwork
It is a critical management task to put together a group that has the right balance of technical skills,
experience and personalities. A good group is cohesive and has team spirit. Members of a cohesive
group think of the group as more important than the individuals.
Benefits of creating a cohesive group:
The group can establish its own quality standards – they're more likely to be followed than
external standards imposed on the group
People learn from and support each other
Knowledge is shared – if a member leaves, others can take their tasks
Refactoring and continuous improvement is encouraged
One of the most effective ways of promoting cohesion is to be inclusive. Members should be treated as
trustworthy and information should be freely available.
There are 3 factors that affect a team, apart from the nature of a project and organizational issues:
People in the group
Group organization
Technical and managerial communications
Group organization
Informal groups can be successful particularly when most members are competent and experienced. If a
group is composed of inexperienced members, they might need an authority to direct their work.
Hierarchical groups have clear organizational structure, decisions are made on the top and
implemented by the people on the bottom, there is little upward communication. These groups don't
formally recognize ability differences between team members.
Chief programmer team – a team build around an individual, highly skilled programmer. The problems
with this group are: it is overdependent on the chief programmer, other team members may become
unmotivated.
Group communication
It is essential that group members can communicate effectively with each other and other project
stakeholders. Effectiveness of the communication is influenced by:
Group size – it is harder to communicate effectively in bigger groups
Group structure – informal groups tend to communicate better
Group composition – people with the same personality type may clash with each other
Physical work environment
Available communication channels
Communication must be two-way to be effective.
Summary