CSE Senior Design I Classic Mistakes Instructor: Mike O’Dell This presentations was derived from the textbook used for this class, McConnell, Steve, Rapid Development, Chapter 3. 5 Why Projects Fail - Overview Five main reasons: Failing to communicate Failing to create a realistic plan Lack of buy-in Allowing scope/feature creep Throwing resources at a problem N.B. – Software development is COMPLEX and HARD, so people make mistakes. 2 5 Categories of Classic Mistakes People-related Process-related Product-related Technology-related 3 5 Effect of Classic Mistakes on Development Schedules Doing a few things right DOES NOT guarantee success! Use of any specific best practice is necessary, but not sufficient, to achieve rapid development speeds Missing most of the potholes in the road, but falling into one big one, will ruin your whole day (or project) “One bad apple (mistake) can spoil the bunch” 4 5 Case Study in Classic Mistakes What Mistakes can you identify? First Mistake? Impact? Second Mistake? Impact? Other Mistakes? Impact? When and why did things finally turn around? What should have been done, and by whom? 5 5 Classic Mistakes Enumerated 1. Undermined motivation: The Big One - Probably the largest single factor in poor productivity Motivation must come from within 2. Weak personnel: The right people in the right roles 3. Uncontrolled problem employees: Problem people (or just one person) can kill a team and doom a project The team must take action… early Consider the Welch Grid 6 5 Classic Mistakes Enumerated 4. Heroics: Heroics seldom work to your advantage Honesty is better than an empty “can-do” 5. Wishful thinking: Not the same as optimism Don’t plan on good luck! (Plan on bad luck??) May be the root cause of many other mistakes 6. Noisy, crowded offices: Work environment is important to productivity Noisy, crowded conditions lengthen schedules 7 5 Classic Mistakes Enumerated 7. Friction between developers and customers/sponsors: Cooperation is the key Encourage participation in the process 8. Unrealistic expectations: Avoid seat-of-the-pants commitments Realistic expectations is a TOP 5 issue 9. Lack of effective project sponsorship: Management must buy-in and provide support Potential morale killer 8 5 Classic Mistakes Enumerated 10. Lack of stakeholder buy-in: Team members, end-users, customers, management, etc. Buy-in engenders cooperation at all levels 11. Lack of user input: You can’t build what you don’t understand Early input is critical to avoid feature creep 12. Politics placed over substance: Being well regarded by management will not make your project successful 9 5 Classic Mistakes Enumerated 13. Adding people to a late project: Productivity killer Throwing people at a problem seldom helps 10 5 Classic Mistakes Enumerated 14. Overly optimistic schedules: Wishful thinking/planning on good luck. (Feasibility??) 15. Insufficient risk management: Identify unique risks and develop a plan to eliminate them Consider a “spiral” (iterative) approach for larger risks 16. Contractor failure: Relationship/cooperation/clear Statement of Work 11 5 Classic Mistakes Enumerated 17. Insufficient planning: If you can’t plan it… you can’t do it! 18. Abandonment of planning under pressure: Path to failure Code-and-fix mentality takes over… and will fail 19. Wasted time during fuzzy front end: That would be now! Almost always cheaper and faster to spend time upfront working/refining the plan 12 5 Classic Mistakes Enumerated 20. Shortchanged upstream activities: See above… do the work up front! Avoid the “jump to coding” mentality 21. Inadequate design: See above… do the required work up front! 22. Shortchanged quality assurance: Test planning is a critical part of every plan Shortcutting 1 day early on will likely cost you 310 days later QA me now, or pay me later! 13 5 Classic Mistakes Enumerated 23. Insufficient (project) management controls: Buy-in implies participation & cooperation 24. Premature or overly frequent convergence: It’s not done until it’s done! 25. Omitting necessary tasks from estimates: Can add 20-30% to your schedule Don’t sweat the small stuff! 14 5 Classic Mistakes Enumerated 26. Planning to catch up later: Schedule adjustments WILL be necessary A month lost early on probably cannot be made up later 27. Code-like-hell programming: The fast, loose, “entrepreneurial” approach This is simply… Code-and-Fix. Don’t! 15 5 Classic Mistakes Enumerated 28. Requirements gold-plating: Avoid complex, difficult to implement features Often, they add disproportionately to schedule 29. Feature creep: The average project experiences 25% change Another killer mistake! 30. Developer gold-plating: Use proven stuff to do your job Avoid dependence on the hottest new tools Avoid implementing all the cool new features 16 5 Classic Mistakes Enumerated 31. Push-me, pull-me negotiation: Schedule slip = feature addition 32. Research-oriented development: Software research schedules are theoretical, at best Try not to push the envelop unless you allow for frequent schedule revisions If you push the state of the art… it will push back! 17 5 Classic Mistakes Enumerated 33. Silver-bullet syndrome: There is no magic in product development Don’t plan on some new whiz-bang thing to save your bacon (i.e., your schedule) 34. Overestimated savings from new tools or methods: Silver bullets probably won’t improve your schedule… don’t overestimate their value 18 5 Classic Mistakes Enumerated 35. Switching tools in the middle of the project: Version 3.1…version 3.2… version 4.0! Learning curve, rework inevitable 36. Lack of automated source control: Stuff happens… enough said! 19 5 Exercise: Develop a Project “Disaster Avoidance Plan” Get together as a team and make a list of “worst practices” that you should avoid in your project. Include specific mistakes that you think could/will be made by your team Post this list on the wall in your lab space or wherever it will be visible and prominent on a daily basis Refer to it frequently and talk about how you will avoid these mistakes 21