Showing posts with label risk management. Show all posts
Showing posts with label risk management. Show all posts

Reduce Your Risk Of Failure

reduce your risk of failureThe key principles of agile software development help to mitigate many of the common reasons for project failure.

In particular, the incremental approach and active user involvement guard against one of the biggest risks. The risk of building a software product that doesn’t meet expectations. The risk of building the wrong product.

But how does agile software development help you to manage risks that fall outside the development process? The risks that aren’t inherently reduced by an agile approach.

Here I take a look at how you could incorporate a more traditional approach to risk management, within a project that's using an agile approach...

In a more traditional PRINCE2-based project, you would keep a risk log. Typically a risk log would include the following information:

  • description of the risk
  • date raised
  • likelihood - description of its likelihood and rating (1 unlikely, 2 possible, 3 likely)
  • impact - description of the impact and rating (1 low, 2 medium, 3 high)
  • mitigation - what could or should be done to reduce the likelihood of the risk?
  • contingency - what will we do if the risk becomes an issue? What should we be doing to plan for it's eventuality, particularly if it's likely
  • actions (with dates and owners)
  • last updated - when the entry in the risk log was last updated and by who

You can keep a risk log in agile projects too. Of course. There are no rules in agile which say you must not use any other management approaches or artifacts in conjunction with an agile approach.

But how do you make something like a risk log more akin to agile principles? And how do we integrate this kind of risk management within the iterative cycles of agile development? Here are some suggestions...

  1. Make it visible. Put it on the wall for all to see. For the team, project manager, product owner, etc to see every day in the daily stand-up meeting.

  2. Make it collaborative. Allow anyone to add a new risk or add comments on an existing risk any time they want.

  3. Make it visual. Put the likelihood and impact in a 3x3 grid, so likely risks with high impact are top right (in red) and unlikely risks with low impact are bottom left (in green). Each risk then gets a score of 1-9, i.e. likelihood*impact.

  4. Make it part of the process. In Sprint (iteration) planning - as well as asking what went well, what didn't go so well, what would we do differently in the next iteration - also ask what could prevent us from meeting our objectives? For the Sprint and for the project as a whole. Facilitate the team's thought process to actively identify risks. Add them to the risk log on the wall.

  5. Include it in the product backlog ('feature' list). If it's appropriate to do something to mitigate a risk and reduce its likelihood, or to prepare contingency for the risk, add the actions to the Product Backlog for the project and prioritise them along with the features. The Product Owner is then taking business responsibility for the risk and its priority relative to features of the product. If a risk occurs before the mitigating actions are reached, this was a knowing commercial judgement about its priority and not a failing of the team to identify or highlight the risk.

  6. Review it daily. In the daily stand-up meetings - as well as asking what have you done since the last meeting, what will you do before the next meeting, and if there anything holding up your progress - also ask each team member if there's anything that could prevent them from meeting their goals. This will encourage a little proactive thought, not just reactive when progress is blocked.

  7. Make it the team's responsibility (to identify and highlight risks). By asking the team to identify risks during planning meetings, and within each iteration. By asking the team to rate the likelihood and impact. By asking the team what could be done to reduce a risk's likelihood. By asking the team what we would do if the risk materialises. However the priority of a risk is still a business decision. It's up to the Product Owner to decide on the priority of a risk, in relation to other activities on the backlog.

In other words, on major projects particularly, make risk management part of your everyday business.

See also:
Why most IT projects fail. And how agile principles help
A sad indictment of the software development industry
10 Key Principles of Agile Software Development
10 Key Principles - PowerPoint presentation

read more

Is Agile Development Right For Your Project?

is agile development right for your projectSome argue that an agile development approach is right for any project. Others argue that agile is a hoax :-)

Of course the reality is somewhere in between.

I'm sure you can apply agile principles, or a more traditional approach, to any project. The best way to approach anything is often the way you know.

Although I'm sure that some projects definitely suit agile more than others.

Personally I think agile suits more projects than not - due to human nature and the evolutionary nature of software development.

But how do you know whether you should use agile for your project? Or whether or not your typical projects suit agile? How do you know if agile is right for you?

DSDM (Dynamic Systems Development Method) is one of the earliest development methodologies based on agile philosophies. The DSDM methodology includes a project suitability filter.

This filter is a simple questionnaire that attempts to highlight the key characteristics of a project that is well suited to DSDM, or more generally to an agile approach. Here are questions:

  • Does the sponsor/senior management understand and accept the iterative philosophy?

  • Is there senior user commitment to provide active user (or user representative) involvement?

  • Can the organisation accommodate the frequent delivery of increments?

  • Will it be possible for the developers to have access to users (user representatives) throughout the project?

  • Will the development team remain the same throughout the project?

  • Will the development team have the appropriate skills?

  • Is there a supportive commercial relationship?

  • Will the project use technologies suitable for prototyping?

  • Is there a highly demonstrable user interface?

  • Is there clear ownership?

  • Will the development be computationally non-complex? (agile can be used on complex projects but complex computation lends itself less well to frequent change, prototyping and visibility)

  • Can the solution be delivered in small increments?

  • Does the development have a fixed timescale?

  • Can the requirements be prioritised (can't all be must-haves)

  • Will users be able to define requirements interactively?
Of course some of these questions are important in a non-agile approach too. But these questions are even more important for agile projects.

If you're thinking of using an agile approach, YES to the above questions is good :-)

If you have a few NO's, this doesn't mean agile is inappropriate, although you should consider how you might mitigate these risks.

If you have lots of NO's, you should think seriously about whether your project is really suitable, or ask yourself honestly, is your organisation really ready for agile?


See also:
10 Key Principles of Agile Software Development
10 Good Reasons to do Agile Software Development

read more

A Sad Indictment of the Software Development Industry

a sad indictment of the software development industryWhen I first saw this (quite a few years ago now), it made me laugh. In fact I thought it was hilarious. A really humourous insight into one of the key issues in software development.

When I saw it again recently, to be honest it still made me laugh. But - when I thought about it a little more deeply - it also made me sad. Sad that the industry I take such a pride in being a part of, has this reputation. This reputation for delivering the wrong product! And that's just not funny :-(

The key principles of agile software development help enormously with so many of the common risks of project failure. Of course they don't alleviate all risks. Not at all. Because software development is complex. People are complex. And the combination of software and people is a lethal cocktail of unpredictability. But if there's one risk; one risk that agile software development really does guard against; it's this one.

The key principles of agile software development really do provide some insurance against this risk. The key principles of active user involvement, empowered teams, incremental development, frequent delivery of product, testing throughout, close collaboration, etc.

And if *your* product - like so many of mine, now and over the years - is a product that generates revenue - a product that is sold - then this, and this alone, can make the difference between success and failure.


See also:
Why most IT projects fail. And how agile principles help
10 Key Principles of agile software development
10 Key Principles - PowerPoint presentation

read more

Why Most IT Projects Fail. And How Agile Principles Help

why most IT projects fail, and how agile principles helpI recently wrote a blog post explaining why most IT projects fail to meet expectations.

As a follow-up, here I take a quick look at the common reasons for project failure, and how I think agile software development methods and agile principles mitigate these risks and issues.

I have a strong view that agile methods help significantly with a lot of these areas of project risk, although I'm sure not all. This is an enourmous subject, so I can't really do it justice and keep this blog post a reasonable length. So you'll just have to take or leave my comments on face value :-)


Here's how I think agile principles help, in my experience:

Common cause of failure How agile helps
Project Initiation & Planning Issues
Unclear or unconvincing business case Agile principles don't help directly with the busines case - in fact it can be hard to make a business case for agile projects due to their agile (i.e. unpredictable) nature. However the principles of incremental delivery and frequent deliver of products can help to get an initial solution out, test the proposition with the market and get real customer feedback to inform the priorities for further development.
Insufficient or non-existent approval process Agile business cases and new business propositions benefit from the same diligence and challenge before investing large amounts of money, just as in any other approach to development.
Poor definition of project scope and objectives Agile projects also benefit from clear definition of scope and objectives, even though details are allowed to emerge throughout the development.
Insufficient time or money given to project If only agile could solve this!
Lack of business ownership and accountability Active user involvement, or involvement from a key user representative in the business, creates an environment that fosters close collaboration and cooperation.
Insufficient and/or over-optimistic planning This is an interesting one. I (like many agile enthusiasts) believe that it's practically impossible to plan every detail of many software development projects up front, hence expectations are better managed by active involvement in the project, frequent delivery of product on an incremental basis.
Poor estimating Agile methods provide some important principles to help with accuracy of estimating: estimating should be done by the whole team as a collaborative process; tasks should be broken down into micro pieces (ideally less than 1 day) so progress is measurable on a daily basis; 'velocity' is calculated on the number of estimated hours delivered only when a feature is 100% complete, providing a gauge for how much development can be safely included in future iterations. In non agile methods, this approach can also be adopted and is known as 'earned value analysis'. So even if you're terrible at estimating, this approach can be self correcting as long as you're consistently terrible :-)
Long or unrealistic timescales; forcing project end dates despite best estimates Agile projects encourage short and regular iterations, developing the software and delivering working product in small bitesize pieces.
Lack of thoroughness and diligence in the project startup phases Rather than diligent and thorough planning, agile principles propose to deliver small increments of working product and get continuous feedback from active user involvement throughout the development cycle.
Technical & Requirements Issues
Lack of user involvement (resulting in expectation issues) Active user involvement and continuous feedback is one of the most important principles of an agile approach.
Product owner unclear or consistently not available One of the reasons product owners are unclear in traditional projects is because they are asked for far more detail than they can handle, too early in a project and when they cannot visualise the solution. Instead, agile requirements are kept lightweight and visual, and delivered just in time for a feature to be developed. Availability must be forthcoming for agile principles to work, as it's essential for constant collaboration.
Scope creep; lack of adequate change control Agile projects may stick to the broad scope of the project, but requirements are allowed to emerge and evolve. However the project must include non-essential requirements at the outset, in order for emerging requirements to be traded with original scope.
Poor or no requirements definition; incomplete or changing requirements Agile projects expect requirements to be incomplete and changing. That's the nature of software. Instead of resisting this, agile projects provide for it by allowing requirements are allowed to emerge and evolve. Requirements being produced on a feature-by-feature basis, just in time to be developed, helps with definition because it breaks this intensive task into small pieces instead of being a mammoth effort up front.
Wrong or inappropriate technology choices Agile projects can surface inappropriate technology choices early, as they encourage frequent delivery of product on an incremental basis. Testing is integrated throughout the development cycle, testing each feature as it's developed. Doing so can help to ensure inappropriate technology choices are identified early, before too much of the software has been developed.
Unfamiliar or changing technologies; lack of required technical skills Agile methods don't help directly with this issue, although can help to surface such issues early, and make them visible.
Integration problems during implementation Agile projects are delivered in short iterations, with testing integrated throughout the development. This requires continuous integration of the code and frequent builds, removing the need for a lengthy or problematic integration phase at the end of the project.
Poor or insufficient testing before go-live Testing is integrated throughout the development.
Lack of QA for key deliverables Working software is the key measure of progress, as the software is developed and delivered in regular iterations. This helps to ensure that the adequacy of any other deliverables is highlighted early and made visible.
Long and unpredictable bug fixing phase at end of project Testing is integrated throughout the development.
Stakeholder Management & Team Issues
Insufficient attention to stakeholders and their needs; failure to manage expectations Active user involvement ensures two way feedback throughout the development.
Lack of senior management/executive support; project sponsors not 100% committed to the objectives; lack understanding of the project and not actively involved All projects need this, agile or otherwise.
Inadequate visibility of project status Agile projects provide clear visibility of measurable progress on a daily basis.
Denial adopted in preference to hard truths Humans, eh? Who needs 'em!
People not dedicated to project; trying to balance too many different priorities I don't think this ideal is specific only to agile methods, but agile principles propose small, multi-displined teams dedicated to the development of the product.
Project team members lack experience and do not have the required skills Agile principles may help to surface such issues early, as they may well be evident in early iterations of the software. Frequent delivery of iterations and continuous testing can help to mitigate this risk when it might otherwise go unnoticed until much later in the project.
Team lacks authority or decision making ability Agile teams must be empowered.
Poor collaboration, communication and teamwork Close cooperation and collaboration between all stakeholders is essential.
Project Management Issues
No project management best practices Can be an issue when applying agile methods, unless using an agile management practice such as Scrum.
Weak ongoing management; inadequately trained or inexperienced project managers Agile methods and principles are just management tools. A fool with a tool is still a fool!
Inadequate tracking and reporting; not reviewing progress regularly or diligently enough Agile practices have daily status reporting built into the process, providing clear visibility and measurable progress on a very regular basis.
Ineffective time and cost management Daily visibility of measurable progress.
Lack of leadership and/or communication skills Sadly, adopting agile principles doesn't make inspirational leaders. However agile principles do encourage a particular form of servant leadership, empowering the team to take responsibility and make timely decisions.

Of course most of the things I've cited as agile mitigations can be applied in any project methodology, including waterfall. It's just that they are more the norm and explicitly emphasised in agile principles and practices, which is something I really like.

Most of all, agile principles help enormously with visibility, collaboration and engagement. This can transform the levels of trust and teamwork between the product team and its key stakeholders. The consequence of this is enhanced satisfaction, due to a much greater understanding of the commitment and expertise of the team, and the issues and risks they face. If failure, by definition, is a problem of not meeting expectations, you're half way there when you adopt an agile approach.

However, all this, in the end, ultimately still relies heavily on the skills of the team. Just because agile methods state these principles and have some inherent risk management built within the process, it doesn't mean the team necessarily has all the skills and experience it needs to execute the princples consistently.

See also:
Most IT Projects fail. Will yours?
DIY Guide for Fixing a Failing Project - by Mike Cohn
10 Key Principles of Agile Software Development
10 Good Reasons to do Agile Software Development

read more

Most IT Projects Fail. Will Yours?

Most IT Projects Fail. Will Yours?Studies on project failure are easy to find and make depressing reading.

Gartner studies suggest that 75% of all US IT projects are considered to be failures by those responsible for initiating them.

But what do they mean by failure?

They mean the solutions fundamentally did not do what was agreed. Or they missed deadlines. And/or came in over budget. Indeed half of the projects exceeded budget by 200%!

A Standish Group study, again in the US IT industry, found that 31% of projects were cancelled outright and that the performance of 53% of the all projects was so worrying that they were challenged.

Some questions that need to be answered in assessing whether a project is fundamentally a success or failure?

  • Has the project satisfied the business requirements of the primary stakeholders?
  • Were the deliverables produced on time and within budget (or as amended by agreed change control)?
  • Do the business owners *perceive* the project to be successful?
  • Has the project delivered the business value promised in the original case for doing it?

I’ve scanned the Internet and read all sorts of articles and research on project failure, and consolidated them into a long list of reasons why IT projects most commonly fail. I've managed to eliminate all the duplicate reasons and boil it all down to these common areas, although it's still quite a long list, unfortunately for IT and project managers!

Project Initiation & Planning Issues

  • Unclear or unconvincing business case
  • Insufficient or non-existent approval process
  • Poor definition of project scope and objectives
  • Insufficient time or money given to project
  • Lack of business ownership and accountability
  • Insufficient and/or over-optimistic planning
  • Poor estimating
  • Long or unrealistic timescales; forcing project end dates despite best estimates
  • Lack of thoroughness and diligence in the project startup phases

Technical & Requirements Issues

  • Lack of user involvement (resulting in expectation issues)
  • Product owner unclear or consistently not available
  • Scope creep; lack of adequate change control
  • Poor or no requirements definition; incomplete or changing requirements
  • Wrong or inappropriate technology choices
  • Unfamiliar or changing technologies; lack of required technical skills
  • Integration problems during implementation
  • Poor or insufficient testing before go-live
  • Lack of QA for key deliverables
  • Long and unpredictable bug fixing phase at end of project

Stakeholder Management & Team Issues

  • Insufficient attention to stakeholders and their needs; failure to manage expectations
  • Lack of senior management/executive support; project sponsors not 100% committed to the objectives; lack understanding of the project and not actively involved
  • Inadequate visibility of project status
  • Denial adopted in preference to hard truths
  • People not dedicated to project; trying to balance too many different priorities
  • Project team members lack experience and do not have the required skills
  • Team lacks authority or decision making ability
  • Poor collaboration, communication and teamwork

Project Management Issues

  • No project management best practices
  • Weak ongoing management; inadequately trained or inexperienced project managers
  • Inadequate tracking and reporting; not reviewing progress regularly or diligently enough
  • Ineffective time and cost management
  • Lack of leadership and/or communication skills

I'm sure we've all seen projects with all or some of these issues. You know, those projects *other people* run :-)

In reality, probably ALL projects have many of these issues. But somewhere there is a threshold. An undefined point where the issues are material to a project's chance of success, or its likelihood to fail. If only we knew where that point was!

A few things struck me when compiling this list:

Not one article or piece of research I read (and I read quite a few!) mentioned risk management. Not one. Lack of proactive risk management. Inability to identify or mitigate risks. Lack of focus on risks. Not one article or piece of research that I found. So that got me thinking. If we don't seem to acknowledge risk management, and we certainly don't seem to see it as a cause of failure, are we to believe that we as an IT industry have got risk management cracked? And if so, why do so many of our projects fail?

Secondly I was thinking about how agile principles help to mitigate these risks? I have a strong view that agile methods help with some of these areas a lot, although I'm not sure all. And it also got me thinking that I don't recall reading about any formal mechanism or process for risk management within agile methods - unless I've missed or forgotten it. There's quite a bit of risk management inherently built into agile principles and practices, but there doesn't seem to be any explicit risk management discipline.

Thirdly, I started thinking about risk management in more formal project management methodologies such as PRINCE2. Risk management is certainly a key discipline there. But one of the key things I was taught as a PRINCE2-based Project Manager (once upon a time I was one), was to only highlight risks unique to the project, because there's no need to highlight the *usual* risks. We all know software development projects might run late, for instance. So we don't need to articulate it on a formal project proposal, or in the risk log, etc. But if we don't articulate and mitigate the *usual* risks, aren't we ignoring the risks most likely to cause our project to fail?

See also:
Reduce your risk of failure
How agile principles help with these issues
DIY Guide for Fixing a Failing Project - by Mike Cohn
10 Key Principles of Agile Software Development
10 Good Reasons to do Agile Software Development

read more