I'm always interested in project success, so I was drawn to this article in
CIO.com: "
5 Principles for Reducing IT Project Failure"
Rather than being IT-specific I would say that these are simply 5 principles for reducing project failure:
1.
Communicate: If everyone involved in your IT project doesn’t know what
they’re working on, when it’s due, how to get it done and who the
audience is, how can you possibly expect your project to succeed?
The
aim is to ensure that everyone in the project knows what is going on,
what is expected, when it's expected, for whom it's expected, etc.
Nobody is then treated like a mushroom kept in the dark and fed
fertiliser.
2. Consolidate: We’re talking about information and tasks here.
If
you can't find the right information for what you're working on, or it
takes you a long time to find it, you are wasting time and effort that
can be better spent working constructively towards your project goals.
Reduce bureaucracy, cut through the red tape and put information within
easy reach so everyone can do the job that they are supposed to be
doing.
3. Prioritize: Issues come in, bugs are discovered, and new application features are conceived of every day.
Dropping
everything to work on a just-reported bug, or to do a "quick job" for
someone is probably not the best use of someone's time. The bug may be
of lower priority than what you are currently working on. The "quick
job" is a distraction where your time can be better spent working on
something delivering higher value.
4.
Requirements: In ALM and your SDLC, before you can do anything else,
you need to identify, prioritize and agree on application (and project)
requirements.
It is fundamental that you need to know what
the requirements are before you work on something. Once requirements
are elicited, they can be analysed and prioritised. Misunderstandings
can be removed to ensure that the project team and stakeholders are of
one view as to what the requirements are. Understood requirements mean
that something can be designed and built. Understood requirements mean
that a plan can be made to test them.
5.
Manage Time: As management, it’s up to you to take the first step in
setting reasonable deadlines and milestones for your team throughout
the project.
Knowing where you are in a project, where you
should be and how fast you are delivering are vital pieces of
information in determining what will be delivered by when.
Alternatively, these are just, 5
Agile/
Scrum principles.
1. CommunicateScrum
revolves around a cross-functional, self-organising Scrum Team that has
a daily stand-up meeting where every team member communicates what he
did the previous day, what he is committing to do today and if he has
any blockages or impediments.
Developers, testers, DBAs, designers, BAs are all kept informed of what all the other members of the Scrum Team are doing.
Scrum also involves the whole Scrum Team being involved in the Sprint Planning.
The
Scrum Board and Burndown Chart should be visible to all, so everybody
can see what the Scrum Team is working on, and what their progress is -
instant reporting!
2. ConsolidateAgility
is about individuals and interactions being valued more than processes
and tools, and about working code being valued more than comprehensive
documentation. "
Muda", one of the
Toyota Principles, is focused on removing waste, where waste means wasted materials but also means wasted time and effort.
Agile
practices refer to doing "just enough" or doing what is "sufficient and
necessary". Agile teams commonly use wikis to document information,
they record requirements on cards or Post It notes which are kept on the
Scrum Board (or
Kanban Board).
3. PrioritiseScrum
requires the Product Owner to prioritise work. The Scrum Team only
works on what is currently the highest priority collection of
requirements. Requirements should be prioritised so that the ones
delivering the highest business value are delivered first. Also, those
requirements which eliminate the most risk should also be prioritised
highest.
Considering simply high and low business value and risk,
the best order in which to prioritise requirements according to their
business value and risk is:
- High risk, High business value
- Low risk, High business value
- Low risk, Low business value
- High risk, Low business value
The
aim is to eliminate as much risk and deliver as much business value as
early as possible, overall delivering a high ROI. Risk can also be
categorised as uncertainty - the uncertainty that something is feasible.
Bugs, new requirements, existing requirements all go on the backlog and are prioritised accordingly.
4. RequirementsScrum can not proceed without requirements.
The list of requirements is maintained in a Product Backlog, in priority order (c.f. Prioritise)
5. Manage TimeScrum sets regular deadlines for the Scrum Team to commit itself to delivering working software satisfying the requirements.
Progress
is visible on the Scrum Board - which presents a snapshot of progress
in terms of what's Done, what the team are Doing and what's still To Do.
Progress is also visible in the Burndown Chart which shows the rate of
progress.
Requirements and tasks are estimated by the people who
will do the work - acknowledged to be more accurate than estimates by
people who do not do the work - and that knowledge is used to set
realistic expectations.
Daily reporting in the Daily Scrum means
that people are held accountable to the whole Scrum Team for the
commitments they make each day.
So, 5 principles for reducing
IT project failure are satisfied by Agile practices. Though I often
remark that what are often regarded as Agile practices (coding
standards, continuous integration, etc.) are just good engineering
practices. So,
Alistair Cockburn is right that Agile is the norm - it's just good practice.