In 2002, the United States wasted over $55 billion on failed and poorly run software projects according to the Standish Group. Ten years ago, they reported similar numbers with 53% of projects overrunning their estimates and only 61% of features being implemented.
Why have things changed so little over the past decade despite the great advances of the web, technology innovations and a brutal economic downturn that should have forced efficiencies as a matter of survival?
How about your projects? Are they on track for success or doomed to fall into the chasm of late and cancelled projects? Here are 8 pitfalls to avoid and solutions to try on your next project.
Use the wrong process. The process people will tell you this is the key root of the problem. What do you expect? They’re process people. We have found that processes do not make great software. Great software is created by a highly focused group of people with a clear vision, the right skills, and an environment that allows them to accomplish their goals. Agile, RUP, Six Sigma, and other processes all add rigor to a naturally chaotic and creative process. We use pieces of each of these methods on all of our projects. The problem with systematically following a rigid process is that people try to substitute the ‘processes’ for ‘thinking’. Completing the tasks and following a process will not in itself lead to a successful completion of a project.
SolutionThere is no perfect process. Take the best ideas from several mainstream methodologies and implement a pragmatic set of techniques using an iterative model. Tailor your process to each project based on size and complexity. The biggest problems with project delays arise out of Missed steps. These can result in fatal blows later in a project. A big Missed step is the user study. Did you really study how the users work and understand their needs? User studies can truly unite business and IT team members on the key business issues they are trying to solve. Measure your results of usability testing using Six Sigma techniques and create use cases in a standard format (RUP). Finally use an iterative approach emphasizing whiteboards (Agile) and prototyping to zero in on the true requirements.
Sweat the small stuff How many times have you been in a design meeting where the argument has degraded down to hour long discussions of where the button goes or whether it should be labeled ‘Save’ or ‘Submit’? Other common sidebar discussions concerning color or use of a specific font or disabling the ‘Back button’ can easily put a halt to a productive design session. All these are important issues, however, when each team re-examines UI standards for each project it becomes an incredible waste of time and defocuses the team from the important business issues they set out to solve.
Solution:Implement design standards. Implement design standards with sound user interface design principles and evolve these into visual design patterns as you test and validate what works with your users. Make them available across the organization via a web-based repository and keep them updated and flexible to meet the needs of different users and technologies.
Solve the wrong business issues. True business issues are often not addressed even if the project meets deadlines for implementation. This results in additional product releases before the users can functionally use the system. Stakeholders are sensitive to this and now factor these subsequent releases into the project cost often resulting in little or no ROI (Return on Investment) associated with the project, thus putting future project funding for other IT initiatives at risk.
Solution – Identify the true business issues. Hang out with users, talk to customers, and dig up the root cause of issues they face. Ask how and why questions and implement these solutions into your use cases. When writing use cases, try a two column use case format vs. typical one column format where you can document intent of the user on the left and system response on the right. Focus your initial efforts on the high impact use cases and primary success scenarios. Dont get caught up in all the exception cases until you have really nailed down the key tasks performed 80% of the time.
Have the wrong team mix. Many teams have missing players or the roles assigned are not understood. Great products need balanced input from at least three perspectives: (IT, Product Mgmt, and Stakeholders). Often a 4th perspective is required: Usability. Usability runs the middle ground between product management and IT to ensure the stakeholders can use the delivered solution. Without the right mix, a natural imbalance will occur and a technology-centered solution will often emerge along with high training and support costs. Even if balance exists, the short-term nature of today’s products often results in a lack of vision. If a visionary is brought into the mix, the team immediately pushes back in fear of putting their pre-determined project deadlines in jeopardy. Unfortunately, the team may meet their project release date but miss the mark on solving the true business issues or capitalizing on a new business opportunity.
Solution: Build the right team or acquire skills to fill the gaps. A ‘usability person’ often has very different skills than an interaction designer. Usability people find defects and interaction designers create solutions. Consider your team lucky if you have one person who can do both. Business analysts often fill the role of a product manager but may not fully understand what drives revenue. A product manager may have the vision but may lack the skills or political influence to bridge the gap between stakeholders and IT. Bring in a person with vision to help really solve the key issues and the political clout to bring about change. The visionary sees where the end-game needs to be played whereas the IT group often needs to stay focused on the next release in order to keep their sanity and meet deadlines. Create a project roadmap so all parties see where the product is going and how it will get there via the iterative process. Avoid myopic thinking.
Jeff Hawkins, the inventor of the original Palm demonstrated his vision recently with the recently released Treo 600. After he met with users in New York he had a clear vision on user needs and had the team stop mid-stream on PDA design and refocus their efforts on a combined Palm, Phone and Blackberry. After much resistance, the team got clear on the vision and now has a market leading product.
Bog your team down in meetings. We still have too many meetings. Combine poor team communication with offshore outsourcing and some scaring things are ending up on the user’s desktops. As teams become more geographically disbursed, the need to clearly articulate specific design details is more important. One estimate we’ve seen is that the cost to fix a design flaw is 200 times higher in UAT (User acceptance testing) than during the initial design phase.
Solution:Enable rapid sharing of team knowledge. One way to keep people focused on deliverables rather than meetings is to use a team collaborative web-based portal. It should allow easy access to design documents, prototypes and models and allow teams to easily review deliverables and post current issues. Project status, due dates, etc should be easily available and not hidden in the dark corner of a manager’s local drive in an inaccessible MS project file doled out during the weekly ‘team status’ inquisition. If you are using these collaborative tools effectively, there will be less team ‘meetings’ and more actual work getting completed.
Create the wrong deliverables. Most people are visual learners. Creating 400 pages of text is a sure way to ensure no-one truly understands what is needed and what will be built. Taking the “sign here, here and here…” approach with numerous user signoffs is not the answer. Not that we don’t like signoffs, they are a necessary part of every development process. Unfortunately this can become the ‘Prime directive’ rather than ensuring the users really understand what they are getting.
Solution:Create useful deliverables. Use a visual model driven approach. Start off by building 3 key visual models; The presentation model which identifies key objects, interactions, the ‘look and feel’ and various major assumptions about how the application will be delivered to the user.
The navigation model visually displays how users will navigate key tasks as defined by the primary use cases. Finally, key screen layouts will storyboard the interaction and provide the visual anchors for users to actually experience how those key tasks will be performed. Ideally these models will easily transform into a working prototype which brings all the design and requirement sessions to life in a set of real world congruent models. Once an agreement has been made at this level, finalize the use cases and develop the detailed specifications as supported by the visual models.
Use the wrong tools. Tool vendors will always be standing by to sell you another tool to fix the problems with your project. Tools can help you succeed as long as they provide real value and the people using them are properly trained in their usage. Just like process, tools dont create great software, people do. Trouble begins when tools are forced onto teams who have neither the time nor the management support to properly use them. Over the years we have seen millions of dollars wasted on development and testing tools that barely made it beyond their initial Installshield glimpse of life. Worse yet, we are still seeing technology decisions that are not appropriate to solve the true business problems facing the project. For instance, if your business problem is to provide real-time collaboration and instant response time for loosely connected clients, it may be time to revisit that corporate mandate stating that all new applications be developed using HTML.
Solution:Business drives technology choices. Technology decisions should be driven by a key understanding of the business issues you are trying to solve and how user performance can be optimized. While web technology like HTML is appropriate for a wide range of needs, enterprise internet applications may require a richer set of interactions simply not attainable with HTML. As you develop expertise in a range of technologies, you will be able to design and build reusable visual components on top of existing frameworks like .Net, J2EE or Struts and apply them where needed based on the business problems uncovered during design.
Have Bad timing Doing the right task at the wrong time can be a recipe for disaster. When to do a usability test, when to begin coding, etc. is often determined by past projects regardless if they were successful. It seems many project plans were initiated as a result of ‘Save As…’ from the file menu rather than careful consideration of what worked well on past projects.
Solution:Improve your timing Rearrange your key project milestones and implement an iterative measurable process. Don’t start coding before you understand what you’re trying to solve. Don’t put usability testing in with QA testing at the end of the project as this will just annoy the developers when they are totally focused on getting the product across the finish line. Allow user studies, iterative design and whiteboarding to occur in earnest during the requirements gathering phases and embrace user feedback as the visual models evolve and are presented. Continue gathering user feedback and get agreement among all parties (IT, stakeholders and business units) before moving to the next level of iteration in your design.
Summing it up.
Many of the things mentioned here are things you know how to do. But do you consistently ‘Do what you know’? The numbers speak for themselves. Despite great advances in technology, basic principles still apply: Understanding users, implementing a self-correcting iterative process and being smart in how we create deliverables that can be understood by all team members will go a long way toward improving the project success numbers over the next ten years.
Our focus is helping teams succeed in creating great software. We have training, UX Design standards and a proven process all based on real-world experience.