“What is agile development?” It’s always been surprisingly hard to get a simple answer to this question. There are esoteric and convoluted descriptions of agile all over the web, complete with concentric circles meant to sum it all up into a simple concept, and yet that simple answer eludes us. To be fair, agile development methodology isn’t a simple thing.
http://www.SourceSeek.com – Connect WIth Top Offshore Software Teams
We’ll start with wikipedia’s agile methodology definition:
From Wikipedia: Agile software development is a group of software development methods based on iterative and incremental development, where requirements and solutions evolve through collaboration between self-organizing, cross-functional teams. It promotes adaptive planning, evolutionary development and delivery, a time-boxed iterative approach, and encourages rapid and flexible response to change. It is a conceptual framework that promotes foreseen interactions throughout the development cycle.
The first sentence starts by saying that agile development is a software development methodology. A software development methodology is a set of practices and procedures that help a team get organized and build software. It’s not the software itself, it’s the rule-book for organizing the team.
That first sentence goes on to describe an iterative and incremental development approach. This is a key concept, and if you only take away one thing about agile this is the one to take away.
In agile, we do iterations (circles) where we plan, execute, then review the results so that we can refine the plan and start all over again. We love change, and we want as many iterations and feedback loops as possible during the project.
At the end of that first sentence, wikipedia describes collaboration: This really just means that we emphasize partnership and collaboration, with each member of the team serving a specific role but everyone expected to be flexible and to work together. In agile, we love teamwork.
The second sentence brings in the concepts of adaptive planning, evolutionary development and delivery, a time-boxed iterative approach, and rapid and flexible response to change. In this part of the definition, we see how it all comes together! I interpret this sentence like this:
● We are adaptive. We don’t plan it all at the beginning and then stop planning. We do iterations and we are adjusting the plan all the time. This is why agile is so good for product development, we change and improve as we learn.
● We love evolutionary development. This is essentially the same thing, we learn as we go and we adjust, refine, improve…
● Time-boxing. This basically means that we manage our project using set blocks of time, like days or weeks, and we try to get as much done in those time-boxes as possible. This is the reverse of managing features. We consider what features we can build next week rather than looking at a list of features and asking how long it will take to build them.
● Rapid and flexible response to change: this is critical, and along with ‘iterations’ is the core answer to the question ‘what is agile development?’. We move fast, we are flexible, and we are truly ‘agile’! This is our mantra – fast and flexible – say it again and again!!
What is agile development?
● Agile is a way of managing software projects.
● Agile is iterative, and goes in repeated cycles instead of in a long list of steps..
● Agile is super collaborative and team-oriented.
● Agile is adaptive, constantly changing and refining plans, and moves fast!
In almost every project, the client has a harder time expressing what they want at the beginning, and it gets gradually clearer towards the end. The can be a frustrating experience as mid-project changes are pretty disruptive. Let’s try it in agile.
1) Client hires developers by the hour, day, or week.
2) Client describes what they want to the developers
3) Developers start making designs and programming the theme based on what they client thinks they want.
4) Developers show their progress to the client constantly, even every day, to make sure they are on track.
5) The client makes frequent changes and tweaks, always refining the plan and improving the result. The developer also has input and suggestions.
6) The team keeps going until the project is done..
It all sounds very good, and it can be, but the reality is that the agile development methodology requires a solid team of smart people who know what they are doing or it can be a train wreck. It also requires that the entire team (client included) be committed to an honest, forthcoming approach that emphasizes success for the client.
SourceSeek is free for clients; we find you the best teams and the perfect match. It’s that simple.
SUBSCRIBE NOW FOR MORE OUTSOURCING VIDEO TIPS AND NEWS!
The original video is available here.