Showing posts with label project failure. Show all posts
Showing posts with label project failure. Show all posts

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