In February 2001, seventeen software development thought leaders met to find common ground in a ski resort in Utah. There was a realization that an alternative to the documentation driven, heavyweight software development processes that dominated the industry was required. What emerged was the Agile Software Development Manifesto.
The 4 core values of Agile
The core values of the Agile Manifesto agreed upon by the agile alliance are…
1) We value individuals and interactions over processes and tools
2) We value working software (or any product) over comprehensive documentation
3) We value customer collaboration over contract negotiation
4) We value responding to change over following a plan
In order to succeed in the new economy, companies need to rid themselves of slow and bureaucratic processes. Agile is a time boxed, iterative approach to software development that builds software incrementally, instead of delivering it all at once near the end of a project. Agile development helps teams to cut waste, shorten development cycles and increase customer value.
Benefits of Agile
Transitioning to agile is often not easy. However, the benefits of doing so outweigh the cost in the long term. Organizations that have made the switch to agile report the following benefits
1) Higher productivity
2) Higher quality
3) Reduced time-to-market
4) Improved stakeholder satisfaction
5) Increased job satisfaction
6) More engaged staff
Because of its emphasis on communication and collaboration, teams are strengthened and can work more effectively when managing deadlines. Constantly evolving projects allow team members to quickly adapt tasks to meet the varying demands of customers and the business. Delivery of initial business value is accelerated and the incremental value becomes baked in to the project as it progresses.
A strong leader is required to ensure proper delegation to appropriate members of the team. Each team member should deal with tasks and issues which reflect their abilities and skills. This means less stress for other members and better project completion levels. Ultimately in a client driven context; customer satisfaction increases. From a commercial perspective delivering high quality products faster can lead to higher revenue and profits.
Is Agile just for software development?
While the term “Agile” originated from software development, it has in more recent years been broadened to refer to a methodology to deliver any product, not just software. The philosophy around collaborative work in iterative environments where teams continuously inspect and refine is suitable for many types of product delivery.
The ability to inspect and adapt, reflect and refine, and efficiently and effectively manage the changes that inevitably occur is what makes agile stand above other forms of product development methodology.
Key roles in an Agile team
Product Owners; The Product Owner determines what needs to be built in the next 30 days or less often called a sprint.
Development Teams build what is defined in the current sprint. Then the team demonstrate what they have built. Based on the demo, the Product Owner determines what to build in the next sprint.
Scrum Masters; The Scrum Master role is similar to that of a project manager but the position is more product and people focused than a traditional waterfall PM. The Scrum Master must ensure the development process runs as smoothly as possible- removing impediments, continually optimising the process, engaging with the team and the product being created.
Scrum is a popular agile methodology whereby there can be three primary roles, which demonstrate the collaborative and team-based nature of the agile approach:
Characteristics of a successful Agile project
Imperative when choosing to develop using an agile approach in your company is communication. Letting the people in your team clearly know throughout the project what needs to be done and for when – underpins the agile process.
1) Sprints are 4-12 weeks long depending on the project
2) Face-to-face communication is prioritised over product documentation
3) Teams are co-located in the same building
4) The end product is clearly envisioned
5) Tasks have specific deadlines
6) Everybody knows what they should be doing
Agile methodologies
There are different process frameworks within agile. Each agile method is focused on different aspects of the software development life cycle. Some focus on the development practices (eg XP), others focus on managing the software projects (eg Scrum). Some approaches provide full coverage over the development life cycle (e.g. DSDM, RUP).
Popular agile software development methods or process frameworks
Adaptive Software Development (ASD)
Agile Modeling
Agile Unified Process (AUP)
Business Analyst Designer Method (BADM)
Crystal Clear Methods
Disciplined agile delivery
Dynamic Systems Development Method (DSDM)
Extreme Programming (XP)
Feature-Driven Development (FDD)
Lean Software Development
Kanban
Scrum
Scrumban