Things are moving too fast. To stay competitive we need to think differently and do our jobs differently.
This is the definition of Agile that I like best. I spend quite a bit of time on this slide emphasizing these points: Iterative and incremental – when we build software, we don’t have a long, detailed plan in front of us. We build it piece-by-piece, breaking down the development cycles into small chunks of time called iterations Highly collaborative – This means that our programmers sit in the same room, the customer (or stakeholder) works side-by-side with the developers, answering questions, providing comments and trying the code as it’s developed Just enough ceremony – in effect this means, we’re going to produce just the artifacts we need to move forward within the short iteration, and nothing more. This flies in the face of IPD that requires large amounts of information/documentation/plans to move from one phase to the next High Quality – Make no mistake, this is not a “hacking” method. This is about producing VERY high quality software – as part of the methodology code should be tested continuously Changing needs – Requirements change, it’s a fact of life, so we deal with it and move forward. There is no major ceremony (Change Request or approval process)
There are many reasons to too for alternatives to our heavy, plan-driven methods of development
XP isn’t rocket science. It takes 12 well known practices and implements them. If you can imagine that there is a degree to which you would implement these, and picture that the degree to which you implement them are on knobs or dials, XP’s approach is to turn the knobs ALL THE WAY up (take them to their extreme). For example, it’s always helpful to have a customer talk to the development team about how certain requirements are to be executed, so obviously frequent emails/conference calls, etc make sense. XP takes this communication to an extreme and suggests that the customer sit WITH the developers (in the same room) and become an active member of the team We’ll discuss these practices in a little more detail…
Just some important terms as we go through this presentation
The agile process starts with some set of requirements (or stories). The development team sets its velocity (or an estimate of how much work they believe they can get done in this iteration). The customer chooses the most important stories to have implemented (understanding open issues/bug from previous iterations) that do not exceed the development team’s stated velocity. Work progresses through the iteration with the customer staying in constant contact with the development team to ensure what gets delivered is what the customer expected. At the end of the iteration, the next release of the project is delivered which will include new features/functions and/or bug fixes. At the end of the iteration (or perhaps several iterations) the team (customer included) get together to look back at how they have been operating and make changes (hopefully for the better) to increase their efficiency.
Agile Software Methods (fact or fiction) Matt Ganis, IBM/Pace University [email_address] http://webpage.pace.edu/mganis presented at TCF 2010 (http://www.tcf-nj.org/) presentation available at: http://www.slideshare.net/ganis/agile-methods-fact-or-fiction (Template courtesy of: www.presentationmagazine.com )
“ Internet Time” “ The Conventional wisdom about competition in the age of the Internet is that the business world has become incredibly fast and unpredictable, and we need to throw out the old rules of the game….. For companies competing in the new information economy, the Internet is forcing managers and employees to experiment, invent, plan, and change their ideas constantly while they try to build complex new products and technologies ” Competing on Internet Time: Lessons from Netscape and it’s battle with Microsoft - Michael Cusumano and David Yoffie
Definition of Agile 1 Agile is an iterative and incremental (evolutionary) approach to software development which is performed in a highly collaborative manner with " just enough" ceremony that produces high quality software which meets the changing needs of its stakeholders. 1 http://www.agilemodeling.com/essays/agileSoftwareDevelopment.htm
XP is extreme in the sense that it takes 12 well-known software development "best practices" to an extreme
Key Agile Terms The stakeholder that is responsible (i.e., has money) and “owns” the requirement Customer Software developed during one unit of time is referred to as an iteration, which may last from one to four weeks. Each iteration is an entire software project: including planning, requirements analysis, design, coding, testing, and documentation. Stories are implemented within iterations Iteration Velocity is a method for measuring the rate at which teams consistently deliver business value in a software system (at what rate can they deliver stories) Velocity A project conducted under an Agile Method is broken up into a set of very small deliverables called stories. Stories Definition Term
Iterative Development Flow Stories Velocity Unfinished Work New Function Bug Fixes New Velocity Refactoring Retrospective Iteration Planning Development Latest Version Release Plan Bugs Customer Interaction Iteration Plan Time (two week Iterations)
“ Satisfy the customer through early and continuous delivery of valuable software “
If you let customers ask for only their highest priority features, deliver them quickly, then ask for the next highest priority, you are more likely to get short lists of what is important. Moreover, you can respond to their changing circumstances.
Happy Customers (Taken from a 2009 Dr. Dobbs Survey on the State of Agile Development)
Less Waste ! 64% of the features in a product aren’t really useful!!! Customers often don't know exactly what they want at the beginning of a project.
The Standish Group having studied over 40,000 projects in 10 years concludes:
‘ The primary reason is the projects have gotten a lot smaller. Doing projects with iterative processing as opposed to the waterfall method, which called for all project requirements to be defined up front, is a major step forward.’
Best in class performers are not only 1.4x more likely to have pursued Agile Development methods, they are hitting high marks on metrics that drive profitability, including revenue, product cost, quality, and launch date targets— 80% or more of the time.
As a result of streamlining product development with Agile methods and best practices, these companies enjoy 53% more productive product development time per person than their average competitors, and bring products to market 25% faster on average.
Cash flow starts earlier, profits are higher Opportunity costs are high in s ingle big-bang releases. Agile projects are earlier to market with faster product evolution.
Quality Surveys looking at the quality of code produced by teams that practice Agile methods shows a rate of quality (based on the number of reported defects in the deployed code)
Were Waterfall where last few months of projects were “fire-drills” which led to errors or omissions compounding “down the line” and “nobody was talking to each other”.
A significant majority of those polled within the business area stated they saw a greater than 10% improvement in productivity, product quality, our ability to produce a product quickly with customer satisfaction
There was no ‘recipe' card with the answer for them. Experimentation with various Agile methods and practices was key and they settled on a Scrum framework with Agile best practices pulled from XP, Crystal, Lean, and others for the initial pilot
We were scrambling so hard to get all the committed features in by the feature complete date - working nights and weekends up to the deadline - that the program was always very buggy at that point.
The quality of the program was higher throughout the development cycle, and they reported to have fewer total bugs.
They were able to incorporate more feedback from outside testers because we didn't switch into "frantic bug fix mode" so early.
Moved from a traditional waterfall method to an incremental development model.
Resulting in more weekends off, and a third fewer bugs to fix.
Source: “Adobe edits the Development style”, - The Register, 2007
Sabre Holdings Doing more in less time With a higher level of quality
Summary Agile is a user-centric development process that focuses on delivering systems that meet dynamic business requirements Agile is designed to not only cope but welcome changing requirements . It is efficient because it builds quality into it’s processes. The customer gives up some certainty about scope and cost. In return, they get quality, value for money and visible progress . All parties benefit from the open collaboration and transparency fostered by Agile processes