In the previous article we were talking about agile development teams, roles in such team, told about management, but we found ourselves thinking, that we forgot to tell you about the agile approach to development as a whole! And we hurry to fix that!
Agile development is one of the hottest trends in software development and it has been like this for years. Countless web resources, blogs and forums exist with a single purpose of explaining Agile to others. Yet, we still have questions. How so?
The primary reason that stands between us and a complete understanding of what agile development stands for is a simple fact: the term is too broad. It has many iterations and even more software development methodologies that include, but are not limited to Extreme Programming, SCRUM, Lean Development, Feature-Driven development and so on and so forth.
However, all of the abovementioned methodologies share a lot of common ground, that ground being the basic principles of agile software development. Hence, this is where we will start our journey towards an understanding what Agile software development really is.
While the fact that every agile methodology has its own unique approach is true it is also true that all of them share the same vision – they all follow the core principles of the Agile Manifesto.
The vision lies in developing a clear, continuous feedback-based process that puts delivery of a working product at the top corner. “Continuous” seems to be the magic word as every element from testing and to planning or integration is continuous. But why?
Because continuous everything allows for a team to deliver 100% working software by the end of the first sprint and the only thing left is for the developers to continuously add more value to the product in the form of new features, fixes, patches and whatnot. This also allows for everyone to be on the same page and for the decision makers to adjust their strategies to the feedback received from a working prototype, not a plan on paper.
Now, that the vision is covered, it is time for us to dive heads deep into actual agile software development methodologies in order to understand them better.
Kanban or lean software development, while originally designed and shaped by Tom and Mary Poppendieck owes a lot to the industrial revolution Toyota has brought into the automotive industry. Continuous delivery of value to the stakeholders and product owners, as well as a unique take on waste, are what separates lean software development from similar agile methodologies.
Waste elimination, early delivery and late decision-making are the core principles of Kanban. Waste elimination is done through a unique selection process through which only the most vital features are included into requirements and developed by the team. Delivery is paired with decision-making and is designed for you to plan activities based on the full picture you have before your eyes rather than planning ahead with little data at hand.
That being said, Kanban can be narrowed to as little as three core principles:
Scrum is another interesting agile project management methodology that is based around pro-active control over development processes.
SCRUM emphasizes a strong bond between everyone involved in the project from the product owner to the SCRUM master and the developers. The methodology has established roles in which the team lead serves as the bridge between the stakeholders and the team and is responsible for planning in the project with the focus on “whatever needs to be done” in order to deliver the required by the end of a sprint.
Sprints, or miniaturized software development lifecycles are a steady unit of measuring progress and they usually take the time between one week and one month. That noted, once a sprint is concluded and the result is seen, no re-work can be done or no changes are allowed to be made in the project. If a product requires additional functionality, the requirements will be documented and the technology will be delivered later on as part of a separate sprint.
Extreme Programming is also known as XP is one of the “coolest” agile development methodologies. It is loved by the developers, yet considered controversial among business owners because of its seeming simplicity and unorthodox development processes like pair programming.
XP values quick and continuous delivery of qualitative software and promotes even deeper levels of involvement than SCRUM as most of its practices use continuous feedback as a pivotal element of the continuous planning process.
XP is based on processes in which the “customer” works with and is in charge of the developer thus putting the needs of the end-user at the head of the table. The team describes those needs as “User stories” and the developer’s job is to make them as simple and intuitive as possible.
Designed by Jeff De Luca FDD was also heavily emphasized by the brilliance of such industry leaders as Lim Bak Wee, Paul Szego, M.A. Rajashima and Jon Kern. FDD is a model that relies heavily on short iterations that usually don’t take longer than two weeks. The two-week sprints have the development of a single feature as their focus. The product is considered as a cluster of features and is developed as a puzzle one element at a time.
The world of agile development is rich and diverse and we haven’t described every software development methodology out there. That, however, was never the point. As you may have noticed from the examples above. Agile may differ in the shape of delivery but the form of the process is always the same. This has to take the controversy out of the question. Now you can freely choose whichever practice fits your project best.