Header Image

Header Image

Friday, 20 December 2013

What's Agile?

We all have our definition of the word "agile". We might as well say agile as a cat! But what does this mean in the world of information technologies? Here's my answer to this question.

First of all, if you think Agile is new, you're mistaken! The Agile manifest was signed back in 2001 by a group of IT professionals who are known worldwide. Herewith from the Agile Manifest on Wikipedia:

"In February 2001, 17 software developers [...] met at the Snowbird, Utah resort, to discuss lightweight development methods. They published the Manifesto for Agile Software Development to define the approach now known as agile software development. Some of the manifesto's authors formed the Agile Alliance, a non-profit organization that promotes software development according to the manifesto's values and principles."

The professionals who reunited are the following:

Kent Beck
Mike Beedle
Arie van Bennekom
Alistair Cockburn
Ward Cunningham
Martin Fowler
James Grenning
Jim Highsmith
Andrew Hunt
Ron Jefferies
Jon Kern
Brian Marick
Robert C. Martin
Steve Mellor
Ken Schwaber
Jeff Sutherland
Dave Thomas

The most well-known among them were Ward Cunningham, inventor of the Wiki via WikiWikiWeb, Kent Beck, father of the extreme programming and co-founder of JUnit, Ken Schwaber and Jeff Sutherland, founders of Scrum, Jim Highsmith, extolling ASD, Alistair Cockburn for the Crystal Clear method, Martin Fowler and Dave Thomas as well as Arie van Bennekom for DSDM (Dynamic System Development Method), and Robert C. Martin (aka Uncle Bob), father of Clean Code.

From these software development professionals are born the following agile values:
  • Individuals and interactions over Processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over Contract negotiation
  • Responding to change over Following a plan

Individuals and interactions

"In agile development, self-organization and motivation are important, as are interactions like co-location and pair programming."

This doesn't mean that Agile throws away any processes and/or tools you might be using, this simply means that Agile encourages and emphasizes on the team members interactions and self-organization. Trust your team!

Working software

"Working software will be more useful and welcome than just presenting documents to clients in meetings."

Though documentation is an important matter, even in Agile Software Development, Agile doesn't focus only on the documentation and tends to shorten the docs a bit and prefer to deliver working piece of software instead of just sentences on a piece of paper.

Customer collaboration

"requirements cannot be fully collected at the beginning of the software development cycle, therefore continuous customer or stakeholder involvement is very important."

As for sure, as you the customer, and as us, IT Services Companies, we want some sort of warranty where everyone wins. Hence contracts are important for businesses to write. Aside, there is a need for trust between those two because software development is pretty much of a complex task. And in order to get exactly what has the most business value for the customer, the development team needs to have regular feedback from the stakeholder(s) so that the development process may evolve and the software be delivered in no time. This discourages the way many software companies still work today, that is, letting the development go for weeks and months before the customer even sees the product, and might finally bring breaking changes because of the lack of communication between the two.

Responding to change

"agile development is focused on quick responses to change and continuous development."

The customer's needs can change along the way, or requirements might have been initially misunderstood by the development team, and even the thoughts about the product might change! Hence the quick response to change. For this to happen, in addition to customer collaboration, we need to provide regular feedback to the customer so that when a change requirement occurs, the development may adapt the product according to these changes as soon as it is known, for the sake of the project and the stakeholders.

In the end, Agile is all about delivering functional high quality software that meets the exact customer requirements at the time the product is final, by reducing and controlling risks taken over along the project by both the customer and the software company and to make sure that the delivered software meets the customer satisfaction and that it has business value to allow the best return on investment.



No comments:

Post a Comment