My presentation to Product Owners at McKinsey on the evolution and continuing journey of agile software development
Transcript of Journey of Agile
Journey of Agile Tathagat Varma VP, Strategic Process
Innovations & HR, [24]7 Innovation Labs
The GenesiS...... New products New Services New Markets New
Features Improvements Enhancements Extensions Friction New Tech
Competitor Opportunity Initiative
From Idea to CaSH
Minimize Investment Minimize Time to Market Maximize ReturnS
Business success factors
Waterfall Model Wrongly inspired by assembly-line manufacturing
Economics supported measure twice, cut once leading to up-front
planning and BDUF Single-pass, sequential process with hand- offs
and feedback loops between adjoining phases Transition to next
phase only upon completion of current phase Focus on
Documentation
Waterfall Software Development Picture from
h-p://damonpoole.blogspot.in/2009/07/tradi=onal-development-game-of.html
Limitations and Assumptions 1. Wrong analogy: Software development
Production 2. Customers know EVERYTHING upfront and that
requirement wont change 3. Legacy: implicitly assumes CPU time is
costly, so focuses on doing everything upfront to minimize machine
time for trial and error 4. Wicked Problem: Designers and
developers know how exactly how to build 5. Very long feedback
cycles not suitable for todays pace of innovation
Preamble to Agile Movement Software Crisis, 1965-85: The major
cause of the software crisis is that the machines have become
several orders of magnitude more powerful! To put it quite bluntly:
as long as there were no machines, programming was no problem at
all; when we had a few weak computers, programming became a mild
problem, and now we have gigantic computers, programming has become
an equally gigantic problem. Edsger Dijkstra, The Humble
Programmer
Software Crisis The causes of the software crisis were linked
to the overall complexity of hardware and the software development
process. The crisis manifested itself in several ways: Projects
running over-budget. Projects running over-time. Software was very
inefficient. Software was of low quality. Software often did not
meet requirements. Projects were unmanageable and code difficult to
maintain. Software was never delivered.
Why? Process: Long-lead development process ineffective in a
dynamic and global world Management: Command and control model
unsuitable for fostering collaboration required to solve complex
problems Technology: Advancements in computers, compilers,
debugging and testing tools greatly altered the economics of
software development Innovation: in the age of hyper-innovation,
old processes were simply ineffective
As a result, software is Late Buggy Costly
and the costs.......?
h-p://leadinganswers.typepad.com/leading_answers/es=ma=ng/
h-p://www.agileforall.com/dyk/
Software Project Failure Rates Standish Report
so, why do projects fail?
Why?
h-p://www.emilianosoldipmp.info/wp-content/uploads/2012/08/Stacey.png
Thats the problem we need to solve! And these are the methods we
are using!!!
But we want software to be
What is the most important part in these machines? The
Brakes!!! They let you go faster
Agility vs. Discipline?
h-p://www.ibm.com/developerworks/ra=onal/library/edge/08/feb08/lines_barnes_holmes_ambler/
Incremental Development Incremental development is a scheduling
and staging strategy in which the various parts of the system are
developed at different times or rates, and integrated as they are
completed. It does not imply, require nor preclude iterative
development or waterfall development - both of those are rework
strategies. The alternative to incremental development is to
develop the entire system with a "big bang" integration
Iterative Development Iterative development is a rework
scheduling strategy in which time is set aside to revise and
improve parts of the system. It does not presuppose incremental
development, but works very well with it. A typical difference is
that the output from an increment is not necessarily subject to
further refinement, and its' testing or user feedback is not used
as input for revising the plans or specifications of the successive
increments. On the contrary, the output from an iteration is
examined for modification, and especially for revising the targets
of the successive iterations.
Incremental vs. Iterative
h-p://www.infoq.com/resource/news/2008/01/itera=ng-and-incremen=ng/en/resources/
Pa-on_Incremental_Itera=ve_MnaLisa.jpg
h-p://itsadeliverything.com/wordpress/images//itera=ve-incremental-mona-lisa.png
Incremental and Iterative
Advent of Agile and Lean Methodologies 1970: Royce critiques
Waterfall and offers improvement ideas 1986: Barry Boehm proposes
Spiral Model 1971: Harlan Mills proposes Incremental Development
1987: Cleanroom Software engineering 1991: Sashimi Overlapping
Waterfall Model 1992: Crystal family of methodologies 1994: DSDM
1995: Scrum 1996: Rational Unified Process framework 1997: Feature
Driven Development 1999: Extreme Programming Explained 2001: Agile
Manifesto is born 2003: Lean Software Development 2005: PM
Declaration of Interdependence 2007: Kanban-based software
engineering 2008: Lean Startup 2009: Scrumban 20xx: Something new
!?! (hopefully!)
Agile Principles Our highest priority is to satisfy the
customer through early and continuous delivery of valuable
software. Working software is the primary measure of progress.
Welcome changing requirements, even late in development. Agile
processes harness change for the customer's competitive advantage.
Agile processes promote sustainable development. The sponsors,
developers, and users should be able to maintain a constant pace
indefinitely. Deliver working software frequently, from a couple of
weeks to a couple of months, with a preference to the shorter
timescale. Continuous attention to technical excellence and good
design enhances agility. Business people and developers must work
together daily throughout the project. Simplicity--the art of
maximizing the amount of work not done--is essential. Build
projects around motivated individuals. Give them the environment
and support they need, and trust them to get the job done. The best
architectures, requirements, and designs emerge from self-
organizing teams. The most efficient and effective method of
conveying information to and within a development team is face-to-
face conversation. At regular intervals, the team reflects on how
to become more effective, then tunes and adjusts its behavior
accordingly.
Waterfall vs. Agile
h-p://www.agilenutshell.com/agile_vs_waterfall By doing them
con=nuously: Quality improves because tes=ng starts from day one.
Visibility improves because you are 1/2 way through the project
when you have built 1/2 the features. Risk is reduced because you
are ge[ng feedback early, and Customers are happy because they can
make changes without paying exorbitant costs.
Agile Development Value Proposition
h-p://www.versionone.com/Agile101/Agile_Benets.asp
Role of Management
h-p://www.thoughtworks-studios.com/sites/default/les/assets/agile_leadership.png
Agile ROI
h-p://www.agileload.com/agileload//blog/2012/10/22/agile-performance-tes=ng-process---whitepaper
Feedback Loops
agile lifecycle big picture
feedback loop in agile lifecycles
test-code-refactor loop
from daily builds to the project
Scrum
Recap... Economies of software development continue to evolve
& impact s/w development Waterfall was (perhaps) the best we
had back then, even if it was bad! Agile reflects contemprary
thinking in process, people and tools Fundamental tenet is
continuous feedback and improvement Agile thinking is more
important than specific methods and mechanics Focus on getting the
right talent and let them self-organize