What Is Agile?
A Brief History of Agile
There have been many attempts to try and improve software development practices over the years, and many of these have looked at working in a more iterative way. These new practices didn't go far enough when trying to deal with changing requirements of customers. In the 1990s, a group of industry software thought leaders met at a ski resort in Utah to try and define a better way of developing software. The term "Agile software development" emerged from this gathering. The term was first used in this manner and published in the now-famous Agile Manifesto. The Agile Manifesto was designed to promote the ideas of delivering regular business value to your customers through the work of a collaborative, cross-functional team.
Agile Methodology Overview
Which Agile project methodologies are commonly in use today? First, we'll take a look at Scrum. Scrum is a lightweight project management framework that is based around an iterative working model. Ken Schwaber, Mike Beedle, and Jeff Sutherland, among others, contributed significantly to the evolution of Scrum over the last decade and a half. Over the last few years in particular, Scrum has earned increasing popularity in the software community due to its simplicity, proven success, improved productivity, and its ability to act as a wrapper for various engineering practices promoted by other Agile methodologies. Next we have Extreme Programming, or XP. Extreme Programming was originally devised by Kent Beck, and has emerged as one of the more popular and controversial Agile methods. XP is a disciplined approach at delivering high quality software quickly and continuously. It promotes high customer involvement, rapid feedback loops, continuous testing, continuous planning, and close teamwork to deliver working software at very frequent intervals, typically one-to-three weeks. Where as Scrum is a project management framework, XP is more of an engineering discipline. It is very common for teams to adopt Scrum, yet borrow different engineering practices from XP. The original XP recipe is based on four simple values:
Simplicity
Communication
Feedback
Courage
There are 12 supporting practices:
Planning game
Small releases
Customer acceptance tests
Simple design
Pair programming
Test-driven development
Refactoring
Continuous integration
Collective code ownership
Coding standards
Metaphors
Sustainable pace
Roles Within an Agile Team Agile teams,
while part of a department or company, are primarily focused on their software development goals. Each team should also be focused on their team’s overall vision. This means a team should be very reactive in doing whatever is required to get the job done. Team members may have to do work that is outside their normal skill set, and this should be embraced and encouraged. A cross-functional and adaptive team is much more likely to succeed. Most teams will, of course, have some standard areas of expertise and specialties, and you may also have people with specific domain or product knowledge, but generally, there should be flexibility in team players’ expected roles and responsibilities. It should also be common for team members to have access to the business as a whole—and this shouldn't just be limited to a select few. You should have people who are tasked with making sure the team follows the development process, and someone who co-ordinates requirements gathering with the business; this would typically be referred to as the product owner if you are working within the Scrum framework. Teams will normally have some form of leadership role within the team. In Scrum, this person is the Scrum Master. On Agile teams, the role of this person is to enable and ensure the success of the team. This type of leader is normally referred to as a servant leader. This role is quite different to the direct transactional leader on a Waterfall project. One goal of an Agile team should be to improve every day. The larger the organization, the more complex team structures can get. Cross-project teams, shared services, operations, configuration management, and database administration can all come into play, but the goal remains the same: define a software project and cross-functional team capable of delivering on that project, and empower the team to do so.
There have been many attempts to try and improve software development practices over the years, and many of these have looked at working in a more iterative way. These new practices didn't go far enough when trying to deal with changing requirements of customers. In the 1990s, a group of industry software thought leaders met at a ski resort in Utah to try and define a better way of developing software. The term "Agile software development" emerged from this gathering. The term was first used in this manner and published in the now-famous Agile Manifesto. The Agile Manifesto was designed to promote the ideas of delivering regular business value to your customers through the work of a collaborative, cross-functional team.
Agile Methodology Overview
Which Agile project methodologies are commonly in use today? First, we'll take a look at Scrum. Scrum is a lightweight project management framework that is based around an iterative working model. Ken Schwaber, Mike Beedle, and Jeff Sutherland, among others, contributed significantly to the evolution of Scrum over the last decade and a half. Over the last few years in particular, Scrum has earned increasing popularity in the software community due to its simplicity, proven success, improved productivity, and its ability to act as a wrapper for various engineering practices promoted by other Agile methodologies. Next we have Extreme Programming, or XP. Extreme Programming was originally devised by Kent Beck, and has emerged as one of the more popular and controversial Agile methods. XP is a disciplined approach at delivering high quality software quickly and continuously. It promotes high customer involvement, rapid feedback loops, continuous testing, continuous planning, and close teamwork to deliver working software at very frequent intervals, typically one-to-three weeks. Where as Scrum is a project management framework, XP is more of an engineering discipline. It is very common for teams to adopt Scrum, yet borrow different engineering practices from XP. The original XP recipe is based on four simple values:
Simplicity
Communication
Feedback
Courage
There are 12 supporting practices:
Planning game
Small releases
Customer acceptance tests
Simple design
Pair programming
Test-driven development
Refactoring
Continuous integration
Collective code ownership
Coding standards
Metaphors
Sustainable pace
Roles Within an Agile Team Agile teams,
while part of a department or company, are primarily focused on their software development goals. Each team should also be focused on their team’s overall vision. This means a team should be very reactive in doing whatever is required to get the job done. Team members may have to do work that is outside their normal skill set, and this should be embraced and encouraged. A cross-functional and adaptive team is much more likely to succeed. Most teams will, of course, have some standard areas of expertise and specialties, and you may also have people with specific domain or product knowledge, but generally, there should be flexibility in team players’ expected roles and responsibilities. It should also be common for team members to have access to the business as a whole—and this shouldn't just be limited to a select few. You should have people who are tasked with making sure the team follows the development process, and someone who co-ordinates requirements gathering with the business; this would typically be referred to as the product owner if you are working within the Scrum framework. Teams will normally have some form of leadership role within the team. In Scrum, this person is the Scrum Master. On Agile teams, the role of this person is to enable and ensure the success of the team. This type of leader is normally referred to as a servant leader. This role is quite different to the direct transactional leader on a Waterfall project. One goal of an Agile team should be to improve every day. The larger the organization, the more complex team structures can get. Cross-project teams, shared services, operations, configuration management, and database administration can all come into play, but the goal remains the same: define a software project and cross-functional team capable of delivering on that project, and empower the team to do so.
Comments
Post a Comment