200 likes | 327 Views
Classic Mistakes. Instructor: Mike O’Dell. This presentations was derived from the textbook used for this class, McConnell, Steve, Rapid Development , Chapter 3. Why Projects Fail - Overview. Five main reasons: Failing to communicate Failing to create a realistic plan Lack of buy-in
E N D
Classic Mistakes Instructor: Mike O’Dell This presentations was derived from the textbook used for this class, McConnell, Steve, Rapid Development, Chapter 3.
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.
Categories of Classic Mistakes • People-related • Process-related • Product-related • Technology-related
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”
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?
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
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
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
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
Classic Mistakes Enumerated 13. Adding people to a late project: • Productivity killer • Throwing people at a problem seldom helps
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
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
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 3-10 days later • QA me now, or pay me later!
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!
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!
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 stuffto do your job • Avoid dependence on the hottest new tools • Avoid implementing all the cool new features
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!
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
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!
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