N/A
The benefits of Agile software development includes:
Which companies use agile development?
Participants will be able to:
“Agile is the ability to both create and respond to change in order to succeed in an uncertain and turbulent business environment.” - Jim Highsmith - co-author of the Agile Manifesto
More specifically, Agile is a set of values and principles, which describe a culture in which change is welcome (and even seen as a competitive advantage), and the customer is the focus of the work.
Agile advocates adaptive planning, iterative and incremental development, close collaboration with the customer, and cross-functional teams to build working software.
Agile values and principles, as outlined in the Agile Manifesto, underpin a lot of software development methods and practices, such as Scrum or Extreme Programming (XP).
Each agile methods has a slightly different approach for implementing the core values from the Agile Manifesto, just as many computer languages manifest the core features of object-oriented programming in different ways.
Agile and Waterfall are very different software development methodologies and are good in their respective way.
However, there are certain major differences highlighted below -
Note: This comparison doesn’t imply that one is good and the other is bad –> both are “tools” and there is no such thing as a bad tool, just an inappropriate use of that tool.
The idea behind plan-driven is that the better the planning and the better you understand the plan, the better the execution of the plan and the outcome.
Plan-driven development is often called sequential or waterfall -> because tasks are performed in a sequence. E.g. you first write the requirements, you complete the design, you implement the design, then you do the testing and ship the product.
What kind of projects/tasks are well suited for a sequential development?
Stacey-diagram
Categories
The Stacey complexity graph divides tasks into four different categories.
Sources / further reading:
Describe step-by-step what needs to be done to prepare a cup of tea. (Baking a cake by following a recipe is another example to use). This should illustrate a defined process. Plot “making a cup of tea” on the Stacey graph.
Taking a shower in a new hotel room is quite different from that. E.g. you have to figure out the dials, you have to experiment to find the right temperature. This illustrates an empirical process “apply, inspect & adapt” Plot “taking a shower” on the Stacey graph.
Think about where software development projects sit on this graph? And why …?
But, real projects rarely follow the sequential flow that the model proposes.
At the beginning of most projects, there is often a great deal of uncertainty about requirements and goals (see agreement axis in the Stacey graph).
Adaptive planning Agile follows a “just in time” approach to planning. We still plan, but instead of planning everything up front, we do it iteratively. This gives us lots of points to inspect where we are and adjust, which means we are flexible to respond to changes!
Iterative and incremental development Iterative development means starting with something really simple (that provides value!) and adding to it incrementally over time.
Close collaboration Agile development relies on close cooperation and collaboration between all team members and the customer.
Working software A software development team’s focus is on producing working products. On projects using agile management methods, the only way to measure whether you are truly done with a product requirement is to produce the working product feature associated with that requirement. For software products, working software means the software meets what’s called the definition of done: at the very least, developed, tested, integrated, and documented.
Cross functional teams Roles really blur on Agile projects. When done right, joining an Agile team is a lot like working in a mini-startup. People pitch in and do whatever it takes to make the project successful—regardless of title or role.
Agile principles: http://agilemanifesto.org/principles.html
The Agile Manifesto is a formal proclamation of four key values and 12 principles to guide an iterative and people-centric approach to software development.
The four core values of agile software development as stated by the Agile Manifesto emphasize:
“That is, while there is value in the items on the right, we value the items on the left more.”
Process:
Technical:
These are just a few examples, there is so much more. Explore Subway Map to Agile practices: https://www.agilealliance.org/agile101/subway-map-to-agile-practices/
Minimum Viable Product (MVP) is a concept from Lean Startup by Eric Reis, defined as an MVP as “the version of a new product which allows a team to collect the maximum amount of validated learning about customers with the least effort.”source
Simply put, an initial version of a product with the minimum core features that will satisfy initial users.
Some benefits of MVP are:
Further reading: Minimum Viable Product by Agile Alliance
If you have time play the XP game to illustrate the following concepts:
All material and an outline of the game can be found and downloaded here: http://www.agilebelgium.be/xpgame/
Incorporate the following in personal study: