Food for Thought: Is Your Software Development Process Predictable? An e-newsletter published by Software Quality Consulting, Inc. March 2005, Vol. 2 No. 3 To view a web version of this newsletter, click on the following link: http://www.swqual.com/newsletter/vol2/no3/vol2no3.html. -------------------------------------------------------------------------------- Welcome to Food for Thought(TM), an e-newsletter from Software Quality Consulting (http://www.swqual.com/). I've created free subscriptions for my valued business contacts. If you find this newsletter informative, I encourage you to continue reading. Feel free to pass this newsletter along to colleagues by clicking this Forward Email link. If you’ve received this newsletter from a colleague and would like to subscribe, please click this Enter New Subscription link (http://www.swqual.com/newsletter/Subscribe.htm). If you don't wish to receive this newsletter, click the SafeUnSubscribe(TM) link at the bottom of this newsletter, and you won’t be bothered again. Your continued feedback on this newsletter is most welcome. Please send your comments and suggestions to info@swqual.com. -------------------------------------------------------------------------------- ***In This Issue*** In This Months’ Topic, we look at the importance of behaving in a predictable way... Regular features to look for each month are: - Monthly Morsels: Hints, tips, techniques and reference info related to this month’s topic - Calendar: Conferences, workshops, and meetings of interest to software engineers, QA engineers and anyone interested in software development -------------------------------------------------------------------------------- ***Is your software development process predictable?*** We never have time to do it right but always seem to have time to do it over and over... For many companies, their software development process is anything but predictable. Unpredictable behavior may have been adequate in the past. Today, organizations who fail to learn how to “do it right the first time” are sooner or later going to fail. Software development in the 21st century has changed dramatically. Interest in Agile Methods [1], RUP [2] and offshore development [3] has created intense pressures to deliver higher quality software, faster and with fewer resources. - Do more with less New software products are highly complex and, as a result, more difficult to develop. Often, economic constraints limit the ability to fully staff projects. This usually means that there are fewer developers and testers. As a result, organizations need effective ways to complete increasingly complex projects. - Do it faster Product development cycles that once took months now take weeks. The result is that development and testing activities have much less time – which means there is often no time to do it over. - Do it with higher Quality Today’s customers are more demanding and more selective. Customers want software products that work reliably. Compressed schedules, understaffed projects, coupled with the need to release high quality products all result in extraordinary pressures on people to get it right the first time. GET IT RIGHT THE FIRST TIME! We need ways to cope with conflicting demands faced on most projects. Doing more with less, doing it faster and with higher Quality all mean that there often is no time to do it over. A Predictable Software Development(TM) process is one way that organizations can achieve this. The goal of Predictable Software Development(TM) is simply: Why is it so important to be predictable? On every software project, we want to know: - When will the requirements be defined? - When will coding be done? - When will testing be done? - When will the product be released? These are legitimate questions. Unfortunately, unpredictable organizations can’t provide accurate answers. Why? Well, in order to answer these questions, we need: - a clear definition of what “done” means for coding and testing - a process for writing unambiguous requirements - so developers know what to code and testers know what to test - a repeatable process for developing software - the ability to accurately plan, estimate, and schedule software development and testing activities - the ability to manage changes to requirements - commitment to follow the process agreed to for the project Predictable behavior is a characteristic that transcends methodology. Predictability is just as important for organizations using Agile Methods as for organizations using any other method. And yes, the “processes” mentioned above can be lightweight. MOTIVATION Unpredictable behavior impacts your business, your customers, and your employees: - Lack of predictability impacts your bottom line Unpredictable behavior often results in unplanned bug fix releases. Such releases divert expensive engineering resources away from activities that generate revenue (like adding new features or developing new products) to activities that don’t generate revenue (like bug fix releases). Remember - bug fix releases are not free! - Lack of predictability negatively impacts customers In unpredictable organizations, customers cannot depend on your release schedules. This makes it hard for customers to plan. Further, unpredictable organizations tend to release software with many bugs, adding to customer dissatisfaction. - Lack of predictability negatively impacts employees No one wants to be associated with projects that fail. In unpredictable organizations, failed projects are the norm. And experience has shown that there is a very strong correlation between customer satisfaction and employee satisfaction. ACHIEVING A PREDICTABLE SOFTWARE DEVELOPMENT(TM) PROCESS To become predictable, we need to learn how to balance Quality, Features, and Schedule. While tradeoffs are made all the time, we need to understand and assess the implications of these tradeoffs. We also need to learn how to balance the needs of People, Process, and Product. Tradeoffs here affect productivity, customer and employee satisfaction. Also required is the ability to manage commitments and manage risks. Managing commitments (both internal and external) is essential so that we can consistently meet or exceed these commitments. Many complex software projects are fraught with risks. While some risks may be tacitly understood, all too often, risks are not actively managed. Effective risk management skills can make the difference between success and failure. SOUND FAMILIAR? Here are some typical attributes of unpredictable organizations: - Project schedules are consistently not met - Customer perception of product quality is low - Difficult to plan for new product releases and product rollout - Difficult to allocate resources to future products - Customer satisfaction is low and probably not being measured regularly - Employee satisfaction and employee morale is low - Many unplanned bug fix releases are needed I’ve identified several root causes of unpredictable behavior. These include: - Unrealistic schedules Unrealistic schedules is a common root cause of unpredictable behavior. It results from: lack of training in estimating and scheduling, allowing other parts of organizations to set unrealistic schedules, not using information from past projects to develop more accurate estimates, etc. - Poor project management Software Project Management is a difficult and unrewarding job. Project managers frequently become scapegoats for failed projects. Good project managers are rare and worth their weight in gold. Without a doubt, one of the most frequent reasons that projects fail is due to poor project management. In many cases, the root cause of this problem is not the project manager, but rather, how Management measures the project manager's performance. If project managers are measured on their ability to get products released, they will do whatever it takes to meet their objectives including cutting features and reducing quality. - Crisis mentality For many organizations, working in “fire fighting” mode is the norm. These organizations move from one crisis to the next. How anything gets done is a real mystery. What we should have learned by now is that working from crisis to crisis is clearly not the most effective way to use your expensive resources. - Management rewards wrong behaviors In many organizations, Management's goals and objectives are not aligned with the individual performance goals and objectives of the staff. Example: In organizations where Management complains about poor product quality, you would likely not find mention of the word "quality" in the performance plans for the staff. Rather than encouraging the desired behavior, Management knowingly or unknowingly does the opposite. Example: Management inadvertently encourages fire-fighting behavior by rewarding “heroes” who miraculously resolve the crisis-du-jour. In fact, in many instances, these so-called “heroes” often create crises in the first place. - Lack of measurement Many organizations are unable to measure the amount of effort required to develop and test a software release. Some organizations are unable to answer basic questions like: how big is the product (using whatever size metric you want), how long did it take to develop and release it, and how many bugs were found? HOW DOES A PREDICTABLE ORGANIZATION BEHAVE? Here are some attributes of predictable organizations: - Mastered skills for estimating tasks and building realistic schedules - Use project retrospectives to refine estimating and scheduling skills - Rarely in fire fighting mode - Very few unplanned bug fix releases - Follow a documented Software Development Process - Under-commit and over-deliver - Actively manage risks and commitments - Measure Quality, Customer and Employee Satisfaction regularly MANAGEMENT CAN CHANGE BEHAVIOR Management controls the resources, determines how resources are allocated to projects, and most importantly, determines how people are evaluated and measured. What Management often fails to recognize however, is that: - to change the culture, you need to change the way people behave - the way people behave is directly related to how people are measured This is particularly true for software engineering organizations where technical challenge and peer recognition are important. The notion that Management can change the culture of an organization by changing the way people are measured is not new. It’s been known from many years [5], [6]. Unfortunately, in many organizations, Management hasn't recognized taken advantage of this fact. Here are some specific actions Management can take to help create an organization that behaves in a more predictable manner: - Measure individual performance based on objectives directly related to overall corporate goals - Learn to develop accurate, realistic schedules and then meet them! - Follow a documented software development process - Hold people accountable - Proactively manage risk - Manage internal and external commitments - Measure what happens Management must recognize that they have the ability to change the behavior of their organizations. By learning how to do this, Management can significantly improve their organization's predictability. SUMMARY As observed by Humphrey: “When software projects fail, it’s usually because a manager didn’t insist that the work be done the right way.” [4] Take-away messages: - Predictable organizations have a significant competitive advantage over their unpredictable competitors. - Management must provide leadership to help organizations behave in a more predictable manner. - Management must understand that they can change how people behave by changing the way people are measured. If you are a manager, use this information to help your organization become more predictable. If you not a manager, I’d suggest forwarding this to managers in your organization. Forward Email. Till next time... -------------------------------------------------------------------------------- ***Monthly Morsels*** Every month in this space you’ll find additional information related to this month’s topic. - Resources: Interested in learning more about Predictable Software Development(TM)? - View information about Predictable Software Development(TM) Workshops (http://www.swqual.com/training/predictable.html) - Register for Predictable Software Development(TM) workshops sponsored by the IEEE Boston Section (http://www.ieeeboston.org/edu05s/predictable_sw.htm) - References: [1] Fowler, M., “The New Methodology”, web page (http://www.martinfowler.com/articles/newMethodology.html) [2] Krutchen, P., “The Rational Unified Process – An Introduction”, Addison-Wesley, 2004. [3] Kolawa, A., “Much Ado about Offshoring”, Better Software, Nov-Dec 2004. [4] Humphrey, W. S., Winning with Software: An Executive Strategy, Addison-Wesley, 2002. [5] Weinberg, G. M., The Psychology of Computer Programming: Silver Anniversary Edition, Dorset House, 1998. [6] Lister, T. and DeMarco, T., Peopleware: Productive Projects and Teams, 2nd edition, Dorset House, 1999. -------------------------------------------------------------------------------- ***Calendar*** Every month, you’ll find news here about local and national events that are of interest to the software community ... - Boston Quality Conference – BOSCON 2005 (http://www.asqboston.org/BOSCON/boscon.htm) - IEEE Boston Section Workshops (http://www.ieeeboston.org/) - Boston SPIN (http://www.boston-spin.org/) - International Conference on Software Quality (14 ICSQ) (http://www.asq.org/softwareforum/conferences/14ICSQ/index.html) - Software Quality Calendar There are many organizations that sponsor monthly meetings, workshops, and conferences of interest to software professionals. Find out what’s happening... (http://www.swqual.com/links/upcoming.html) - Workshops Offered by Software Quality Consulting Software Quality Consulting offers workshops in many topics related to software process improvement. Get more info... (http://www.swqual.com/seminars/courses.html) -------------------------------------------------------------------------------- ***About SQC*** Software Quality Consulting provides consulting, training, and auditing services tailored to meet the specific needs of clients. We help clients fine-tune their software development processes and improve the quality of their software products. The overall goal is to help clients achieve Predictable Software Development(TM) – so that organizations can consistently deliver quality software with promised features in the promised timeframe. To learn more about how we can help your organization, visit our web site (http://www.swqual.com/) or send us an email (info@swqual.com). -------------------------------------------------------------------------------- I hope this newsletter has been informative and helpful. Your comments and feedback are most welcome. Send me your feedback... (info@swqual.com) Thanks, Steve Rakitin info@swqual.com Food for Thought and Predictable Software Development are trademarks of Software Quality Consulting, Inc. Copyright © 2005. Software Quality Consulting, Inc. All rights reserved. Graphic design by Sage Studio