How Agile methods resolve chaos and unpredictability in software projects



Similar documents
What s Lean Agile & How does it allow teams to progressively improve customer satisfaction & service delivery?

Business Analysts in an Agile World. Christian Antoine

Agile Project Management

Controlled Chaos : Living on the Edge

Agile Beyond The Team 1

The Scrum Guide. The Definitive Guide to Scrum: The Rules of the Game. July Developed and sustained by Ken Schwaber and Jeff Sutherland

Agile Project Management

What does it mean to be Agile. Marek Majchrzak, Andrzej Bednarz Wrocław,

Software Requirements and Specification

What is Scrum? Scrum Roles. A lean approach to software development. A simple framework. A time-tested process

Applying Lean on Agile Scrum Development Methodology

Whitepaper. Agile Methodology: An Airline Business Case YOUR SUCCESS IS OUR FOCUS. Published on: Jun-09 Author: Ramesh & Lakshmi Narasimhan

Capstone Agile Model (CAM)

CRITICAL ANALYSYS OF THE SCRUM PROJECT MANAGEMENT METHODOLOGY

Governments information technology

EMC PERSPECTIVE. Adopting an Agile Approach to OSS/BSS Development

Agile and PRINCE2 And how they integrate. enterprise.bcs.org

Agile project management is a style of project management that focuses

Agile Project Management

International Association of Scientific Innovation and Research (IASIR) (An Association Unifying the Sciences, Engineering, and Applied Research)

THE BUSINESS VALUE OF AGILE DEVELOPMENT

Software Development with Agile Methods

Introduction to Agile and Scrum

Lean vs. Agile similarities and differences Created by Stephen Barkar -

This handbook is meant to be a quick-starter guide to Agile Project Management. It is meant for the following people:

AGILE METHODOLOGY IN SOFTWARE DEVELOPMENT

A Capability Maturity Model (CMM)

Software Development Life Cycle (SDLC)

The Truth About Agile Software Development with Scrum, The Facts You Should Know

An Introduction to Agile Performance Management

Neglecting Agile Principles and Practices: A Case Study

Getting Agile with Scrum. Mike Cohn - background

Comparative Study of Agile Methods and Their Comparison with Heavyweight Methods in Indian Organizations

PROCESS OF MOVING FROM WATERFALL TO AGILE PROJECT MANAGEMENT MODEL

Scrum methodology report

Agile Software Development

Gothenburg 2015 Jan Marek com CA Technologies Introducing Agile development methodologies to Session S601 mainframe development teams

Chapter 6. Iteration 0: Preparing for the First Iteration

Getting Agile with Scrum

Introduction to Agile Scrum

Scrum for Managers, Zurich March 2010

SCRUM BODY OF KNOWLEDGE (SBOK Guide)

Why Agile Works: Economics, Psychology, and #PrDC16

Selling Agile at Your Company

"Bezpieczny Projekt"

Scrum: A disciplined approach to product quality and project success.

SCRUM An Agile Model for Software Project Management

Methodology: Agile development of safety critical systems Annex D1.1.d to deliverable D1.1

SCRUM: An extension pattern language for hyperproductive software development

Controlled-Chaos Software Development

CSSE 372 Software Project Management: More Agile Project Management

The Basics of Scrum An introduction to the framework

Agile Software Development and Service Science

Water-Scrum-Fall Agile Reality for Large Organisations. By Manav Mehan Principal Agile consultant

Sometimes: 16 % Often: 13 % Always: 7 %

SCM & Agile Business Intelligence. Anja Cielen

SCRUM. A Tool from the Software World Can Improve Analytical Project Outcomes. By KyMBER WALTMUNSON

Agile So)ware Development

Scrum and Testing The end of the test role Bryan Bakker 20 maart 2012

Understanding agile project management methods using Scrum H. Frank Cervone Purdue University Calumet, Hammond, Indiana, USA

A Viable Systems Engineering Approach. Presented by: Dick Carlson

Scrum and CMMI Level 5: The Magic Potion for Code Warriors

Job Satisfaction and Motivation in a Large Agile Team

Answered: PMs Most Common Agile Questions

AGILE DEVELOPMENT: LESSONS LEARNED FROM THE FIRST SCRUM

Agile EAI November 2002 Martin Fowler Gregor Hohpe

Becoming Agile: a getting started guide for Agile project management in Marketing, Customer Service, HR and other business teams.

Scrum. The Essence. Tobias Mayer, Sonntag, 19. Februar 12

Scrum. SE Presentation. Anurag Dodeja Spring 2010

Creating a High Maturity Agile Implementation

The traditional project management uses conventional methods in software project management process.

Traditional SDLC Vs Scrum Methodology A Comparative Study

Mike Cohn - background

Agile Engineering Introduction of a new Management Concept

LEAN AGILE POCKET GUIDE

Extreme programming (XP) is an engineering methodology consisting of practices that ensure top-quality, focused code. XP begins with four values:

Agile Can Scale: Inventing and Reinventing SCRUM in Five Companies

Agile Metrics. It s Not All That Complicated

Agile ROI: The Business Case for Agility. John Rudd, President and CFO

10/4/2013. Sharif University of Technology. Session # 3. Contents. Systems Analysis and Design

5 Levels of Agile Planning: From Enterprise Product Vision to Team Stand-up

3 Steps to an Effective Retrospective December 2012

When User Experience Met Agile: A Case Study

Comparison between Agile and Traditional software development methodologies

An Agile Project Management Model

CS435: Introduction to Software Engineering! " Software Engineering: A Practitioner s Approach, 7/e " by Roger S. Pressman

Agile Projects 7. Agile Project Management 21

An Introduction to Scrum

Agile Software Development with Scrum. Jeff Sutherland Gabrielle Benefield

Transcription:

WHITE PAPER How Agile methods resolve chaos and unpredictability in software projects Author: Jack Milunsky Scrum Master and COO Brighstpark3 January 2009 INTRODUCTION This paper attempts to show why an Agile methodology makes sense for managing software projects, as opposed to traditional waterfall methodologies, commonly used to date. The paper will make the case that software projects are inherently chaotic and unpredictable, and as a result, cannot be managed by processes that are best suited to well-defined problem domains. The paper will also make the distinction between the status quo in waterfall development and hyper-productivity, where organizations, such as Yahoo, have experienced ROI's in the order of 666% on one project and 250% overall, since adapting Agile Software Development methodologies. At the heart of any decision to adopt Agile Software Development, is facing up to the harsh realities of your own current software development experiences. If you are satisfied with how your projects are being managed, and your ability to achieve results, perhaps you should not be thinking about Agile Software Development in the first place. However, the chances are that you are one of the many that have encountered some degree of bad experience with either late delivery, buggy software or, dare I say, software that is either incomplete or does not meet end user or customer needs. Most of us, unfortunately, have experienced all of the above and more - not to mention very stressful working environments that characterize or underscore these experiences. THE AGILE METHODOLOGY Agile Software Development methodologies evolved out of a need to address the dire problems facing the software industry. The most notable "state-of-the-union" report on the software industry was published in the now famous "Chaos" report by the Standish Group in 1995. Hard facts from the report include: Average project success rates 16.2% - this means that a staggering 83.8% of projects were either challenged or impaired An average of 52.7% of projects cost 189% of original budget 1

Only 61% of originally specified features and functions were available in failed or impaired projects Over 1/3 of challenged or impaired software projects experienced time overruns of 200 to 300% In 1995, more than 250 billion dollars were spent on software projects in USA. These failures represent a significant impact on product expenditure, which in turn affects the economy as a whole. This picture is not attractive and of course many projects still fail today. I am aware from my own personal experiences and talking with many of my colleagues that most projects do not proceed as expected. A close working colleague in the medical software business spends huge amounts of time on up-front planning and preparation of very detailed project Grants. A tremendous amount of valuable time is invested, and very rarely do they ever reach their milestones as planned. This begs the question as to what function is being fulfilled by all this up-front planning. Fortunately, today there are real solutions to these problems, as those provided by Agile software development methodologies. Most of the aspects or characteristics of Agile Project Management, including Scrum, have their roots in either the suggestions found in the Standish report or from further studies performed by field experts in the field (Hirotaka Takeuchi and Ikujiro Nonaka, Jeff Sutherland, Ken Schwaber et al). Clues on how to fix the problems were provided in the Standish report and are listed below. In the top 5 were: 1. User involvement 2. Executive management support 3. Clear requirements 4. Proper planning 5. Realistic expectations 6. Smaller project milestones All of these aspects are addressed by Agile Project Management processes like Scrum, the details of which will be discussed in a paper that will follow. It is important to understand a second fact about non-agile projects, the origins of which are best understood in industrial process control theory, and provide scientific research in favor of Agile Software Development methodologies. There are two types of process control systems: defined processes and empirical processes. Defined processes are those that, given a certain set of inputs, and by providing a certain set of controls, can always attain a specified outcome and be repeated. These types of systems are referred to as "white-box" systems, as the processes are well defined and understood. Empirical processes, on the other hand, are referred to as "black-box" systems. These processes are generally complex in nature, not well understood and have no defined set of controls that can be applied to repeatedly generate the desired outcome. Such processes have unpredictable outcomes, and can only achieve desired outcomes empirically. In other words, one has to apply a certain degree of control, measure the output, adjust the controls 2

and repeatedly do this until the desired outcome is finally reached - like a missile homing in on a target. Software is considered to be such a complex system, as there is no way in which one set of controls can be put in place in order to provide a predictable or repeatable desired outcome. Some of the reasons for this lack of predictability are in large part due to the high degree of uncertainty surrounding the technology, people interaction and changing requirements. From my own experiences as a software engineer, even with highly detailed upfront user interface designs, specifications and plans, the software produced turned out different from its original intent. I attribute this to the fact that once end users see the software and use it, one realizes there are often different and improved ways of doing things. Software development is a creative process. Merely changing one member on the team or sending a developer on a technology course can yield a different outcome. So, applying defined process methodologies to intrinsically unpredictable and unrepeatable systems is not going to work. Waterfall methodologies, which most software teams are currently using, are a form of defined process, as all of the unknowns are expected to be solved up-front. Waterfall methodologies pre-suppose that software development is a defined process, i.e. well understood. Yet, this is furthest from the truth. Consequently, any "large" up-front effort to fully understand the problem domain is considered wasteful. If one borrows from Lean thinking, excessive upfront planning can be thought of as inventory on the shop floor, which is a liability rather than an asset. Software development, on the other hand, depends heavily on ingenuity, invention and creativity, and as a result leads to a climate of much uncertainty and chaos. Uncertainty is not something that you can just "plan away" (Mike Cohn) with a ton of up-front research and design. One has to accept that there is uncertainty and that one has to rather provide tighter controls (inspect and adapt points) and more fluid processes to deal with these shortcomings. Successful teams, as pointed out by Hirotaka Takeuchi and Ikujiro Nonaka (New Product Development Game 1995), all exhibit a high degree of instability. This allows development teams to operate on the bleeding edge. Teams that are faced with tough competitive situations have to be revolutionary rather than evolutionary. Thus, the business of "new" product development is about attempting to produce the best and to be the best, i.e. responding to competitive situations, leapfrogging the competition, breakthroughs in technology etc. and most importantly, reaching a state of Hyper-productivity (Jeff Sutherland). This requires the teams to be on the high end of the risk curve. This baked-in instability can be somewhat chaotic and Scrum/Agile provides mechanisms to better cope with this chaos by embracing it. Jeff Sutherland provides insight into what triggers this hyper-productive state - a theory called Punctuated Equilibrium. Punctuated Equilibrium is a theory of evolutionary biology which suggests that evolution tends to happen in fits and starts, sometimes moving very fast, other times moving very slowly or not at all. If one studies fossils of organisms found in successive geological layers, one will see relatively long intervals in which nothing changed ("equilibrium"), "punctuated" by short, revolutionary transitions, in which species became extinct and were replaced by wholly new forms. In the same way, revolutionary transitions in software development lead to big breakthroughs in either technology or efficiencies, or both. This is something that should be encouraged. As a result, more chaotic projects that are managed well will transcend barriers and bring about orders of magnitude in progress and technological advancement. The 3

Scrum process underscores these situations of both rapid change and steady state. The Backlog representing the rapidly changing requirements (environment), and the Sprint representing the period of stability, where the team is left to its own devices to get real work done. Jeff Sutherland also reflects on how software development can be compared to Complex Adaptive Systems theory in which the world is viewed as a non-linear place. This theory is based on relationships, emergence, patterns and iterations. Rather than being planned or controlled, the agents in a system interact in apparently random ways and from these random interactions patterns emerge that impact the system in positive ways. All of these concepts are reflected in Scrum, which relies on a high degree of coupling between individuals through small teams, broadband communication and collaboration, daily Scrums and reflectives as a way to tolerate chaos. Out of this chaos, new architectures, features and functionality evolve over time. THE EMERGENCE OF SCRUM Scrum Project Management emerged as a process that best reflects what can be found in nature and provides the rigor, controls and measurement to manage unpredictable software projects and environments, in a simple, meaningful and repeatable way. In order to understand how Scrum Project Management operates, it is important to first understand what Scrum is. Scrum is a rather simple and loosely defined framework. It is not a methodology as Ken Schwaber points out. Methodologies typically spell out exactly how to do things. On the other hand, Scrum provides a learning and feedback system for teams to figure out for themselves how best to manage and deal with problems that arise during the course of the project. As mentioned earlier in this paper, one needs rigor and control in order to manage complex systems development. Scrum provides this rigor and control through the implementation of best practices as well as very specific Inspect and Adapt points at various stages in the Scrum life cycle, which is further described below. Scrums best practices are all centered around sound engineering discipline and technical excellence as a means to cope with changing environments and still provide sustainable progress. Best practices such as good design, continuous refactoring to keep interfaces and code clean, automated and continuous integration of code, automated unit tests and integration tests are some of the rigid development practices that are implemented by most Agile Software Development teams. It takes hard work to allow for sustained throughput in such inherently unstable environments. And it is this hard work that separates the best teams from the mediocre ones! Scrum provides specific touch points for learning. Ken Schwaber calls these "Inspect and Adapt points". Initially, the Sprint Planning Meeting takes place in which the team works with the Product Owner to figure out what they are going to build and then crossfunctionally determine how they are going to go about doing this. Each day, during the Daily Scrum Meeting, the teams have the opportunity to evaluate how they are doing in relation to their initial plan, and figure out how to adapt based-on knowledge acquired from the previous day. At the end of the Sprint, the Sprint Review Meeting provides the Team with a chance to show the Product Owner what has been developed. This provides further opportunity to learn how the Team has succeeded relative to the goals set at the beginning of the Sprint. At this point, the Product Owner can accept or reject the completed work. Any changes required are re-prioritized and fed back into the system via the Backlog. 4

After the Sprint review meeting, the team has accumulated all the information necessary to evaluate performance and further enhance productivity. All these Inspect and Adapt points are designed to help teams learn, adapt, improve and deal head-on with information that emerges at each of these points, whether the information is good or bad. Scrum is therefore a true test of a team s character. In addition to this, Scrum also provides a mechanism to deal with all this change. The Sprint is really the container in which all the chaos behind the backlog is tamed. The Sprint provides "quiet" time for developers to work uninterruptedly on goals set at the beginning of the Sprint. This is the time during which the Team self organizes around a common set of goals and hunkers down on solving tough development problems. CONCLUSION So, if you are working on simple projects, projects that are well defined and their scope is understood, then waterfall will suffice. Alternatively, Agile is the way to go, and I recommend Scrum as the best Agile implementation available, for new product development projects. Scrum is practical and simple, and functions well with other processes like Test Driven Development and XP, and most importantly, it provides visibility of a team s progress throughout the development process. ABOUT THE AUTHOR Jack Milunsky, COO Brightspark3 As Chief Operating Officer and Scrum Master Jack Milunksy heads software implementation at Brightspark3, he leads the teams efforts in building and implementing innovative products through Agile Project Management and Scrum tactics. Jack combines 18 years of experience managing software development teams both large and small. He is an early adopter of Agile and has a great passion for early stage startups. Prior to joining Brightspark 3.0, Jack was VP of R&D at Tira Wireless where he was responsible for driving technological innovation in the company. He has held many senior positions in Hi Tech companies across diverse industries. He was the Director of R&D for Delano Technology Corp and he also served as the Director of R&D for Symantec/Delrina Corp. Jack holds a BSC Elec (Eng) degree from the University of the Witwatersrand in South Africa and completed Business Administration from the Stanford University Business School. For more information, visit blog.agilebuddy.com or email jack@brightspark3.com. 5