Agile Changed My Life
Agile Changed My Life
What the Heck is Agile?
Getting Familiar with Agile from Values to Principles
The principles we must universally accept are the recognition of our shared humanity, our shared aspiration to happiness, and the avoidance of suffering. From these principles, we can learn to appreciate the inextricable connections between our own well-being and that of others.
Together, they constitute an adequate basis for establishing ethical awareness and the cultivation of inner values. It is through such values that we gain a sense of connection with others and it is by moving beyond narrow self-interests, that we find meaning, purpose, and satisfaction in life.
-The Dalai Lama, Beyond Religion
Agile in the Software World
Agility is defined as the ability to move quickly and in a coordinated manner. An agile person is mentally acute and aware of self, situation, and environment. This is a fitting title for the software development methodology that bears this name. Being Agile is being efficient and effective; not being Agile is being lethargic and awkward. Speed and efficiency are the fundamentals of successful software development, as they allow companies to gain a competitive edge over their competitors. To keep up with rapid change in the technology world, companies establish procedures that can be repeated consistently.
In the past, all software development was approached sequentially with a set of procedures called "waterfall." Large chunks of time were dedicated to defining the solution and capturing the intricacies of each requirement. Development, testing, and deployment were phased approaches. Each stage depended on the completion of its predecessor before it could start. All work was performed according to a strict set of requirements that were gathered, defined, and elaborated over several consecutive months.
For decades, this approach provided an effective way to build systems by first writing a full set of upfront specifications, but it was not so effective in providing incremental value. Nobody got a chance to see or benefit from any working pieces early on in the process. Change is inevitable. However, change is disruptive to the waterfall process; therefore, it was usually discouraged and unwelcome. A modification to scope would have to be traced and managed to avoid causing rework and confusion for those downstream.
The waterfall approach required more people, more time and was slower to deliver its return on investment. Although Agile-based methods are growing rapidly, waterfall still exist at many companies today. Part of the maturation of Agile teams is being able to coexist with other methods seamlessly.
Waterfall Methodology : the predecessor to Agile, waterfall breaks a project into stages:
In a Waterfall process, each step must be completed before moving on to the next, and all steps in the process must be completed before any value is delivered to the customer. The name "waterfall" is comes from development process that literally flows from one stage to the next.
Agile Methodology : "Agile" is the umbrella term for iterative, incremental software development methodologies, including:
Extreme Programming (XP)
Dynamic Systems Development Method (DSDM)
Feature-Driven Development (FDD)
Agile methodologies arose in opposition to the traditional waterfall methodology. For the purposes of this book, we will focus on Scrum, which is the most widely used today. Agile emphasizes small teams delivering small increments of working software, with great frequency, while working in close collabo