What is Agile Development (Part 1): What is Agile Development? HD
“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. Sourceseek is a free service that handpicks software developers for your exact project needs. Get started here: https://www.sourceseek.com/get-started/ 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 rath