Agile methodology is a set of tools, skills, and knowledge that is considered (collectively) as an alternative method to conventional product management and development. It is often used in software development wherein teams act and decide in response to unpredictability through iterative work sprints.
The Origin of Agile
The 1970 publication by Dr. Winston Royce entitled "Managing the Development of Large Software Systems" criticized the sequential process involved in product development.
Dr. Royce emphasized that software should not be developed like a product on an assembly line where each component is added in sequential phases, and where each phase must be completed before starting the next phase – the so-called “waterfall” approach. He opposed this phase-based approach wherein developers first gather all of the requirements, complete all of the architecture and design elements, write all the code, do all testing, and so on. Dr. Royce specifically opposed this style of process because of the lack of communication between the specific groups which complete every phase.
In waterfall methodology, teams only have a single chance to get things right. It is also not an optimized method compared to the concept of agile. Waterfall method assumes that each requirement can be identified prior to the design and coding processes. Could you tell your developers all they need to know (requirements and all elements) to include in the software before it is up and running? Or would it be easier to illustrate your idea to the development team if you could give feedback on functional software?
Why Go the Agile Way?
Using agile technology provides opportunities for your team to assess the direction of your project during the development process. This is attained through regular iterations, at the end of which, teams should present the resulting product increment. This method is described as 'incremental' and 'iterative' due to the process of repetitive shortened work cycles and the functional product they produce.
There are different types of agile methods that use the original principle stated in the agile manifesto. The most popular types are the following:
Scrum specifically focuses on how to manage tasks within a team-based development setting. It is the most widely implemented agile method possibly because it is easier for IT development teams to understand and follow. Scrum is not repressive and doesn't demand loads of technical discipline unlike well-defined Agile methods. It lets the development team decide what to do and how to do it; as well as get up to speed and begin doing Agile swiftly and cost-effectively.
Scrum certification helps fulfill the objective of the Agile manifesto by encouraging collaboration, productivity, and accomplishment among team members.
Dynamic Systems Delivery Method (DSDM)
Possibly the original agile method, DSDM was already in existence even before the term 'agile' was used and adapted in software development. DSDM fixes cost, time and quality at the outset and uses prioritization scope into “musts”, “shoulds”, “coulds”, and “won’t haves”.
Extreme Programming (XP)
Extreme Programming or XP is a more thorough type of agile method which focuses on process analysis, development, and test phases through frequent releases in short development cycles intended to improve productivity and introduce checkpoints to accommodate new customer requirements.
Among the three popular types, DSDM is possibly the most comprehensive agile method, while Scrum and XP are a lot easier to implement and complementary since they deal with various aspects of software development projects and both are established on very similar concepts.
In the last decade, many industries have seen the benefits of using agile technology. Media, marketing, technology, large corporations, as well as government sectors have seen a dramatic improvement in their IT development projects and team efforts, which also provides that much-needed competitive edge.
In agile product development, project management is a little different as it relies more on the team leader's skills in coordination, communication, and facilitation with less emphasis on planning and control. However, not all projects go well with this method and it is not always the key to instant success. The key is to understand many techniques from different agile and waterfall methodologies, and pick out the best approaches that will suit a specific situation.
Agile technology, with a combination of your team's skill and experience, can help you have a more flexible approach and less documentation, more collaboration and visibility that allows for a more rewarding team experience and better products as a result.